2016-04-21 13 views
2

Ich versuche, ein CUDA-Projekt mit CMake unter Windows zu kompilieren. Ich bin nicht vertraut mit make oder CMake und ich habe in den letzten Tagen etwas gelesen, aber ich bin immer noch nicht in der Lage dies herauszufinden. Ich erhalte die folgende Fehlermeldung:Einstellung CUDA_NVCC_FLAGS mit 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 

Mit dem make VERBOSE = 1 Befehl, ich die folgende Fehlermeldung erhalten:

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 

Es ist immer noch die gcc-Compiler (- ccbin /usr/bin/gcc.exe).

ging ich in die Datei: C:\Apps\ThirdParty\cygwin64\usr\share\cmake-3.3.2\Modules\FindCUDA.cmake und fügte hinzu, die folgenden Zeilen:

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.") 

Ich habe auch die folgende Zeile in der Datei nvcc.profile:

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

noch kein Glück. Ich habe ein paar Tage damit verbracht, das Problem zu beheben. Ich bin dankbar für jede Hilfe in dieser Angelegenheit.

+0

Ähnliche Fragen zum Übergeben von Pfad zu VS für nvcc: http://StackOverflow.com/Questions/2760374/Why-Cant-NVCC-Find-My-visual-c-Installation. Da Sie bereits VS installiert haben, passt die erste Antwort (von sjchoi) nicht zu Ihnen. Aber andere sollten arbeiten. – Tsyvarev

Antwort

2

Die Option zum Festlegen des Host-Compilers in FindCUDA ist , siehe FindCUDA documentation.

Versuchen

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

oder alternativ festgelegt, wenn die cmake

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

Befehl aufrufen denke ich die CUDA_HOST_COMPILER Option, um die ccbin Einstellungen von CUDA_NVCC_FLAGS außer Kraft setzt. Für andere Optionen können Sie CUDA_NVCC_FLAGS in der Art verwenden, wie Sie es versucht haben. (Daher ist der Titel irreführend. Es ist kein Problem, wie man CUDA_NVCC_FLAGS setzt.)

Ich benutze dies oft unter Linux, aber ich habe keine Windows-Umgebung, um es dort zu testen.