|
Определено два уровня сбора отладочной информации. По-умолчанию собирается информация только об операциях коммуникаций между процессами (имя MPI функции, ранк процесса источника/приемника сообщения, время исполнения и позиция в коде). Если этого не достаточно для анализа поведения программы, пользователь может указать дополнительную информацию для сбора. Указания делаются с помощью языка отладки. Языка отладки состоит из инструкций, которые вставляются в исходный код программы. Каждая инструкция является комментарием языка программирования (в данном случае С) и имеет следующий вид: Подобный подход позволяет не переписывать код программы целиком. Пользователь лишь расставляет комментарии, понятные только препроцессору. Так, например, чтобы посчитать количества итераций цикла, пользователь должен поместить следующую инструкцию в начало тела цикла: Ожидаемая система межпроцессного взаимодействия также может быть описана с тем, чтобы отладчик произвел ее сравнение с тем, что получилось при исполнении программы. Система коммуникаций задает отношение на множестве процессов. Отношение процессов задается множеством пар вида (ранк источника, ранк приемника). Для описания отношений в языке отладки предусмотрено ряд инструкций. Пример выше показывает способ указания того, что iый процесс может отправлять сообщения следующему и предыдущему процессу в некой линейке процессов. Система коммуникаций динамична и может меняться в процессе исполнения программы. Также пользователь может переопределять и ожидаемую систему межпроцессного взаимодействия. Препроцессор распознает инструкции языка отладки и заменяет их соответствующими выражениями языка программирования. Также заменяются функции MPI функциями-обертками. Каждая функция-обертка имеет дополнительный параметр - позиция функции в исходном коде программы. Полное описание языка отладки с примерами можно скачать со страници downloads в разделе "Документация". |