GPGPUs

Atash nope at nope.nope
Sun Aug 18 11:53:17 PDT 2013


I'm not sure if 'problem space' is the industry standard term (in 
fact I doubt it), but it's certainly a term I've used over the 
years by taking a leaf out of math books and whatever my 
professors had touted. :-D I wish I knew what the standard term 
was, but for now I'm latching onto that because it seems to 
describe at a high implementation-agnostic level what's up, and 
in my personal experience most people seem to 'get it' when I use 
the term - it has empirically had an accurate connotation.

That all said, I'd like to know what the actual term is, too. -.-'

On Sunday, 18 August 2013 at 08:21:18 UTC, luminousone wrote:
> I chose the term aggregate, because it is the term used in the 
> description of the foreach syntax.
>
> foreach( value, key ; aggregate )
>
> aggregate being an array or range, it seems to fit as even when 
> the aggregate is an array, as you still implicitly have a range 
> being "0 .. array.length", and will have a key or index 
> position created by the foreach in addition to the value.
>
> A wrapped function could very easily be similar to the intended 
> initial outcome
>
> void example( ref float a[], float b[], float c[] ) {
>
>    foreach( v, k ; a ) {
>       a[k] = b[k] + c[k];
>    }
> }
>
> is functionally the same as
>
> void example( aggregate ref float a[] ; k, float b[], float c[] 
> ) {
>    a[k] = b[k] + c[k];
> }
>
> maybe : would make more sense then ; but I am not sure as to 
> the best way to represent that index value.

Aye, that makes awesome sense, but I'm left wishing that there 
was something in that syntax to support access to local/shared 
memory between work-items. Or, better yet, some way of hinting at 
desired amounts of memory in the various levels of the non-global 
memory hierarchy and a way of accessing those requested 
allocations.

I mean, I haven't *seen* anyone do anything device-wise with more 
hierarchical levels than just global-shared-private, but it's 
always bothered me that in OpenCL we could only specify memory 
allocations on those three levels. What if someone dropped in 
another hierarchical level? Suddenly it'd open another door to 
optimization of code, and there'd be no way for OpenCL to access 
it. Or what if someone scrapped local memory altogether, for 
whatever reason? The industry may never add/remove such memory 
levels, but, still, it just feels... kinda wrong that OpenCL 
doesn't have an immediate way of saying, "A'ight, it's cool that 
you have this, Mr. XYZ-compute-device, I can deal with it," 
before proceeding to put on sunglasses and driving away in a 
Ferrari. Or something like that.


More information about the Digitalmars-d mailing list