如何解决cuda 5.0 编译dynamic parallelism 功能代码时的 fatal error

来源:互联网 发布:软件复杂度度量方法 编辑:程序博客网 时间:2024/06/05 12:05

无论是使用Linux还是VS,如果你想实现dynamic parallelism的编译,都必须提前进行一些设置。否则你可能会遇到如下一些错误:

fatal error: Unresolved extern function 'cudaGetParameterBuffer'

fatal error: Unresolved extern function 'cudaLaunchDevice'

nvlink error   : Undefined reference to 'cudaGetParameterBuffer'

nvlink error   : Undefined reference to 'cudaLaunchDevice'

nvlink error   : Undefined reference to 'cudaDeviceSynchronize'


解决以上问题,需要完成对cuda library的配置

1. VS2010环境下

    1) View -> Property Pages
    2) Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true)
    3) Configuration Properties -> CUDA C/C++ -> Code Generation -> compute_35,sm_35
    4) Configuration Properties -> Linker -> Input -> Additional Dependencies -> cudadevrt.lib

最重要的同时也是一般配置出错的 就是-rdc=true 和 cudadevrt.lib


2. Linux(centOS)

    linux下就要简单多了,只需要在指令中加入-rdc和cudadevrt library就可以

    nvcc -arch=sm_35 -rdc=true xxxxx.cu -o xxxxxx -lcudadevrt


原创粉丝点击