使用cudaMemcpy()

时间:2016-05-07 08:27:34

标签: arrays parallel-processing cuda gpu

我刚刚开始学习CUDA,我想用随机数填充一个数组(一个表示为一维数组的二维数组)。我跟着另一个帖子来生成随机数,但我不知道数字的生成或从设备或其他任何东西恢复的内存是否有问题。问题是,尽管我已经尝试使用正在修改它的线程的id来填充数组的任何单元格,以便在复制到主机内存后查看结果,但是我收到一个填充了{{1使用0恢复数据后的任何位置。

我使用cuda 7.5在Visual Studio 2013上进行编程,使用i5 2500k作为我的处理器和960 GTX图形卡。

这是我尝试填充它的主要方法和方法。我也会更新cuRand初始化。如果你需要看别的东西,请告诉我。

cudaMemcpy()

在回答解决后编辑:给出的答案有一个特殊性,并且你需要一个较少的线程数(这个数量的一半为我工作)才能正确播种随机用cuRand编号。出于某种原因,我可以完美地创建线程,但我无法为伪随机算法生成器播种。

1 个答案:

答案 0 :(得分:2)

您的硬件上每个块的最大线程数为1024,因此,如果它大于1024,您可能无法使用adnLength安排调用。

您遇到的错误很可能是呼叫配置错误,它由cudaPeekAtLastError返回,因为它发生在任何GPU工作之前,就在三角度括号调用之后。实际上cudaMemcpy可能不会返回它,即使它从先前的异步调用中返回错误。

可能发生的错误是cudaErrorLaunchOutOfResources。