在 ManagedCuda 中使用 CuRand

Using CuRand in ManagedCuda

我目前正在使用 ManagedCuda,并希望在设备上生成随机数。但是,我似乎无法找到一个简单的示例来执行此操作(浏览 ManagedCuda.CudaRand 命名空间中的对象并与 C++ 等效项进行比较并没有让我更进一步)。

实际问题:当使用 managedCuda 而不是常规 C++ 时如何在内核中生成随机数 API?

看起来,您只想使用 CURAND 的设备端 API,那么您将完全独立于 managedCuda:在 managedCuda 中,您需要做的就是分配足够大的内存块保存当前的 curandStates。您甚至不需要引用 managedCuda 的 CudaRand.dll.

然后您创建一个初始化内核,它调用每个线程 curand_init(),然后在您的实际内核中使用 curand_normal() 或任何其他随机函数。 curand 手册第 3.6 章中给出了分步示例。