je ne peux pas comprendre comment obtenir clang
CUDA drapeaux spécifiques pour que les fichiers CUDA:clang 4.0.0 cuda et les meilleures pratiques pour CMake mises en garde minimales
# building all except 20
set(BUILD_CUDA_ARCH "30;32;35;50;52;53")
# According to the docs, we need static cudart:
# http://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code
list(APPEND EXTRA_LIBS "cudart_static")
# Let clang know exactly where cuda came from
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --cuda-path=${CUDA_TOOLKIT_ROOT_DIR}")
# Add the compilation trajectories for different architectures
# go to the docs linked above
foreach(arch ${BUILD_CUDA_ARCH})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --cuda-gpu-arch=sm_${arch}")
endforeach()
# Add the executable like normal, now that CMAKE_CXX_FLAGS has been adjusted.
# clang will compile the .cu files separately
add_library(${LIB_NAME} ${LIBRARY_TYPE} ${CXX_INC} ${CXX_SRC} ${CUDA_INC} ${CUDA_SRC})
Où ailleurs dans le fichier est défini
LIB_NAME
: le nom de la bibliothèque construiteLIBRARY_TYPE
: soitSHARED
ouSTATIC
CXX_INC
etCXX_SRC
: C++ pur en-têtes/code sourceCUDA_INC
etCUDA_SRC
: code CUDA droitEXTRA_LIBS
: juste utilisés danstarget_link_libraries
avec d'autres choses
Le problème est que cette approche se traduit par:
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_30' [-Wunused-command-line-argument]
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_32' [-Wunused-command-line-argument]
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_35' [-Wunused-command-line-argument]
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_50' [-Wunused-command-line-argument]
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_52' [-Wunused-command-line-argument]
clang-4.0: warning: argument unused during compilation: '--cuda-gpu-arch=sm_53' [-Wunused-command-line-argument]
avertissements pour chaque compilation non-cuda. Est-ce que je ai pour séparer ceci en deux bibliothèques séparées, ou est-ce qu'il y a un moyen de dire clang
? Les linked docs in the comments semblent indiquer qu'il devrait seulement faire des trucs de cuda avec .cu
des dossiers, mais je ne peux pas sembler trouver des drapeaux spécifiques pour seulement ce mode. Il est difficile de le diviser en deux bibliothèques avec la façon dont les choses sont réparties logiquement - la version CPU comprend différents fichiers qui font effectivement la même chose sans le GPU.
Lol DUH c'est bien mieux, puisque j'ai déjà une liste des fichiers qui doivent être configurés pour CUDA, seulement ajouter les drapeaux CUDA! – sjm324