程序中使用了cuCtxCreate函数
undefined reference to 'cuCtxCreate_v2 ’
尝试这个命令 nvcc -arch=sm_20 *.cu -L /usr/local/l/cuda-5.0/lib/libcudart.so 还是出错
grep “cuCtxCreate_v2” . -r 显示如下
Binary file ./libcudart.so.5.0 matches
Binary file ./libcudinj32.so mathches
…
楼主您好,您在尝试使用Drvier api,
此api的_v2后缀表示3.2+版本的新风格context创建(多个线程可以共享一个context)。
现在v2版本的这些api已经是默认的了。
然后您需要链接libcuda, 而不是libcudart。
含有rt字样的是runtime库。
至于为何您搜索cudart之类的库含有cuCtxCreate_v2的字样,那是因为他要使用cuda库,所以含有此字样。
请立刻更换链接对象。
cd $CUDA_HOME
find -name libcuda.so 没有搜到任何内容
到lib目录看了一下 没有这个so 文件
grep “cudaMemFree” . -r
也没有任何内容
我不知道贵机器上cuda driver库在哪里,因为我不是linux用户。
在windows上,cuda和cudart是在一起的(当然,他们是.lib结尾的)。
关于第二个问题,
cudaMemFree本来就没有这个函数。
drvier版本的是cuMemFree,而
runtime版本的是cudaFree。
所以没有cudaMemFree正常,NV本来就没提供此函数。
那就不知道,我上文说过,我知道linux下的libcuda在哪里。
(windows下是在一起的)
建议yixi来回答下linux下的位置。
LZ你好,刚才在版主的指导下查找了下libcuda.so.库。
此库在我电脑中的路径是:/usr/lib(64)/libcuda.so.
希望对LZ有帮助。
system
10
以后遇到此类问题,楼主可采用以下步骤:
1、找到cuda的sample安装目录
2、随意选择该目录下的一个可执行程序,当然,根据你用的rt库和driver库
3、ldd该程序,即可。