2.1.2 : Le CMakeLists.txt

On commence par définir notre project comme d'habitude
1
2
project(SimpleHadamardProduct)
cmake_minimum_required(VERSION 3.0)


Commençons par tester si on peut utiliser nvc++. Comme il est dans le HPC_SDK, l'utilisateur doit définir une variable d'environnement NVCPP pour l'activer noteEn ce qui me concerne export NVCPP="/opt/nvidia/hpc_sdk/Linux_x86_64/22.11/compilers/bin/nvc++" :
1
2
3
4
if(DEFINED ENV{NVCPP})
	message(STATUS "Use nvc++ compiler at $ENV{NVCPP}")
	set(CMAKE_CXX_COMPILER $ENV{NVCPP})
	


On ajoute quelques flags de compilation (le fameux -stdpar, une option d'optimisation basique, les warnings et l'activation de C++20) :
1
2
3
4
	set(CMAKE_CXX_FLAGS "-stdpar=gpu -O2 -Wall -std=c++20")
else()
	message(STATUS "Use default compiler ${CMAKE_CXX_COMPILER}")
	


On ajoute quelques flags de compilation (sans -stdpar qui est spécifique à nvc++) :
1
2
	set(CMAKE_CXX_FLAGS "-O2 -Wall -std=c++20")
endif()


On créé notre exécutable :
1
add_executable(simple_hadamard_product_better_init main.cpp)


Le CMakeLists.txt complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
project(SimpleHadamardProduct)
cmake_minimum_required(VERSION 3.0)

if(DEFINED ENV{NVCPP})
	message(STATUS "Use nvc++ compiler at $ENV{NVCPP}")
	set(CMAKE_CXX_COMPILER $ENV{NVCPP})
		set(CMAKE_CXX_FLAGS "-stdpar=gpu -O2 -Wall -std=c++20")
else()
	message(STATUS "Use default compiler ${CMAKE_CXX_COMPILER}")
		set(CMAKE_CXX_FLAGS "-O2 -Wall -std=c++20")
endif()

add_executable(simple_hadamard_product_better_init main.cpp)


Le fichier CMakeLists.txt est disponible ici.