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 prekondycjonowanie 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 obsługą 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 obsługą GPU przy użyciu OpenACC zawiera sekcja Kompilacja z obsługą GPU.