Przejdź do treści

Kompilacja za pomocą CMake

Na tej stronie opisano procedurę od uzyskania kodu źródłowego FrontISTR po kompilację i instalację. Szczegółowe informacje o bibliotekach zależnych zawiera sekcja Wymagane i opcjonalne zależności.

Pobieranie kodu źródłowego

Kod źródłowy FrontISTR można uzyskać z GitLab lub GitHub.

# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git

# GitHub (repozytorium lustrzane)
git clone https://github.com/FrontISTR/FrontISTR.git

Procedura kompilacji

FrontISTR zakłada kompilację poza drzewem źródeł (kompilowanie bezpośrednio w drzewie źródeł jest zabronione). Utwórz katalog build i uruchom w nim cmake.

cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)

Po kompilacji program można uruchomić bezpośrednio jako /path/to/FrontISTR/build/fistr1/fistr1. Aby zainstalować go w ścieżce systemowej (CMAKE_INSTALL_PREFIX), wykonaj dodatkowo następujące polecenie.

cmake --build . --target install

Opcje CMake

Opcje, których wartość domyślna jest podana jako "ON, jeśli wykryto", są włączane automatycznie, gdy odpowiednia biblioteka zostanie znaleziona w systemie podczas uruchamiania cmake. Można je jawnie wyłączyć, podając -DWITH_XXX=OFF.

Opcja Domyślnie Opis
WITH_MPI ON Włącza równoległość MPI
WITH_OPENMP ON, jeśli wykryto Włącza równoległość wątkową OpenMP
WITH_METIS ON, jeśli wykryto Włącza dekompozycję domeny za pomocą METIS
METIS_VER_4 OFF Używa METIS v4 (OFF oznacza v5)
WITH_MUMPS ON, jeśli wykryto Włącza równoległy solver bezpośredni MUMPS
WITH_MKL ON, jeśli wykryto Włącza Intel MKL (w tym PARDISO)
WITH_LAPACK ON, jeśli wykryto Włącza estymację liczby uwarunkowania za pomocą LAPACK
WITH_ML ON, jeśli wykryto Włącza preconditioning AMG za pomocą Trilinos ML
WITH_REFINER ON, jeśli wykryto Włącza zagęszczanie siatki za pomocą REVOCAP_Refiner
WITH_REVOCAP ON, jeśli wykryto Włącza analizę sprzężoną za pomocą REVOCAP_Coupler
WITH_TOOLS ON Kompiluje dołączone narzędzia
WITH_DOC OFF Generuje dokumentację API za pomocą Doxygen
WITH_NETCDF ON, jeśli wykryto Włącza zapis Exodus II (NetCDF)
WINDOWS OFF Włącza kompilację dla Windows
CMAKE_BUILD_TYPE RELEASE Typ kompilacji (RELEASE / DEBUG)
CMAKE_INSTALL_PREFIX /usr/local Katalog instalacji
DEBUG_EXTRA OFF Włącza kontrolę wycieków pamięci (dla GCC, -fsanitize=address)

Kompilacja DEBUG

Po podaniu CMAKE_BUILD_TYPE=DEBUG dodawane są następujące flagi debugowania zależne od kompilatora.

Kompilator Dodatkowe flagi
GCC -fbounds-check -fbacktrace
Intel -check uninit,bound -traceback
cmake -DCMAKE_BUILD_TYPE=DEBUG ..

Kompilacja z GPU

Gdy jako kompilator wskazano NVIDIA HPC SDK (nvc/nvc++/nvfortran), CMake automatycznie dodaje następujące flagi.

Flaga Opis
-acc Włącza OpenACC
-Minfo=accel Wyświetla podczas kompilacji informacje o przenoszeniu obliczeń na GPU
-gpu=ccnative,mem:managed Automatycznie wykrywa GPU w środowisku kompilacji, aby określić platformę docelową, i używa Unified Memory

Szczegółową procedurę kompilacji z GPU przy użyciu OpenACC zawiera sekcja Kompilacja z GPU.