在ManagedCuda中使用CuRand

在ManagedCuda中使用CuRand,cuda,managed-cuda,Cuda,Managed Cuda,我目前正在使用ManagedCuda,希望在设备上生成随机数。然而,我似乎找不到一个简单的例子来做这个(浏览 >管理器CUDUA。CUDARAND 命名空间,并且与C++等价物相比,我没有进一步了解。 实际问题:在使用MauleCdUDA而不是常规的C++ API时,如何生成随机数?< P>,看来,您只想使用Curand的设备端API,然后,您将完全独立于managedCuda:在managedCuda中,您所需要做的就是分配足够大的内存块来保存当前的CurandState。您甚至不需要对man

我目前正在使用ManagedCuda,希望在设备上生成随机数。然而,我似乎找不到一个简单的例子来做这个(浏览<代码> >管理器CUDUA。CUDARAND 命名空间,并且与C++等价物相比,我没有进一步了解。
实际问题:在使用MauleCdUDA而不是常规的C++ API时,如何生成随机数?

< P>,看来,您只想使用Curand的设备端API,然后,您将完全独立于managedCuda:在managedCuda中,您所需要做的就是分配足够大的内存块来保存当前的CurandState。您甚至不需要对managedCuda的CudaRand.dll进行引用


然后创建一个init内核,调用每个线程
curand\u init()
,然后在实际内核中使用
curand\u normal()
或任何其他rand函数。第3.6章的《curand手册》中给出了一个分步示例。

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


然后创建一个init内核,调用每个线程
curand\u init()
,然后在实际内核中使用
curand\u normal()
或任何其他rand函数。第3.6章的《curand手册》中给出了一个分步示例。

那么您是否有具体问题要问?@Talonmes是:curand在managedCuda中是如何工作的?我应该如何设置它以在内核中生成随机数?那么您有没有具体的问题要问?@Talonmes是:curand在managedCuda中是如何工作的?我应该如何设置它以在内核中生成随机数?谢谢,我稍后会尝试。但是,从示例中猜测分配的内存数量是由curandState结构的大小决定的。也许没有办法通过managedCuda解决这个问题?(除了在设备上获取sizeof,将其存储在设备内存中并在C#中查询)显然它是48字节(在CUDA 7.5中),通过前面提到的sizeof方法计算出来。非常感谢!实际上,分配足够的内存(内核操作*48字节)、设置全局(
\uuuu设备\uuuuuuuuuuuuuuuuuuuuuuuuandstate*randomState;
)以指向该数据、调用设置内核进行设置(
curand\u init(1234,i,0,&randomState[i]);
)然后生成随机浮点(使用
float f=curand\u)(&randomState[i]);
)。我一直在尝试让它工作,但没有效果。是否有任何示例可以使用ManagedCuda加载到Visual Studio中?谢谢,我稍后会尝试。但是,从示例中猜测分配的内存量是由curandState结构的大小决定的。可能无法通过管理解决这个问题edCuda?(除了获取设备上的sizeof,将其存储在设备内存中并用C#从中查询)显然它是48字节(在CUDA 7.5中),通过前面提到的sizeof方法计算出来。非常感谢!这确实很容易,只要分配足够的内存(内核操作*48字节),设置全局(
\uuuuuu设备uuuuuuuuuuuuuuuuuuuuuuuu设备uuuuuuuuuuuuuuuuuuu状态*随机状态;
)指向该数据,调用安装内核对其进行设置(
curanduinit(1234,i,0,&randomState[i]);
),然后生成随机浮点(使用
float f=curanduuniform(&randomState[i]);
)。我一直在尝试让它工作,但没有结果。是否有任何示例可以通过ManagedCuda加载到Visual Studio中?