Компилиране с CMake¶
Тази страница описва процедурата от получаването на изходния код на FrontISTR до компилирането и инсталирането. За подробности за зависимите библиотеки вижте Задължителни и незадължителни зависимости.
Получаване на изходния код¶
Изходният код на FrontISTR може да бъде получен от GitLab или GitHub.
# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git
# GitHub (mirror)
git clone https://github.com/FrontISTR/FrontISTR.git
Процедура за компилиране¶
FrontISTR предполага компилиране извън дървото на изходния код (компилирането директно в дървото на изходния код е забранено). Създайте директория build и изпълнете cmake в нея.
cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)
След компилирането програмата може да се изпълни директно като /path/to/FrontISTR/build/fistr1/fistr1. За да я инсталирате в системния път (CMAKE_INSTALL_PREFIX), изпълнете допълнително следната команда.
CMake опции¶
Опциите, чиято стойност по подразбиране е посочена като „ON при откриване“, се активират автоматично, когато съответната библиотека бъде намерена в системата при изпълнение на cmake. Те могат да бъдат изключени изрично чрез -DWITH_XXX=OFF.
| Опция | По подразбиране | Описание |
|---|---|---|
WITH_MPI | ON | Активира MPI паралелизъм |
WITH_OPENMP | ON при откриване | Активира OpenMP нишков паралелизъм |
WITH_METIS | ON при откриване | Активира разделяне на области чрез METIS |
METIS_VER_4 | OFF | Използва METIS v4 (OFF използва v5) |
WITH_MUMPS | ON при откриване | Активира паралелния директен решаващ алгоритъм MUMPS |
WITH_MKL | ON при откриване | Активира Intel MKL (включително PARDISO) |
WITH_LAPACK | ON при откриване | Активира оценяване на числото на обусловеност чрез LAPACK |
WITH_ML | ON при откриване | Активира AMG предобуславяне чрез Trilinos ML |
WITH_REFINER | ON при откриване | Активира сгъстяване на мрежата чрез REVOCAP_Refiner |
WITH_REVOCAP | ON при откриване | Активира свързан анализ чрез REVOCAP_Coupler |
WITH_TOOLS | ON | Компилира включените инструменти |
WITH_DOC | OFF | Генерира API документация с Doxygen |
WITH_NETCDF | ON при откриване | Активира извеждане Exodus II (NetCDF) |
WINDOWS | OFF | Активира компилиране за Windows |
CMAKE_BUILD_TYPE | RELEASE | Тип компилиране (RELEASE / DEBUG) |
CMAKE_INSTALL_PREFIX | /usr/local | Инсталационна директория |
DEBUG_EXTRA | OFF | Активира проверка за изтичане на памет (за GCC, -fsanitize=address) |
DEBUG компилиране¶
Когато е зададено CMAKE_BUILD_TYPE=DEBUG, се добавят следните флагове за отстраняване на грешки според компилатора.
| Компилатор | Допълнителни флагове |
|---|---|
| GCC | -fbounds-check -fbacktrace |
| Intel | -check uninit,bound -traceback |
Компилиране с GPU¶
Когато NVIDIA HPC SDK (nvc/nvc++/nvfortran) е зададен като компилатор, CMake автоматично добавя следните флагове.
| Флаг | Описание |
|---|---|
-acc | Активира OpenACC |
-Minfo=accel | Показва информация за GPU offloading по време на компилация |
-gpu=ccnative,mem:managed | Автоматично открива GPU в средата за компилиране, определя целта и използва Unified Memory |
За подробна процедура за GPU компилиране с OpenACC вижте Компилиране с GPU.