2016-07-15 5 views
1

Ich versuche, das Cuda-Programm mit Intel-Compiler als Host-Compiler zu kompilieren. Das Cuda-Programm ist in C++ geschrieben und verwendet C++ 11-Funktionen. Wenn ich den Standard-Host-Compiler g ++ verwende, dann funktioniert es gut. Aber ich möchte versuchen, Intel Compiler wegen möglicher Leistungsprobleme in g ++.NVCC funktioniert nicht, wenn Intel Compiler und -std = C++ 11 Flag verwendet werden

Die Compiler, die ich verwendete, sind CUDA 7.5 und Intel 16.0.3. Sie sind die neuesten Compiler, so dass sie alle C++ 11-Funktionen unterstützen.

Hier ist, was ich mit einer kleinen Testdatei versucht:

nvcc -std=c++11 -ccbin=icpc -Xcompiler=-std=c++11 test.cu -o test 

Hier ist der Ausgang:

nvcc warning : The -c++11 flag is not supported with the configured host compiler. Flag will be ignored. 
/usr/local/gcc-4.8.2/include/c++/4.8.2/x86_64-unknown-linux-gnu/bits/c++config.h(190): error: identifier "nullptr" is undefined 

/usr/local/gcc-4.8.2/include/c++/4.8.2/x86_64-unknown-linux-gnu/bits/c++config.h(190): error: expected a ";" 

/usr/local/gcc-4.8.2/include/c++/4.8.2/exception(63): error: expected a ";" 

Hat jemand das gleiche Problem und wie man es beheben? Vielen Dank.

+1

und nur ICC 15.0 wird von CUDA 7.5 offiziell unterstützt. – kangshiyin

+0

Versuchen Sie, auf CUDA 8.0RC zu aktualisieren. –

Antwort

3

Was Sie versuchen, wird in CUDA 7.5 nicht unterstützt. Die C++ 11-Syntax wird zur Zeit nicht unterstützt, wenn ICC in CUDA 7.5 als Host-Compiler verwendet wird und ICC 16 von CUDA 7.5 nicht unterstützt wird.

CUDA 8.0RC hat Unterstützung für die Verwendung von ICC als Host-Compiler mit der STD = C++ 11-Flag (und auch Unterstützung für ICC 16.0)

Verwandte Themen