Objet : Developers list for StarPU
Archives de la liste
- From: Samuel Thibault <samuel.thibault@inria.fr>
- To: Новак Александр <sasha-novak@yandex.ru>
- Cc: "starpu-devel@lists.gforge.inria.fr" <starpu-devel@lists.gforge.inria.fr>
- Subject: Re: [Starpu-devel] data access
- Date: Mon, 13 Nov 2017 10:57:18 +0100
- List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel/>
- List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>
- Organization: I am not organized
Hello,
Sorry your mail had troubles going through, we are investigating why the
mailing list seems to have automatically rejected it.
Новак Александр, on sam. 11 nov. 2017 14:43:51 +0300, wrote:
> How i can say StarPU that i take responsibility for data independence?
That would be thanks to starpu_data_set_sequential_consistency_flag(),
to tell StarPU that sequential consistency dependencies shouldn't be
automatically introduced.
> I want send full matrix A B C for each task
But then even with sequential consistency being disabled, StarPU would
make all tasks sequential, because tasks still access C in write mode,
and does not know that tasks are actually accessing distinct parts of C.
The only way would be to just not expose datas to StarPU, and just pass
pointers as cl_args. But I believe that's not what you want and it's
just that there is a misunderstanding, or that the example you show is
not actually what you want to do.
> For example, i have classical matrix multiplication. C=A*B
> I want to do a parallel calculation row matrix C. In example you
> partitioning
> matrix C, and get subdata for each task, but I want send full matrix A B C
> for each task,
> and within each task calculate the necessary offset (see attach).
Well, that boils down to the same thing:
> for(int j = 0; j < N; j++) {
> C[j] = 0;
> for(int k = 0; k < L; k++) {
> C[j] += (A[i * L + k] * B[k * N + j]);
> }
> }
is exactly what CPU_GEMM does: what you call L and N is what
STARPU_MATRIX_GET_LD() returns.
Is it really not possible to express your application through
partitioned data? Don't you know at submit time which portions of the
matrix will be accessed by the task? If you don't, how would you be able
to compute the dependencies for StarPU? If tasks access the matrix in
unpredictable ways, I don't see how one could set the dependencies at
submit time.
At worse, you can work as I said above: not use StarPU's data management
at all. But then you will miss all support for GPU, MPI, Disk, etc.
Samuel
- [Starpu-devel] data access, Новак Александр, 13/11/2017
- Re: [Starpu-devel] data access, Samuel Thibault, 13/11/2017
Archives gérées par MHonArc 2.6.19+.