Chapter 4.2 : Compilation



Commençons par appeler CMake (dans un dossier build) :

cmake ..
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- HDF5: Using hdf5 compiler wrapper to determine C configuration
-- HDF5: Using hdf5 compiler wrapper to determine CXX configuration
-- Found HDF5: /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_cpp.so;/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so;/usr/lib/x86_64-linux-gnu/libpthread.so;
/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;
/usr/lib/x86_64-linux-gnu/libm.so (found version "1.10.4") found components: C CXX 
-- HDF5_CXX_LIBRARIES = /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_cpp.so;/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so;
/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;
/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so
-- Program GRAY_SCOTT_GPU_CUDA version 1.0.0
-- SELF_TESTS_MODE = yes
-- Found STRINGUTILS headers : /home/pierre/usr/include/StringUtils
-- Found lib STRINGUTILS : /home/pierre/usr/lib
-- Found OPTIONPARSER headers : /home/pierre/usr/include/OptionParser
-- Found lib OPTIONPARSER : /home/pierre/usr/lib
-- Found DATASTREAM headers : /home/pierre/usr/include/DataStream
-- Found lib DATASTREAM : /home/pierre/usr/lib
-- Found TENSORALLOC headers : /home/pierre/usr/include/TensorAlloc
-- Found lib TENSORALLOC : /home/pierre/usr/lib
-- Found PHOENIXPNG headers : /home/pierre/usr/include/PhoenixPNG
-- Found lib PHOENIXPNG : /home/pierre/usr/lib
-- Automatic searching for architecture flags
-- Get LINUX extensions
-- Find SSSE3
-- Find SSE4
-- Find AVX
-- Find AVX2
-- tmp FLAG_VECTORIZED_COMPILATION = -mavx2
-- global PHOENIX_FLAG_VECTORIZED_COMPILATION = -mavx2
-- Automatic searching for architecture flags
-- Get LINUX extensions
-- Find SSSE3
-- Find SSE4
-- Find AVX
-- Find AVX2
-- CMAKE_VERSION = 3.16.3, MODE_NUNBER = '5'
-- CPU_MODEL_NAME =  Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
-- CPU_SIBLINGS =  8
-- NB_CORE = 4
-- CACHE_L1_DATA = 32768 B
-- CACHE_L1_INSTRUCTION = 32768 B
-- CACHE_L2 = 262144 B
-- CACHE_L3 = 8388608 B
-- ENDIANESS = LittleEndian
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found CUDA: /usr/local/cuda (found version "11.2") 
-- Found headers CUDA : /usr/local/cuda/include
-- Found lib CUDA : /usr/local/cuda/lib64/libcudart_static.a;-lpthread;dl;/usr/lib/x86_64-linux-gnu/librt.so
-- Configuring done
-- Generating done
-- Build files have been written to: XXX/GrayScottGpuCuda/build


Cela permet de vérifier que le système est installé correctement.

Puis Make :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
make
Scanning dependencies of target asterics_hpc_cuda
[  6%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc_cuda.dir/asterics_alloc.cpp.o
[ 12%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc_cuda.dir/timer.cpp.o
[ 18%] Building CXX object AstericsHPC/CMakeFiles/asterics_hpc_cuda.dir/asterics_cuda.cpp.o
[ 25%] Building C object AstericsHPC/CMakeFiles/asterics_hpc_cuda.dir/phoenix_cuda_check.c.o
[ 31%] Linking CXX shared library libasterics_hpc_cuda.so
[ 31%] Built target asterics_hpc_cuda
Scanning dependencies of target gray_scott_data_format
[ 37%] Building CXX object DataFormat/CMakeFiles/gray_scott_data_format.dir/MatrixHdf5.cpp.o
[ 43%] Building CXX object DataFormat/CMakeFiles/gray_scott_data_format.dir/temporary_alloc.cpp.o
[ 50%] Linking CXX shared library libgray_scott_data_format.so
[ 50%] Built target gray_scott_data_format
[ 56%] Building NVCC (Device) object src/CMakeFiles/gray_scott_cuda.dir/gray_scott_cuda_generated_gray_scott_cuda.cu.o
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
Scanning dependencies of target gray_scott_cuda
[ 62%] Linking CXX shared library libgray_scott_cuda.so
[ 62%] Built target gray_scott_cuda
Scanning dependencies of target gray_scott_gpu_cuda_stupid
[ 68%] Building CXX object program/CMakeFiles/gray_scott_gpu_cuda_stupid.dir/main_stupid.cpp.o
[ 75%] Linking CXX executable gray_scott_gpu_cuda_stupid
[ 75%] Built target gray_scott_gpu_cuda_stupid
Scanning dependencies of target gray_scott_gpu_cuda
[ 81%] Building CXX object program/CMakeFiles/gray_scott_gpu_cuda.dir/main.cpp.o
[ 87%] Linking CXX executable gray_scott_gpu_cuda
[ 87%] Built target gray_scott_gpu_cuda
Scanning dependencies of target gray_scott2pic
[ 93%] Building CXX object program/GrayScott2Pic/CMakeFiles/gray_scott2pic.dir/main.cpp.o
[100%] Linking CXX executable gray_scott2pic
[100%] Built target gray_scott2pic


Maintenant, le programme gray_scott_gpu_cuda peut-être testé.