2016-03-15 12 views
5

Załóżmy, że mam plik, nazwijmy to foo.cpp, moim celem jest, aby skompilować ten plik nvcc w CUDA trybu. Z wiersza poleceń można to łatwo osiągnąć poprzez wywoływanie:CUpewnij + Cuda: skompilować pliki cpp w trybie CUDA (--x = Cu)

nvcc --x=cu foo.cpp

Co ja z trudem jest dostać CUpewnij to zrobić dokładnie to samo. Okazuje się, że polecenie CUpewnij cuda_add_executable(foo foo.cpp) będzie filtrować pliki * .cpp i korzystać z C++ - kompilator (zamiast nvcc).

Należy pamiętać, że zmiana nazwy wszystkich plików na * .cu nie jest opcją, jak kodzie musi również obsługiwać non-CUDA buduje.

+0

można spróbować ustawić CUpewnij kompilator g ++ i ustawić jego flagę? – xhg

Odpowiedz

4

W wersji FindCUDA source code znalazłem opcję aktywowania kompilacji CUDA dla określonych plików innych niż .cu. Chociaż wydaje się, że brakuje dokumentacji (poza kodem źródłowym).

Można ustawić CUDA kompilacja na poziomie każdego pliku z

set_source_files_properties(foo.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ) 

w CUpewnij 3,3 lub nowszej.

Reszta działa jak zwykle:

cuda_add_executable(foo foo.cpp) 

Właściwie spodziewałem nie powinno być proste rozwiązanie jak przy użyciu CUDA_NVCC_FLAGS lub cuda_add_executable(... OPTIONS --x=cu) przekazać flagi --x=cu w Niestety, to nie działa.. Powodem jest prawdopodobnie to, że zakres ustawienia na tym poziomie nie byłby użyteczny, ponieważ miałby wpływ na wszystkie pliki.