[PD-dev] canvas class polymorphism
Hans-Christoph Steiner
hans at at.or.at
Wed Mar 23 22:40:38 CET 2011
I think its going to be quite difficult to have a single object
running in the CUDA/GPU while the rest of the patch runs on the CPU in
regular Pd. My guess is that the best first step would be to
implement a basic Pd in CUDA, then work from there about integrating
it. Perhaps then you could use the [pd~] model.
For examples of reimplmentations of Pd, check out ZenGarden (C++) and
Webpd (Javascript) http://mccormick.cx/projects/WebPd/
.hc
On Mar 23, 2011, at 5:20 PM, Charles Henry wrote:
> Hi, hc
>
> Let me explain a little further here. The end goal is to have an
> external library that allows one to create externals that use memory
> on GPUs. Big idea here is that once you've got a system for
> handling the memory allocation and dsp sorting in *exactly* the same
> way as Pd, then you can write externals for CUDA or CL in a way
> that's consistent with existing externals.
>
> With Pd handling the signal memory allocation inside of d_ugen.c and
> called from canvas_dodsp, I wanted for my external library to have
> its own canvas class and different methods for handling the memory
> allocation differently. In fact, I think of that as being the key
> class to create the library.
>
> I worked through it for a while, and I think it's just plain
> impossible to have another canvas class in an external library,
> unless there's something good I don't understand. And I really want
> to understand :)
>
> So, since then, I've been thinking that I'd have to modify the pd-
> vanilla source code. I've got something that loads a CUDA device
> and gets me to run code during canvas_new, canvas_free, and
> canvas_dsp. I'm still trying to organize around the idea of having
> an external library to load and make as few changes directly in the
> vanilla source code.
>
> Chuck
>
> On Wed, Mar 23, 2011 at 1:51 PM, Hans-Christoph Steiner
> <hans at at.or.at> wrote:
>
> What's the end goal here? You want an object that acts like a
> t_canvas/t_glist?
>
> .hc
>
>
> On Mar 13, 2011, at 3:31 PM, Charles Henry wrote:
>
> I've been working through my CUDA Pd project, and I ran into the
> problem of making externals that copy the canvas class.
>
> My first idea was that I wanted a completely separate class with
> different methods using glist. Calls from Pd looking for t_canvas
> work just fine, but functions like pd_findbyclass that look for
> canvas_class fail. I started mucking around in the pd src, and I
> think it's just too difficult and would make onerous changes that I
> don't like.
>
> Is there something I'm not getting about canvas classes and externals?
>
> My second approach to creating an external library is to modify
> glist by adding an "unsigned int gl_hascuda" variable. I'd still
> prefer solutions that make use of entirely external libraries over
> modifying src, but this small change gets me half the way there.
> Then, I just need to write the creator functions and the class works.
>
> Chuck
> _______________________________________________
> Pd-dev mailing list
> Pd-dev at iem.at
> http://lists.puredata.info/listinfo/pd-dev
>
>
>
>
>
> ----------------------------------------------------------------------------
>
> "[T]he greatest purveyor of violence in the world today [is] my own
> government." - Martin Luther King, Jr.
>
>
>
>
----------------------------------------------------------------------------
"A cellphone to me is just an opportunity to be irritated wherever you
are." - Linus Torvalds
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20110323/f480c6e1/attachment-0001.htm>
More information about the Pd-dev
mailing list