next up previous contents
Next: Отладка программ MPI встроенными Up: Библиотека полезных расширений MPE Previous: Автоматическая генерация профилирующих библиотек   Contents

Инструменты управления профилирующей библиотекой

Простые профилирующие оболочки для mpich распространяются как код определения оболочки. Этот код пропускается через утилиту wrappergen для генерации кода С (см. разд. 5.7). Любое количество определений оболочки можно использовать совместно, так что возможен любой уровень вложенности профилирующих обрамлений при использовании wrappergen.

Несколько примеров определений обрамления представлены в mpich:

timing
Использует MPI_Wtime () для определения общего количества вызовов каждой функции MPI, и времени, затраченного на эту функцию. Она просто проверяет таймер перед и после вызова функции. Она не отнимает время, потраченное на вызов других функций.
logging
Создает log-файл для всех вызовов функций pt2pt.
vismess
Создает окно X, которое выдает простую визуализацию всех прошедших сообщений.
allprof
Все вышеперечисленное. Этот пример показывает, как можно комбинировать профилирующие библиотеки.
Замечание: Эти обрамления не используют никаких специальных возможностей mpich, кроме графики и регистрации MPE в `vismess' и `logging' соответственно. Они должны работать с любой реализацией MPI.

Вы можете встраивать эти обрамления вручную в Ваше приложение, что потребует трех этапов в построении Вашего приложения:

Чтобы упростить ее, были созданы несколько примеров разделов make-файлов в каталоге
`mpe/profiling/lib':
Makefile.timing - оболочка timing
Makefile.logging - оболочка logging
Makefile.vismess - оболочка animated messages
Makefile.allprof - оболочка timing, logging, and vismess
Для использования этих фрагментов make-файлов:
  1. (Необязательно) Добавьте в список зависимостей Вашего приложения
    $(PROF_OBJ)
    myapp: myapp.o $(PROF_OBJ)
  2. Добавьте $(PROF_FLG) в строку компиляции CFLAGS:
    CFLAGS = -O $(PROF_FLG)
  3. Добавьте $(PROF_LIB) в Ваш путь компоновки, после объектного кода Вашего приложения, но перед главной библиотекой MPI:
    $(CLINKER) myapp.o -L$(MPIR_HOME)/lib $(PROF_LIB) -lmpich
  4. (Необязательно) Добавьте $(PROF_CLN) в Вашу мишень clean:
    rm -f *.o *  myapp $(PROF_CLN)
  5. Включите нужный фрагмент make-файла в Ваш make-файл:
    include $(MPIR_HOME)/mpe/profiling/lib/Makefile.logging


Alex Otwagin 2002-12-16