Thread overview
More on GPU's: RapidMind
Jul 13, 2007
Craig Black
Jul 13, 2007
Bill Baxter
Jul 13, 2007
Craig Black
Jul 13, 2007
Bill Baxter
July 13, 2007
Has anyone looked at The RapidMind Development Platform?  They have created a C++ library that allows programmers to write C++ code that runs on a GPU. It's also being extended to take advantage of multi-cores as well.  I've been browsing the docs.  It seems about as clean as it gets for a C++ library that provides such an exotic capability.  They seem to keep everything very high level, and they have different backends.  Currently they support IBM's Cell processor and GLSL.  To me, this is an ideal kind of design for something like this.  Kudos to them.

As nice as this library seems, I'm sure a D implementation could be much better.  Anyway, I really think that this is a very, very important arena to pursue for D.

-Craig 

July 13, 2007
Craig Black wrote:
> Has anyone looked at The RapidMind Development Platform?  They have created a C++ library that allows programmers to write C++ code that runs on a GPU. It's also being extended to take advantage of multi-cores as well.  I've been browsing the docs.  It seems about as clean as it gets for a C++ library that provides such an exotic capability.  They seem to keep everything very high level, and they have different backends.  Currently they support IBM's Cell processor and GLSL.  To me, this is an ideal kind of design for something like this.  Kudos to them.
> 
> As nice as this library seems, I'm sure a D implementation could be much better.  Anyway, I really think that this is a very, very important arena to pursue for D.
> 

Like I said in another thread, RapidMind is an extension/evolution of the open software research project called Sh.  That would be a good place to look for more implementation details if the RapidMind source code is not easy to obtain.  Sh is really meant for writing nifty looking visual shaders, but the basic idea is the same -- take an algorithmic description in C++, metaprogram it to death, and out pops on-the-fly generated GPU shader programs on the other end.

With RapidMind they've apparently generalized it to work for other back ends, but I would bet the core ideas used in both are the same.

And in any event, even if RapidMind in D is too big a project, something like Sh in D would still be a nice demo of D's power.  If it doesn't come to a grinding halt because of symbol length limitations in OPTLINK.  :-)

--bb
July 13, 2007
> Like I said in another thread, RapidMind is an extension/evolution of the open software research project called Sh.  That would be a good place to look for more implementation details if the RapidMind source code is not easy to obtain.  Sh is really meant for writing nifty looking visual shaders, but the basic idea is the same -- take an algorithmic description in C++, metaprogram it to death, and out pops on-the-fly generated GPU shader programs on the other end.
>
> With RapidMind they've apparently generalized it to work for other back ends, but I would bet the core ideas used in both are the same.
>
> And in any event, even if RapidMind in D is too big a project, something like Sh in D would still be a nice demo of D's power.  If it doesn't come to a grinding halt because of symbol length limitations in OPTLINK. :-)
>
> --bb

I'm not so sure that they even use C++ metaprogramming features.  I'm not exactly sure but I suspect that they use macros to turn the shader code into a text string, which they parse and compile to a real shading language. That way they can define the language however they want.  I think the trick is that they make their syntax look like C++ syntax so that it seems to fit together properly.

-Craig


July 13, 2007
Craig Black wrote:
>> Like I said in another thread, RapidMind is an extension/evolution of the open software research project called Sh.  That would be a good place to look for more implementation details if the RapidMind source code is not easy to obtain.  Sh is really meant for writing nifty looking visual shaders, but the basic idea is the same -- take an algorithmic description in C++, metaprogram it to death, and out pops on-the-fly generated GPU shader programs on the other end.
>>
>> With RapidMind they've apparently generalized it to work for other back ends, but I would bet the core ideas used in both are the same.
>>
>> And in any event, even if RapidMind in D is too big a project, something like Sh in D would still be a nice demo of D's power.  If it doesn't come to a grinding halt because of symbol length limitations in OPTLINK. :-)
>>
>> --bb
> 
> I'm not so sure that they even use C++ metaprogramming features.  I'm not exactly sure but I suspect that they use macros to turn the shader code into a text string, which they parse and compile to a real shading language. That way they can define the language however they want.  I think the trick is that they make their syntax look like C++ syntax so that it seems to fit together properly.
> 

They may have changed that in RapidMind then.  With Sh, part of the sales pitch was that the code you write *is* real C++.  No external tools required.  Just a library to link with.

--bb