cuCtxCreate_v2 undefined

程序中使用了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本来就没提供此函数。

lib文件夹里所有的文件都在这里

那就不知道,我上文说过,我知道linux下的libcuda在哪里。

(windows下是在一起的)

建议yixi来回答下linux下的位置。

LZ你好,刚才在版主的指导下查找了下libcuda.so.库。
此库在我电脑中的路径是:/usr/lib(64)/libcuda.so.

希望对LZ有帮助。

以后遇到此类问题,楼主可采用以下步骤:
1、找到cuda的sample安装目录
2、随意选择该目录下的一个可执行程序,当然,根据你用的rt库和driver库
3、ldd该程序,即可。

谢谢回复