2016-04-21 2 views
2

Я пытаюсь скомпилировать проект CUDA с использованием CMake в Windows. Я не знаком с make или CMake, и за последние несколько дней я немного читал, но я все еще не могу понять это. Я получаю следующее сообщение об ошибке:Настройка CUDA_NVCC_FLAGS с использованием CMake

[email protected] /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64 
$ make 
[ 1%] Built target lapacktest 
[ 1%] Building NVCC (Device) object CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o 
nvcc fatal : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2010, 2012, and 2013 are supported 
CMake Error at magma_generated_zherk_batched_core.cu.o.cmake:207 (message): 
    Error generating 
    /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/./magma_generated_zherk_batched_core.cu.o 


CMakeFiles/magma.dir/build.make:2058: recipe for target 'CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o' failed 
make[2]: *** [CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o] Error 1 
CMakeFiles/Makefile2:105: recipe for target 'CMakeFiles/magma.dir/all' failed 
make[1]: *** [CMakeFiles/magma.dir/all] Error 2 
Makefile:83: recipe for target 'all' failed 
make: *** [all] Error 2 

Используя марку VERBOSE = 1 команда, я получаю следующее сообщение об ошибке:

cd /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas && /usr/bin/cmake.exe -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/./magma_generated_zherk_batched_core.cu.o -D generated_cubin_file:STRING=/cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/./magma_generated_zherk_batched_core.cu.o.cubin.txt -P /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o.cmake 
-- Removing /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/./magma_generated_zherk_batched_core.cu.o 
/usr/bin/cmake.exe -E remove /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/./magma_generated_zherk_batched_core.cu.o 
-- Generating dependency file: /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o.NVCC-depend 
"/cygdrive/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/bin/nvcc.exe" -M -D__CUDACC__ /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/magmablas/zherk_batched_core.cu -o /cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/build64/CMakeFiles/magma.dir/magmablas/magma_generated_zherk_batched_core.cu.o.NVCC-depend -ccbin /usr/bin/gcc.exe -m64 -Xcompiler ,\"-fopenmp\",\"-Wall\",\"-Wno-unused-function\",\"-g\" -DHAVE_CUBLAS -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_35,code=compute_35 -DNVCC "-I/cygdrive/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/include" "-I/cygdrive/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5/include" -I/cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/include -I/cygdrive/c/Apps/ThirdParty/MAGMA/magma-2.0.1/control 
nvcc fatal : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2010, 2012, and 2013 are supported 

Он по-прежнему с помощью компилятора GCC (- ccbin /usr/bin/gcc.exe).

Я пошел в файл: C:\Apps\ThirdParty\cygwin64\usr\share\cmake-3.3.2\Modules\FindCUDA.cmake и добавлены следующие строки:

set(VS_DIR "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin") 
message(${VS_DIR}) 
set(CUDA_NVCC_FLAGS "-ccbin ${VS_DIR}" CACHE STRING "Semi-colon delimit multiple arguments.") 

Я также добавил следующую строку в файл nvcc.profile:

CUDA_NVCC_FLAGS += -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin"; 

Все еще не повезло. Я потратил несколько дней, пытаясь это исправить. Я благодарен за любую помощь в этом вопросе.

+0

Аналогичный вопрос о прохождении пути к VS для nvcc: http://stackoverflow.com/questions/2760374/why-cant-nvcc-find-my-visual-c-installation. Поскольку у вас уже установлен VS, первый ответ (sjchoi) не подходит для вас. Но другие должны работать. – Tsyvarev

ответ

2

Возможность установки основного компилятора в FindCUDA: CUDA_HOST_COMPILER, см. FindCUDA documentation.

Попробуйте

set(CUDA_HOST_COMPILER "<path to compiler executable>") 

или же установить его при вызове cmake команды

cmake .. -DCUDA_HOST_COMPILER=<path to compiler executable> 

Я думаю, вариант CUDA_HOST_COMPILER перекрывает ccbin настройки CUDA_NVCC_FLAGS. Для других вариантов вы можете использовать CUDA_NVCC_FLAGS так, как вы пытались. (Таким образом, заголовок вводит в заблуждение. Это не проблема того, как установить CUDA_NVCC_FLAGS.)

Я использую это часто в Linux, однако у меня нет среды Windows, чтобы проверить его там.

Смежные вопросы