我目前正在使用ManagedCuda,并希望在设备上生成随机数。但是,我似乎无法找到一个简单的示例如何执行此操作(浏览ManagedCuda.CudaRand
命名空间中的对象并与C ++等效项进行比较不会让我更进一步。)
实际问题:在使用managedCuda而不是常规C ++ API时,如何在内核中生成随机数?
答案 0 :(得分:2)
看起来,你只想使用CURAND的设备端API,然后你将完全独立于managedCuda:你需要在managedCuda中做的就是分配足够大的内存块来保存当前的curandStates。您甚至不需要引用managedCuda的CudaRand.dll。
然后创建一个调用每个线程curand_init()
的init内核,然后在实际内核中使用curand_normal()
或任何其他rand函数。第3.6章的curand手册中给出了一个分步示例。