3.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_best_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_best_init main.cpp) |
Le fichier CMakeLists.txt est disponible ici.