Возьмем в качестве примера программу решения СЛАУ методом Гаусса (см. приложение).
Шаг 1. (создание проекта)
Шаг 2. (обработка кода)Любой проект, хоть и не большой, желательно чтобы находился в своей директории. Поэтому создаем какую-нибудь директорию, например, gauss и помещаем туда файл M_Gaus1.c. Если в проекте есть несколько файлов, директорий, все они должны быть собраны в одной папке
Шаг 3. (обработка кода)Если это необходимо, в код вносятся инструкции на языке отладки для более детального анализа программы. Мы выполним только разметку кода, указав где делается прямой и обратный ход в методе Гаусса. Во взятом примере это уже сделано. Стоит отметить, что все инструкции языка отладки являются комментариями языка программирования и игнорируются компилятором.
Шаг 4. (Компиляция)После того, как сделаны все указания по сбору отладочной информации необходимо запустить препроцессор с тем, чтобы произвести замену инструкций языка отладки на инструкции языка программирования и заменить вызовы MPI, сбор информации о которых производится. Для этого необходимо выполнить команду
./gepard_pars.pl _путь_до_проекта_/gauss В результате исполнения этой команды появится директория gaus.gprd, в которой помимо файлов проекта появится header файл и файл базы данных проекта (.fdb).
Шаг 5. (Исполнение программы)Компиляция программы выполняется обычным образом. На этапе линковки программы необходимо подключить библиотеку mon.a В нашем случае компиляция может быть выполнена командой
mpicc -o M_Gaus1 M_Gaus1.c _путь_до_библиотеки/mon.a
Шаг 6. (Анализ)Исполнение полученного в результате компиляции файла производится обычным способом:
mpirun -np 4 M_Gaus1 В данном случае запуск должен производиться строго на 4 виртуальных процессорах (особенность программы. Не отладчика!)
После исполнения программы в директории, откуда производился запуск, появится 4 файла с отладочной информацией, по одному на каждый виртуальный процессор. Имя файла строится по правилу: _имя программы_.grd._ранк_процесса_. В нашем случае это файлы: M_Gaus1.grd.0, M_Gaus1.grd.1, M_Gaus1.grd.2, M_Gaus1.grd.3. Для анализа необходимо объединить все эти файлы в один. Например, командой
cat M_Gaus1.grd.* > M_Gaus1.grd после чего можно используя программу gprd_ta производить анализ полученных данных. Для того, чтобы программа анализа могла представлять более полную информацию, необходимо файл базы данных проекта (.fdb) переименовать в M_Gaus1.fdb и поместить его в директорию с файлом с отладочной информацией.
Вывод списка секций
arom> gprd_ta -b M_Gaus1.grd Valide section(s): 0 GPRD_MAIN_SECT 1 right_move 2 back_moveСекция GPRD_MAIN_SECT присутствует всегда. Вся программаВывод списка функций в секции right_move
arom> gprd_ta -f -B 1 M_Gaus1.grd Function stats. Section "right_move" Process rank 0 30 MPI_Send Process rank 1 10 MPI_Recv 20 MPI_Send Process rank 2 20 MPI_Recv 10 MPI_Send Process rank 3 30 MPI_RecvВывод статистики по приему-передачи сообщений в секции back_move
arom> gprd_ta -s -B 1 M_Gaus1.grd Send/Reciev table. "right_move" section | 0 | 1 | 2 | 3 | ----+---------+---------+---------+---------+ 0| 0/ 0| 10/ 0| 10/ 0| 10/ 0| 1| 0/ 10| 0/ 0| 10/ 0| 10/ 0| 2| 0/ 10| 0/ 10| 0/ 0| 10/ 0| 3| 0/ 10| 0/ 10| 0/ 10| 0/ 0|