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.
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 |
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.