Форма поиска

 

СРЕДЫ ПРОГРАММИРОВАНИЯ

ОБЩАЯ ИНФОРМАЦИЯ

  Всем пользователям Вычислительного центра СПбГУ доступны компиляторы Intel, GNU и PGI для языков C, C++ и Fortran.

  C C++ Fortran
Intel icc icpc ifort
GCC gcc g++ gfortran
PGI pgcc pgc++ pgfortran

Внимание!
Коллекция GNU-компиляторов (GCC) доступна на виртуальных машинах Linux по умолчанию. На платформе CentOS 7 последняя доступная версия: GCC 7.5, а для CentOS 6 - 7.5. Для установки более новых версий рекомендуется использовать пакеты Devtoolset (доступны через пакетный менеджер yum)

Чтобы запустить компиляторы от Intel, требуется выполнить команду:

source /usr/local/ipsxece/ipsxece_2018_u3/bin/compilervars.sh intel64

Чтобы запустить GNU-компиляторы, требуется выполнить команду:

source /usr/local/hpc/etc/gcc/7.5.0.bashrc

Для каждого из компиляторов есть справочные страницы.

Параллельное программирование OpenMP

Чтобы скомпилировать программы OpenMP, вы должны добавить следующий флаг компиляции:

Intel

-qopenmp

пример: icc -qopenmp myprog.c

GCC

-fopenmp

пример: gcc -fopenmp myprog.c

PGI

-mp

пример: pgcc -mp myprog.c

Полезная информация об использовании OpenMP доступна на нашем сайте.

Параллельное программирование MPI

Поддерживаются три типа MPI: Intel MPI, Open MPI и MPICH2.

Мы рекомендуем использовать в вашей работе быстрый и оптимизированный Intel MPI

Для компиляции программы MPI требуется выполнить два шага:

1) Загрузите правильные переменные окружения для нужного компилятора и для определенного типа MPI, который вы хотите использовать. Например, для Intel MPI, выполните команды:

$ source /usr/local/ipsxece/ipsxece_2018_u3/bin/compilervars.sh intel64
$ source /usr/local/ipsxece/ipsxece_2018_u3/impi/2018.3.222/bin64/mpivars.sh

2) Выполните соответствующую команду оболочки MPI для компиляции вашей программы.

Три типа MPI могут работать по-разному и по разным проблемам или в разных средах программирования. Если у вас возникли проблемы с одним типом MPI, попробуйте использовать другой тип.

Команды компилятора для программ MPI:

  C C++ Fortran
Intel MPI mpiicc mpiicpc mpiifort
OpenMPI mpicc mpicxx mpifort
MPICH2 mpicc mpicxx mpifort

Полезная информация об использовании MPI представлена на нашем сайте. 

Другие языки

В нашем Вычислительном центре доступны и другие языки программирования: 

- Java
- R
Отладка и анализ производительности
 
1) Отладка
 
Отладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. 
GDB (GNU Debugger) — переносимый отладчик проекта GNU, который работает на многих UNIX-подобных системах и умеет производить отладку многих языков программирования, включая Си, C++, Free Pascal, FreeBASIC, Ada и Фортран. GDB — свободное программное обеспечение, распространяемое по лицензии GPL.
 
$ cat minimal.c
  1 int main()
  2 {
  3    int i = 1337;
  4    return 0;
  5 }
$
$ gcc -g minimal.c -o minimal
$ gdb minimal
$
$ # Поставим точку останова в функции main и запустим программу
$ (gdb) break main
$ (gdb) run
$
$ # Программа остановилась на третьей строчке, как раз там, где инициализируется переменная i. 
$ # Выполним текущую строку кода, воспользовавшись командой next
$ (gdb) next
$
$ # Начетаем значение переменной int
$ (gdb) print i
$ $4 = 1337
 
 
 
2) Профилирование
 
Профилирование позволяет вам изучить, где ваша программа расходует свое время и какие функции вызывали другие функции, пока программа исполнялась. Эта информация может указать вам на ту часть программы, которая исполняется медленнее, чем вы ожидали, и которая может быть кандидатом на переписывание, чтобы ускорить выполнение программы. Эта информация также подскажет вам, какие функции вызывались чаще или реже, чем вы ожидали. Это может помочь вам отметить ошибки, которые иначе остались бы незамеченными.
 
Gprof - стандартный профилятор от GNU. 
 
Профилирование включается опцией "-pg" во время компиляции.
 
$ GPROF_TEST_PATH=/usr/local/hpc/testfiles/gprof/
$
$ gcc -Wall -std=c99 $GPROF_TEST_PATH/example1.c -pg -o example1
$
$ ./example1
$
$ gprof example1 gmon.out -p
$
$ # Результаты работы таковы:
  %   cumulative   self              self     total
 time   seconds   seconds    calls  ms/call  ms/call  name
 91.53      0.69     0.69        1   686.48   686.48  func3
  9.42      0.76     0.07        1    70.67   757.14  func1
  0.00      0.76     0.00        1     0.00   686.48  func2
  0.00      0.76     0.00        1     0.00     0.00  func4
$
 
 
Intel VTune
Intel VTune Performance Analyzer (анализатор производительности) — коммерческое приложение для анализа производительности программ для компьютеров на базе x86-процессоров, причём программа имеет как графический интерфейс пользователя, так и поддержку командной строки. Программа доступна для Linux и для Microsoft Windows.
 
Запуск в Linux:
$ source /usr/local/ipsxece/ipsxece_2018_u3/vtune_amplifier/amplxe-vars.sh x86_64
$ amplxe-gui