无法使用curand相关函数

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curand.h>
#include <cuda_runtime.h>

我在程序起始处,引入以上头文件。
并在链接器—输入 里面加入了 cudart.lib
在链接器—常规 里面添加了 $(CUDA_PATH_V5_5)\lib$(Platform);

可是运行随机数生成的时候却发现,无法识别随机函数。不知道什么原因
[attach]3443[/attach]

楼主您好:

您忘记链接curand.lib了。

解决方案:
请在您的项目属性中,点击linker, 在linker input里面输入:curand.lib

(请注意curand.lib有两个:
一个位于:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\lib\Win32
另一个位于:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\lib\X64
分别对应32位和64位版本,注意别弄错了)

感谢来访

只需要在linker INPUT里面添加curand.lib就可以了吗? 下面的那个是什么意思?我应该在哪添加这个目录。

您直接添加curand.lib即可。

后面是怕您犯错误的额外提醒。您可以无视。

哦,好使了。还有个问题,我的显卡是9300gs,总是遇到申请显存出错。然后关机等待一段时间,又好了。像昨晚我出现的问题,今天早上就好了。都是按照标准操作来的,int *d_data;cudaMalloc((void **) &d_data,sizeof(int)*NUM); cudaFree(d_data); 然后就会返回错误。 我想是不是DEBUG模式下,它总是分配那个固定的地址,上一次执行中断后,没有释放掉,因此出错?

请问返回啥错误?您可以提供错误,论坛为您分析。以及,您的新问题建议新开主题。

此外,您的9300显卡的显存可能不足了,无法继续分配了(这是很老很老的显卡了)。

关于为何cudaMalloc可能返回同样的设备指针值,这个和您之前的程序是否释放无关的,在您的exe的进程结束的时候,所有分配的显存将自动释放。

哦 了解了。等着换显卡试试吧