खोज…


पैरामीटर

पैरामीटर विवरण
__global अहस्ताक्षरित int * rnd_buffer अहस्ताक्षरित int OpenCL मानक द्वारा 32-बिट के रूप में मानकीकृत है
* __global का अर्थ है पढ़ने / लिखने की पहुंच के लिए डिवाइस की मुख्य मेमोरी
* rnd_buffer "opencl program" के दायरे में एक नाम है (होस्ट नहीं, लेकिन डिवाइस)

थॉमस वैंग के पूर्णांक हैश फ़ंक्शन का उपयोग करना

Auxilliary फ़ंक्शन जो एक बीज लेता है और मूल्यांकन करता है:

uint wang_hash(uint seed)
{
        seed = (seed ^ 61) ^ (seed >> 16);
        seed *= 9;
        seed = seed ^ (seed >> 4);
        seed *= 0x27d4eb2d;
        seed = seed ^ (seed >> 15);
        return seed;
 }

एक अन्य सहायक कार्य जो "आईडी" द्वारा दिखाए गए बफर स्थान को आरम्भ करने के लिए इसका उपयोग करता है:

 void wang_rnd_0(__global unsigned int * rnd_buffer,int id)                
 {
     uint maxint=0;
     maxint--;
     uint rndint=wang_hash(id);
     rnd_buffer[id]=rndint;
 }

और दूसरा 0 और 1 के बीच अतिरिक्त फ्लोट आउटपुट कर रहा है

 float wang_rnd(__global unsigned int * rnd_buffer,int id)                
 {
     uint maxint=0;
     maxint--; // not ok but works
     uint rndint=wang_hash(rnd_buffer[id]);
     rnd_buffer[id]=rndint;
     return ((float)rndint)/(float)maxint;
 }

प्रारंभिक कर्नेल:

 __kernel void rnd_init(__global unsigned int * rnd_buffer)
 {
       int id=get_global_id(0);
       wang_rnd_0(rnd_buffer,id);  // each (id) thread has its own random seed now           
 }

एकल पुनरावृति कर्नेल:

 __kernel void rnd_1(__global unsigned int * rnd_buffer)
 {
      int id=get_global_id(0);

      // can use this to populate a buffer with random numbers 
      // concurrently on all cores of a gpu
      float thread_private_random_number=wang_rnd(rnd_buffer,id);
 }


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow