Модулі середовища, доступні на кластері

Компілятори

В наступній таблиці зведена інформація про доступні комбінації компіляторів C, C++ та реалізацій MPI:

╔════════════╦══════╦══════╦══════╦════════╦════════╦════════╦══════════════════╦═════════╗
║ Компілятор ║ C89? ║ C99? ║ C11? ║ C++98? ║ C++03? ║ C++11? ║ MPI              ║ OpenMP? ║
╠════════════╬══════╬══════╬══════╬════════╬════════╬════════╬══════════════════╬═════════╣
║ GCC 4.7.2  ║   +  ║   +  ║ Част-║    +   ║    +   ║ Майже  ║ OpenMPI 1.6.4,   ║ Так,    ║
║            ║      ║      ║ кова ║        ║        ║ повніс-║ MVAPICH2 1.9rc1  ║ gomp    ║
║            ║      ║      ║      ║        ║        ║ тю     ║                  ║         ║
╠════════════╬══════╬══════╬══════╬════════╬════════╬════════╬══════════════════╬═════════╣
║ Clang 3.2  ║   +  ║   +  ║ Част-║    +   ║    +   ║ Майже  ║ OpenMPI 1.6.4,   ║ Ні      ║
║            ║      ║      ║ кова ║        ║        ║ повніс-║ MVAPICH2 1.9rc1, ║         ║
║            ║      ║      ║      ║        ║        ║ тю     ║ MPICH 3.0.3      ║         ║
╚════════════╩══════╩══════╩══════╩════════╩════════╩════════╩══════════════════╩═════════╝

Всі компілятори підтримують Pthreads.

З метою уникнення проблем несумісності ABI двох різних стандартних бібліотек, компілятор Clang сконфігуровано для використання стандартної бібліотеки C++ від GCC (libstdc++).

Компілятор Clang підтримує додаткові засоби для діагностування проблем в програмах:

  • Address Sanitizer
  • Thread Sanitizer
  • Undefined Behavior Sanitizer

В комбінації з MPICH або MVAPICH2 компілятор Clang виводить додаткову діагностику при неправильному використанні функцій MPI.

Для мови Fortran доступний тільки компілятор з набору GCC -- GNU Fortran. GNU Fortran 4.7.2 підтримує Fortran 77, Fortran 95, Fortran 2003 (частково), Fortran 2008 (частково). GNU Fortran підтримує OpenMP.

Реалізації MPI

На кластері встановлені наступні реалізації MPI:

  • OpenMPI. Повністю підтримує MPI 2.2. Майже повністю підтримує MPI 3.0 (див. https://svn.open-mpi.org/trac/ompi/wiki/MPIConformance). Має вбудовану бібліотеку трасування VampirTrace, що дозволяє створювати файли трасування, які підтримує Vampir та OpenVampir.

  • MVAPICH2. Повністю підтримує MPI 2.2. Майже повністю підтримує MPI 3.0. В повній мірі використовує можливості InfiniBand. В середньому має найменші затримки та більш високу швидкість передачі повідомлень, ніж інші реалізації MPI. Код MVAPICH2 базується на коді MPICH.

  • MPICH. Повністю підтримує MPI 2.2. Майже повністю підтримує MPI 3.0. Не використовує можливості InfiniBand в повній мірі (використовує TCP over IB).

Комбінації компіляторів та реалізацій MPI

Доступні тільки наступні комбінації компіляторів та реалізацій MPI:

  • GCC + GFortran + OpenMPI = goolf

  • GCC + GFortran + MVAPICH2 = gmvolf

  • Clang + libstdc++ + GFortran + OpenMPI = cgoolf

  • Clang + libstdc++ + GFortran + MVAPICH2 = cgmvolf

  • Clang + libstdc++ + GFortran + MPICH = cgmpolf

Використання GCC та OpenMPI (набір goolf)

GCC та OpenMPI входять до набору goolf/1.4.10. Цей набір містить:

  • GCC 4.7.2 (мови C, C++, C++11, Fortran; є підтримка OpenMP)
  • OpenMPI 1.6.4
  • hwloc 1.6.2
  • OpenBLAS 0.2.6
  • FFTW 3.3.3
  • ScaLAPACK 2.0.2

Завантажте модуль середовища goolf наступною командою:

[user@n001 ~]$ module load goolf/1.4.10

Використання GCC та MVAPICH2 (набір gmvolf)

GCC та OpenMPI входять до набору gmvolf/1.7.12rc1. Цей набір містить:

  • GCC 4.7.3 (мови C, C++, C++11, Fortran; є підтримка OpenMP)
  • MVAPICH2 1.9rc1
  • OpenBLAS 0.2.6
  • FFTW 3.3.3
  • ScaLAPACK 2.0.2

Завантажте модуль середовища gmvolf наступною командою:

[user@n001 ~]$ module load gmvolf/1.7.12rc1

Використання Clang та OpenMPI (набір cgoolf)

Clang та OpenMPI входять до набору cgoolf/1.1.7. Цей набір містить:

  • Clang 3.2 (мови C, C++, C++11; немає підтримки OpenMP)
  • GFortran 4.7.3 (мова Fortran; є підтримка OpenMP)
  • OpenMPI 1.6.4
  • hwloc 1.6.2
  • OpenBLAS 0.2.6
  • FFTW 3.3.3
  • ScaLAPACK 2.0.2

Завантажте модуль середовища cgoolf наступною командою:

[user@n001 ~]$ module load cgoolf/1.1.7

Використання Clang та MVAPICH2 (набір cgmvolf)

Clang та OpenMPI входять до набору cgmvolf/1.1.12rc1. Цей набір містить:

  • Clang 3.2 (мови C, C++, C++11; немає підтримки OpenMP)
  • GFortran 4.7.3 (мова Fortran; є підтримка OpenMP)
  • MVAPICH2 1.9rc1
  • OpenBLAS 0.2.6
  • FFTW 3.3.3
  • ScaLAPACK 2.0.2

Завантажте модуль середовища cgmvolf наступною командою:

[user@n001 ~]$ module load cgmvolf/1.1.12rc1

Використання Clang та MPICH (набір cgmpolf)

Clang та MPICH входять до набору cgmpolf/1.1.6. Цей набір містить:

  • Clang 3.2 (мови C, C++, C++11; немає підтримки OpenMP)
  • GFortran 4.7.3 (мова Fortran; є підтримка OpenMP)
  • MPICH 3.0.3
  • hwloc 1.6.2
  • OpenBLAS 0.2.6
  • FFTW 3.3.3
  • ScaLAPACK 2.0.2

Завантажте модуль середовища cgmpolf наступною командою:

[user@n001 ~]$ module load cgmpolf/1.1.6

Компіляція MPI програм (OpenMPI, MVAPICH2 або MPICH)

Спочатку завантажте обраний модуль середовища.

[user@n001 ~]$ module load ???/???

В залежності від мови програмування, компіляція виконується за допомогою одного з наступних компіляторів:

  • Мова C: C89, C99, C11: mpicc (передайте одну з опцій -std=c89, -std=c99, -std=c11 для вибору версії стандарту).

  • Мова C++: C++98, C++03, C++11: mpic++ (передайте одну з опцій -std=c++98, -std=c++03, -std=c++11 для вибору версії стандарту).

  • Мова Fortran: mpif77 або mpif90.

Наприклад:

[user@n001 ~]$ mpicc -std=c11 -W -Wall -O2 ім'я_файлу_1.c ім'я_файлу_2.c -o program

Де ім'я_файлу_1.c, ім'я_файлу_2.c -- імена всіх файлів, що входять до складу програми; program -- ім'я для виконуваного файлу програми, що створить компілятор.

Запуск MPI програм (OpenMPI, MVAPICH2 або MPICH)

Спочатку завантажте обраний модуль середовища.

[user@n001 ~]$ module load ???/???

Для запуску програм, що використовують OpenMPI, MVAPICH2 або MPICH, необхідно користуватись командою mpirun або mpiexec (немає різниці).

УВАГА! Не слід передавати команді mpirun чи mpiexec параметр -n або -np для того, щоб вказати кількість ядер. OpenMPI, MVAPICH2 та MPICH інтегровано з системою управління ресурсами SLURM, і ця інформація буде передана автоматично.

Компіляція програм, що використовують OpenMP, за допомогою GCC

Спочатку завантажте модуль середовища goolf/1.4.10:

[user@n001 ~]$ module load goolf/1.4.10

В залежності від мови програмування, компіляція виконується за допомогою одного з наступних компіляторів:

  • Мова C: C89, C99, C11: gcc (передайте одну з опцій -std=c89, -std=c99, -std=c11 для вибору версії стандарту).

  • Мова C++: C++98, C++03, C++11: g++ (передайте одну з опцій -std=c++98, -std=c++03, -std=c++11 для вибору версії стандарту).

  • Мова Fortran: gfortran.

Щоб увімкнути підтримку OpenMP, необхідно передати компілятору опцію -fopenmp.

Наприклад:

[user@n001 ~]$ mpicc -std=c11 -fopenmp -W -Wall -O2 ім'я_файлу_1.c ім'я_файлу_2.c -o program

Використання GDB

В залежності від модуля середовища, в якому міститься обраний компілятор, вам необхідно завантажити відповідний модуль GDB:

  • для goolf/1.4.10 -- GDB/7.5.1-goolf-1.4.10;

  • для gmvolf/1.7.12rc1 -- GDB/7.5.1-gmvolf-1.7.12rc1;

  • для cgoolf/1.1.7 -- GDB/7.5.1-cgoolf-1.1.7;

  • для cgmvolf/1.1.12rc1 -- GDB/7.5.1-cgmvolf-1.1.12rc1;

  • для cgmpolf/1.1.6 -- GDB/7.5.1-cgmpolf-1.1.6.

Виконайте команду:

[user@n001 ~]$ module load GDB/???

Використання Java

Завантажте модуль середовища Java наступною командою:

[user@n001 ~]$ module load Java/1.7.0_21

або просто:

[user@n001 ~]$ module load Java

Також доступні модулі середовища ant та JUnit. Щоб побачити повний список доступних модулів та їх версій, виконайте команду module avail.