4.1.7.3 : Le CMakeLists.txt

Écrivons le fichier CMakeLists.txt :

Récupérons tous les fichier sources d'un coup (même si il n'y en a qu'un) :
1
file(GLOB gray_scott_cuda_SRC "${CMAKE_CURRENT_SOURCE_DIR}/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/*.cu")


Définissons un compilateur (vous pouvez changer la version, mais n'utilisez pas un compilateur trop vieux) :
1
set(CUDA_HOST_COMPILER ${CMAKE_C_COMPILER})


Ensuite, nous pouvons préciser les computes capabilities que nous voulons (en ce qui me concerne, mais Quadro M2200 est en compute capabilities 5) :
1
2
3
4
5
6
7
set(CUDA_NVCC_FLAGS
			-gencode arch=compute_37,code=sm_37
			-gencode arch=compute_50,code=sm_50
			-gencode arch=compute_60,code=sm_60
			-gencode arch=compute_70,code=sm_70
			-gencode arch=compute_80,code=sm_80
)


Enfin, nous créons notre bibliothèque :
1
cuda_add_library(gray_scott_cuda SHARED ${gray_scott_cuda_SRC})


Et lions la à notre bibliothèque asterics_hpc_cuda :
1
target_link_libraries(gray_scott_cuda asterics_hpc_cuda ${CUDA_LIBRARIES})


Le fichier CMakeLists.txt complet :

1
2
3
4
5
6
7
8
9
10
11
12
file(GLOB gray_scott_cuda_SRC "${CMAKE_CURRENT_SOURCE_DIR}/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/*.cu")

set(CUDA_HOST_COMPILER ${CMAKE_C_COMPILER})
set(CUDA_NVCC_FLAGS
			-gencode arch=compute_37,code=sm_37
			-gencode arch=compute_50,code=sm_50
			-gencode arch=compute_60,code=sm_60
			-gencode arch=compute_70,code=sm_70
			-gencode arch=compute_80,code=sm_80
)
cuda_add_library(gray_scott_cuda SHARED ${gray_scott_cuda_SRC})
target_link_libraries(gray_scott_cuda asterics_hpc_cuda ${CUDA_LIBRARIES})


Vous pouvez le télécharger ici.