Accéder au contenu.
Menu Sympa

starpu-devel - Re: [Starpu-devel] Data interfaces in StarPU

Objet : Developers list for StarPU

Archives de la liste

Re: [Starpu-devel] Data interfaces in StarPU


Chronologique Discussions 
  • From: Albert Sidelnik <sidelnik@gmail.com>
  • To: Cyril Roelandt <cyril.roelandt@inria.fr>
  • Cc: starpu-devel <starpu-devel@lists.gforge.inria.fr>
  • Subject: Re: [Starpu-devel] Data interfaces in StarPU
  • Date: Tue, 28 Aug 2012 09:10:20 -0500
  • 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>

Hi Cyril,

I was under the impression that the copy/allocate registered routines (e.g. copy_ram_to_ram, allocate_variable_buffer_on_node) would also be invoked even for CPU->CPU tasks. If not, where/how does that occur?

What I meant by passing pointers around is the situation where I would like a codelet to propagate (or forward) data through a chain of codelets without having to allocate and copy the data when each codelet starts. Instead I would like to just pass on an address to the original data among the chain of codelets. I hope that makes sense, and if not, I can give you a better example what I am trying to do.

thanks!

On Tue, Aug 28, 2012 at 6:22 AM, Cyril Roelandt <cyril.roelandt@inria.fr> wrote:
Hello !


On 08/28/2012 06:48 AM, Albert Sidelnik wrote:
I was hoping that somebody could explain how/where the routines that are
part of the data interface system work. I am implementing my own interface
that is based on the "variable interface" but instead of allocating new
data or copying data, I only pass pointers around (somewhat similar to the
cl_arg argument). Maybe I am missing something, but the allocate and copy
routines never seem to be invoked. If what I am  trying to do is impossible
or makes no sense, are there any better alternative options of using the
data management system but without having to allocate data internally?


I am not sure that diving into the internals of StarPU will really help you figure out what's going on in your interface.

In order to trigger a a call to your copy function, you could do something like this:

1) Register a piece of data on a CPU using your interface
2) Submit a task that must be executed on an OpenCL device (or a CUDA device, but not a CPU)
3) StarPU will then try to copy the piece of data you registered to the OpenCL device, and will do this by calling the "copy_ram_to_opencl_async" function of your interface.

What do you mean by "pass pointers around" ? If you modify the piece of data you registered on the CPU, the OpenCL/CUDA pointer is no longer pointing to a valid piece of data, so you probably have to make a copy.

Maybe showing us some code could help :)


WBR,
Cyril Roelandt.




Archives gérées par MHonArc 2.6.19+.

Haut de le page