Good day. I am working on my PhD developing parallel metaheuristics in CUDA for optimization of Smart-Grids and I am facing a Visual Studio project configuration problem that I can’t resolve. I am using Visual Studio 2012 Pro with the production release version of CUDA 6.0.
I can create a CUDA project in Visual Studio that uses Dynamic Parallelism (I use -rdc=true, compute50,sm_50, MT runtime library and added cudadevrt.lib to the additional link libraries). I can compile, run and Dynamic Parallelism works.
I can create a user static library (for example: dynamic_parallelism.lib) that uses CUDA Dynamic Parallelism and call this library from another project. Everything still works.
Now, I am creating a second user static library that uses CUDA (for example: dynamic_parallelism_2.lib). My project now calls functions from the first user static library (dynamic_parallelism.lib) that in turn calls functions from the second user static library (dynamic_parallelism_2.lib). Everything works if I don’t use Dynamic Parallelism (and only add cudart.lib in the linker libraries), but when I use dynamic parallelism (and add cudadevrt.lib and cudart.lib in my two libraries) I get a linker error LNK1169. It seems like cudadevrt.lib is causing the problem. Any idea how I could solve this?
I wasted many hours on that one and I am ready to try anything. Don’t hesitate to propose a fix. Also, if you want a simple Visual Studio 2012 solution with the 3 example projects that illustrate the problem, send me a message and I can email you the VS solution. Thank you very much.
3> cudadevrt.lib 3> cudart.lib 3> kernel32.lib 3> user32.lib 3> gdi32.lib 3> winspool.lib 3> comdlg32.lib 3> advapi32.lib 3> shell32.lib 3> ole32.lib 3> oleaut32.lib 3> uuid.lib 3> odbc32.lib 3> odbccp32.lib 3> main.cu.obj 3>dynamic_parallelism_lib.lib(dynamic_parallelism_lib_2.device-link.obj) : error LNK2005: __cudaRegisterLinkedBinary_66_tmpxft_000008f4_00000000_11_cuda_device_runtime_compute_50_cpp1_ii_5f6993ef already defined in dynamic_parallelism_lib.lib(dynamic_parallelism_lib.device-link.obj) 3>D:\ecole\Workspace\visual_studio_2012_projects\vincent_doctorat\x64\Debug\dynamic_parallelism_test.exe : fatal error LNK1169: one or more multiply defined symbols found