Knowledgebase:
CMake -> Cuda PDB file access problem
Posted by Yoni Davidson on 05 February 2017 08:28 AM

Full error message:
fatal error C1041: cannot open program database 'c:\develop\3rdparty\_test_build_opencv_3_2\opencv_3_2\build\modules\cudaarithm\cmakefiles\cuda_compile.dir\src\cuda\vc120.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS


Scenario:
Cmake generates the VS Solution and in this process it spawns cuda tasks.
It seems that there is a PDB conflict since several cl trying to write to the same PDB file.

Problem:
In normal VS projects it is possible to pass the /FS flag to the host compiler which which will solve the pdb access problem.
Cmake-generated projects, however, don't have the CUDA C/C++ section in the projects properties, so there is no easy way to set that flag from CMake.

Solution:
Using the advanced cmake properties CMAKE_C_FLAGS and CMAKE_CXX_FLAGS combined with the CUDA_PROPAGATE_HOST_FLAGS flag, it is possible to pass the /FS option down to the host compiler used by nvcc, which was causing the concurrent access to the pdb files.
Now compilation can runs smoothly on all cores.

Also see:
https://cmake.org/cmake/help/v3.7/module/FindCUDA.html

(3 vote(s))
This article was helpful
This article was not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
CAPTCHA Verification 
 
Please enter the text you see in the image into the textbox below. This is required to prevent automated registrations and form submissions.

Help Desk Software by Kayako incredibuild.kayako.com