/ Компиляция программ / Библиотеки подпрограмм /Компиляция программ
/ Отладка программ / Профилирование программ /
/ Средства разработки параллельных программ /
/ Средства визуализации данных /
gcc - компилятор языка СКомпиляторы оптимизирующие, поддерживается три уровня оптимизации (опции -O, -O2, -O3 ). Эти компиляторы рекомендуется использовать для небольших программ и компиляции приложений, распространяемых в рамках проекта GNU. Они не могут подключать высокооптимизированные библиотеки из Sun WorkShop. Для отладки программ следует использовать отладчик gdb. Для высокопроизводительных вычислений рекомендуется использовать компиляторы из пакета Sun WorkShop.
g77 - компилятор языка Фортран77
g++ - компилятор языка С++
cc - компилятор языка СКомпиляторы оптимизирующие, поддерживается пять уровней оптимизации (опции -O1, -O2, -O3, -O4, -O5; задание опции -O соответствует уровню -O3 ). Сочетание опций -fast -On, задает режим максимального ускорения программы на соответствующем уровне оптимизации. Для отлаженных программ включение оптимизации обязательно. В большинстве случаев ускорение работы программы может достигать 2-3 раз.
f77 - компилятор языка Фортран77
f90 - компилятор языка Фортран90
СС - компилятор языка С++
Удобным средством поддержки больших проектов, когда текст программы разбит на несколько файлов, является утилита make. Она ищет в текущем каталоге файлы makefile или Makefile, которые представляют собой инструкции, описывающие, какие действия должны быть выполнены для достижения конечной цели проекта (обычно такой целью является получение исполнимого файла программы). Имеется краткое описание этой утилиты на русском языке (см. здесь). Пример простого Makefile, пригодного для компиляции программ с языков С и Фортран77 (в том числе и на смеси языков) на компьютере SUN см. здесь. Разработаны универсальные Makefiles для компиляции программ на любой из высокопроизводительных систем (для языков Фортран, С, С++). В этих Makefiles следует только выбрать архитектуру системы, на которой будет выполняться компиляция программы, и изменить значения переменных PROG (имя программы) и OBJ (список файлов, содержащих вашу программу с расширением .о).
Кроме перечисленных компиляторов на компьютерах SUN к средствам разработки программ можно отнести командные языки (sh, ksh,csh,tcsh), а также высокоуровневые интерпретирующие языки Perl и Tcl/Tk.
Библиотеки подпрограмм ускоряют разработку программ и позволяют получить на системах максимальную производительность. Как правило, высокие результаты тестов производительности, публикуемые производителями вычислительных систем, достигаются только при использовании высокооптимизированных библиотек.
1. Sun Performance Library - является составной частью пакета Sun WorkShop и не может использоваться с другими компиляторами. В ее состав входит несколько стандартных библиотек, которые можно найти практически на всех высокопроизводительных системах (BLAS, LINPACK, LAPACK - для решения задач линейной алгебры и FFTPACK - быстрое преобразование Фурье). Может использоваться со всеми компиляторами из состава Sun WorkShop. Библиотека подключается особым образом, с помощью опции -xlic_lib=sunperf. Например:
f77 -O -o progname progname.f -xlic_lib=sunperf2. ATLAS (Automatically Tuned Linear Algebra Software) - новая версия самонастраивающейся библиотеки BLAS (Basic Linear Algebra Subprograms). Подпрограммы этой библиотеки реализуют базовые операции векторной и матричной алгебры и широко используются совместно с другими библиотеками. Библиотека компилировалась компиляторами Sun WorkShop, поэтому может использоваться только с ними. Имеются интерфейсы к языкам C и Фортран. Совместно с библиотекой LAPACK (свободно распространяемой и соответственно не оптимизированной) демонстрирует более высокую производительность, чем фирменная Sun Performance Library. Подключение библиотеки:
сс -fast -O4 -o progname progname.c -lcblas -latlas -на языке С
f77 -fast -O4 -o progname progname.f -lf77blas -latlas -на языке Фортран3. LAPACK (Linear Algebra PACKage) - свободно распространяемая библиотека, написанная на языке Фортран77. Содержит множество подпрограмм для решения стандартных задач линейной алгебры. Требует подключения библиотеки BLAS (рекомендуется использовать ATLAS). Хорошее описание подпрограмм библиотеки LAPACK в документации по Sun Performance Library. Подключение библиотеки:
f77 -fast -O4 -o progname progname.f -llapack -lf77blas -latlas4. SLATEC - общая математическая библиотека. Язык Фортран77. Подключение -lslatec.
5. ARPACK (ARnoldi PACKage) - библиотека подпрограмм на языке Фортран77 для нахождения собственных значений и собственных векторов разреженных матриц большого размера. Она может использоваться только компилятором f77 из пакета Sun WorkShop, и требует подключения библиотек LAPACK и BLAS (рекомендуется использовать ATLAS). Подключение библиотеки:
f77 -fast -O4 -o progname progname.f -larpack -llapack -lf77blas -latlas
6.FFTW
- быстрое преобразование Фурье
Отладка программ. В зависимости от
используемых компиляторов, для отладки программ следует использовать либо
отладчик gdb
(компиляторы GNU), либо отладчик dbx
(компиляторы SUN). Подробное описание отладчика gdb можно найти
здесь,
а описание dbx в соответствующем разделе документации Sun WorkShop
( см.
здесь
). Для работы с отладчиком программы должны быть откомпилированы с опцией
-g
.
Внимание! По
умолчанию ни компиляторы из пакета GNU, ни компиляторы Sun WorkShop не
останавливают выполнение программы при возникновении прерываний процессора
по делению на нуль, переполнению разрядной сетки и др. Результату присваивается
значение Infinity и программа продолжает работать с непредсказуемым результатом.
Однако компиляторы Sun WorkShop позволяют включить реакцию на сигналы процессора
с помощью специальной опции: -ftrap=common . В компиляторах GNU
такая возможность отутствует. Большую помощь отладчики могут оказать в
тех случаях, когда происходит прерывание программы по неизвестной причине
с диагностикой - Abort (core dumped). Правила работы с отладчиками весьма
схожи. Рассмотрим простейший сеанс работы с отладчиком dbx:
1. Компилируем программу в отладочном режиме
f77 -g -ftrap=common -o progname progname.f2. Запускаем программу через отладчик
dbx progname ,при этом выдается довольно объемная шапка с различными подсказками. Листаем ее клавишей <пробел>, пока не появится приглашение на ввод команды.
print varНекоторую осторожность следует соблюдать при печати массивов. Если массив большой, то его выдача может занять очень много времени. Чтобы избежать этого, следует печатать диапазон элементов
print vec(3:11)4. Выходим из отладчика (команда quit).
Имеется очень хороший графический интерфейс для работы с отладчиками - ddd, однако для работы с ним необходима среда X-windows. Он поддерживает работу со множеством отладчиков, поэтому его нужно предварительно настроить на определенный тип. Запускается он командой ddd &. Затем в разделе меню Edit выбирается пункт Preferences. После нажатия на этот пункт появится новое окно, в котором в разделе Startup и следует установить требуемый отладчик. Для отладки программы с помощью этого приложения следует набрать команду:
ddd progname &В этом случае, в центральном окне приложения сразу появится текст вашей головной программы. Порядок работы с отладчиком интуитивно ясен, он очень похож на интегрированные среды ОС Windows. Это приложение позволяет легко, с помощью мыши, расставлять точки останова и просматривать значения переменных наведением на них указателя мыши. В нижнем окне остается доступным командный режим работы с отладчиком.
Профилирование программ. Профилирование
программ предоставляет простой и удобный механизм исследования выполнения
программы с целью ее оптимизациию. В ОС Solaris для этих целей используются
стандартные Unix утилиты:
prof - построение плоского профиля программы, подсчитывающего
количество вызовов каждой функции и общее время их выполнения. Программа
должна компилироваться с опцией -p .
gprof - построение графа выполнения программы. Граф вызовов
показывает, для каждой функции, какие функции ее вызывали, какие функции
вызывала она сама и сколько раз. Также здесь показано, сколько времени
было затрачено на выполнение подпрограмм в каждой функции. Программа должна
компилироваться с опцией -pg.
Итак, для построения плоского профиля следует:
1. Откомпилировать программу в режиме профилирования
cc -p -o prog prog.c
f77 -p -o prog
prog.f
2. Запустить программу на исполнение. После окончания
выполнения программы будет создан файл mon.out.
3. Запустить команду prof для генерации отчета
prof prog
Аналогичным образом выполняется построение графа вызовов.
Более детальную информацию смотри здесь
Средства разработки параллельных программ
-autopar - автоматическое распараллеливаниеПример команды компиляции программы с автоматическим распараллеливанием:
-explicitpar - явное распараллеливание с помощью директив в исходном тексте программ
-parallel - комбинация обоих режимов
f77 -fast -O4 -autopar -o progname progname.fРаспараллеливанию подвергаются только циклы DO, в которых компилятор не обнаружил зависимости по шагам.
mpif77 -fast -O4 -o progname progname.f - на языке Фортран
mpicc -fast -O4 -o progname progname.c - на языке СЗдесь mpif77 и mpicc - командные файлы, вызывающие стандартные компиляторы с настройкой путей к необходимым include-файлам и подключением MPI библиотеки. Возможно прямое использование компиляторов, но тогда библиотеку нужно подключать явным образом:
f77 -fast -O4 -I/usr/local/mpi/include -o prog prog.f -lmpichВсю необходимую информацию по MPI можно найти на специальной странице, посвященной MPI, и в части II методического пособия "Многопроцессорные системы и параллельное программирование".
Библиотеки параллельных подпрограмм, базирующиеся на коммуникационной библиотеке MPI.
1. ScaLAPACK - Scalable LAPACK параллельная версия библиотеки LAPACK. Включает в себя широкий набор подпрограмм для решения стандартных задач линейной алгебры. Имеется методическое пособие по работе с библиотекой ( см. здесь). На компьютерах SUN требуетcя подключение вспомогательных библиотек (BLACS, BLAS, MPI):
f77 -O -o prog prog.f -lscalapack -lblacsF -lblacs -lblacsC -lf77blas -latlas -lmpich2. Aztec - библиотека параллельных подпрограмм для решения больших систем линейных алгебраических уравнений с разреженными матрицами итерационными методами Крылова. Имеется методическое пособие по работе с библиотекой ( см. здесь). Используется совместно с библиотеками BLAS и MPI:
f77 -O -o prog prog.f -laztec -lmpich -lf77blas -latlas3. P_ARPACK - параллельная версия библиотеки подпрограмм ARPACK нахождения собственных значений и собственных векторов разреженных матриц большого размера. Используется только компилятором f77 из пакета Sun WorkShop совместно с библиотеками LAPACK, BLAS (рекомендуется использовать ATLAS) и MPI. Подключение библиотеки:
f77 -fast -O4 -o progname progname.f -lparpack -llapack -lf77blas -latlas -lmpich4.FFTW - MPI версия быстрого преобразования Фурье
1. Приложения
gnuplot - терминальное
интерактивное приложение в среде ОС UNIX. Позволяет выполнять построение
2-х и 3-х мерных графиков функций. Функции могут задаваться как в аналитическом
виде, так и в виде табличных данных, хранящихся в файлах. Набор команд
для построения некоторого графика (или группы графиков) может быть записан
в файл и выполнен одной командой:
gnuplot graph,где graph - имя командного файла (скрипта) для gnuplot. Пример такого командного файла для построения графиков 4-х фунций, каждая из которых хранится в виде отдельного столбца в файле out.dat см. здесь.
Scilab (свободно распространяемая версия пакета Matlab) - математический пакет , включающий в себя мощную поддержку 2-х и 3-х мерной графики.
OpenDX - мощное графическое приложение визуализации данных, разработанное IBM. Запускается командой
dxИмеет встроенную обучающую систему.
2. Библиотеки - служат для написания собственных программ визуализации
данных.
OpenGL
- библиотека, ставшая стандартом для построения 3-х мерных графических
изображений. В настоящее время входит в состав программного обеспечения
практически всех операционных систем. Библиотека является платформенно
независимой и поэтому в нее не входят фунции взаимодействия с устройствами
ввода-вывода. Чаще всего она используется совместно с другими интерфейсными
библиотеками - GLUT или AUX. На компьютерах SUN установлено два комплекта
библиотеки OpenGL
- библиотека, поставляемая фирмой Sun Microsystems (-lGLU, -lGL работает
очень быстро, но только с экраном консоли) и бесплатно распростаняемая
версия Mesa-2.4 (-lMesaGLU, -lMesaGL более медленная, но позволяет
выводить результаты на экран удаленного компьютера). Обе библиотеки ориентированы
в основном на работу с языком C, но для библиотеки Mesa имеется интерфейс
к языкам Фортран77 и Фортран90, причем для второго случая поддержка более
полная. Компиляция программ возможна как компиляторами сс, так gcc:
cc -O -o prog prog.c -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm
cc -O -o prog prog.c -lglut -lMesaGLU -lMesaGL -lXmu -lXi -lXext -lX11 -lm
f77 -O -o example -I/usr/local/include example.f \ -lfglut -lfGLU -lfGL -lglut -lMesaGLU -lMesaGL \ -lXaw -lXt -lXmu -lXi -lXext -lX11
f90 -O -o prog90 -M/usr/local/include/GL prog.f90 \ -lf90glut -lf90GLU -lf90GL -lglut -lGLU -lMesaGL \ -lXaw -lXt -lXmu -lXi -lXext -lX11При написании программ на Фортране90 в текстах программ должны быть подключены модули:
PGPLOT - высокоуровневая библиотека для построения 2-х и 3-х мерных графиков, контурных линий, отображения векторных и скалярных полей. Поддерживает множество устройств вывода, в том числе: дисплей компьютера (при наличии Х-сервера), графические файлы (GIF,PS и др.) и многое другое. На экран дисплея воэможен вывод динамических изображений. Библиотека написана на Фортране ( кроме драйверных подпрограмм) и ориентирована в основном на Фортран, однако поддеживаются интерфейсы к С, Tcl/Tk и MOTIF. Компиляция программ:
Фортран
f77 -O -o prog prog.f -lpgplot -lX11С
cc -O -c -I/usr/local/include cpgdemo.c
f77 -o cpgdemo cpgdemo.o -lcpgplot -lpgplot -lX11MOTIF
cc -O -c -I/usr/local/include pgmdemo.c
f77 -o pgmdemo pgmdemo.o -lXmPgplot -lcpgplot -lpgplot -lXm -lXt -lX11Tcl/Tk
cc -O -c -I/usr/local/include pgtkdemo.c
f77 -o pgtkdemo pgtkdemo.o -ltkpgplot -lcpgplot -lpgplot -ltk8.0 -ltcl8.0 -lX11Обращаем внимание, что программы на C собираются в два приема - сначала компилятором С получаем объектный файл, из которого с помощью фортрановского компилятора изготавливаем исполнимый файл. Предлагается образец Makefile для компиляции всех демонстрационных программ пакета PGPLOT.
Tcl/Tk - интерпретирующий язык высокого уровня, позволяющий легко создавать оконные интерфейсы приложений.