GPUs and Array Operations

Saaa empty at needmail.com
Sun Jul 8 00:41:28 PDT 2007


GPGPU isn't generally something you want to compiler to handle. Well, at 
least it should not be enabled by default. The first thing a GPU needs to 
handle is the graphics and no program should be hogging up GPU resources for 
anything else by default.
I think its more worthwhile to let the compiler take as much advantage as 
possible of all available instruction sets the CPUs have to offer. But then 
again, I don't exactly know in what degree this already applies to the D 
compiler.
Of course everybody is free and encouraged to start a nice project  to 
simplify the implementation of GPGPU in D :)


"Craig Black" <craigblack2 at cox.net> wrote in message 
news:f6p829$1l06$1 at digitalmars.com...
> Lately I've been learning about GPU's, shaders, and general purpose GPU 
> computation. I'm still just getting introduced to it and haven't gotten 
> very deep yet, so there's probably a few of you out there who know a lot 
> more than me about this subject.  It's probably  been discussed before in 
> this news group, but I've been thinking about how important GPU's will be 
> in the coming years.
>
> For those who may not know, GPU performance has been improving at a rate 
> faster than Moore's Law.  Current high-end GPU's have many times more 
> floating point performance than than high-end CPU's.  The latest GPU's 
> from NVidia and AMD/ATI brag a massive 500 and 400 single-precision 
> gigaflops respectively.  Traditionally GPU's were used for graphics only. 
> But recently GPU's have been used for general purpose computation as well. 
> The newer GPU's are including general purpose computation in design 
> considerations.
>
> The problem with GPU programming is that computation is radically 
> different from a conventional CPU.  Because of the way the hardware is 
> designed, there are more restrictions for GPU programs.  For example, 
> there are no function pointers, no virtual methods, and hence no OOP. 
> There is no branching. Because of this conditional statements are highly 
> inefficient and should be avoided.  Because of these constraints, special 
> purpose programming languages are required to program natively on a GPU. 
> These special purpose programming languages are called shading languages, 
> and include Cg, HLSL and GLSL.
>
> GPU computation is performed on data streams in parallel, where operations 
> on each item in the stream is independent.  GPU's work most effectively on 
> large arrays of data.  The proposed "array operations" feature in D has 
> been discussed a lot.  It is even mentioned in the "future directions" 
> page on the D web site.  However, I don't remember the details of the 
> array operations feature.  What are the design goals of the this feature? 
> To leverage multi-cores and SSE?  Are GPU's also a consideration?
>
> There are already C++ libraries available that provide general purpose 
> computation using GPU's without shader programming.  When it comes time to 
> implement array operations in D, I feel that GPU's should be the primary 
> focus.  (However, I'm not saying that multicore CPU's or SSE should be 
> ignored.)  Design goals should be performance, simplicity, and 
> flexibility.
>
> Thoughts?
>
> -Craig 





More information about the Digitalmars-d mailing list