CUDA with D working after all

Trass3r mrmocool at gmx.de
Tue Jul 21 18:48:45 PDT 2009


Robert Jacques schrieb:
> Here: 
> https://jshare.johnshopkins.edu/xythoswfs/webui/_xy-3638242_1-t_5kUrZSWG
> It requires D2 and the new phobos and CUDA 2.2. It's only been tested on 
> XP and Vista and D2.031. If you need a D1 version, let me know and I'll 
> hunt down an old revision. The ddocs for cuda.api and cuda.tests has 
> some example usage. The D2 version has some pretty niffty features, like 
> struct support. Let me know if you need any help.

What about that __thread storage class?

class Device {
protected:
     static __thread CUdevice dev;       // This thread's GPU
     static __thread int   gpu_id = 0;   // This thread's GPU id
     static __thread int rev_major;      // The major revision number
     static __thread int rev_minor;      // The minor revision number
     static __thread size_t totalGM;     // Total global memory
     static __thread string dev_name;    // Device name
     static __thread CUdevprop prop;     // This device's properties
     static __thread CUcontext ctx;      // This device's context
     static __thread isValid = false;    // Is the device alive


Does this combination of static and __thread work?
By the way, are static class members treated as "classic global data"?


D 2.030:
classic global storage now defaults to TLS (Thread Local Storage).

D 2.013:
Added __thread storage class for thread local storage. This is for 
testing purposes only to check out the machinery in the back end. The 
front end design of this will change.



More information about the Digitalmars-d mailing list