Архив документации OpenNet.ru /
Раздел "Программирование, языки" /
Индекс
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.
Вы можете встраивать эти обрамления вручную в Ваше приложение, что потребует
трех этапов в построении Вашего приложения:
- Создание исходного кода для требуемого обрамления с помощью
wrappergen. Это разовая задача.
- Компиляция кода обрамления. Убедитесь в наличии необходимых
параметров строки компиляции. `vismess' и `logging' требуют
библиотеку MPE (`-lmpe'), а определение оболочки `vismess' требует
наличия DMPE_GRAPHICS во флагах компилятора С.
- Компоновка скомпилированного кода оболочки, профилирующей версии
библиотеки mpi, и любых других необходимых библиотек (`vismess' требует
X) с Вашим приложением. Нужной командой будет:
$ (CLINKER) <объектные файлы приложения...>
<объектный код обрамления>
<другие необходимые библиотеки (-lmpe)>
<профилирующая бибилотека mpi (-lpmpich)>
<стандартная библиотека mpi (-lmpi)>
Чтобы упростить ее, были созданы несколько примеров разделов make-файлов в
каталоге
`mpe/profiling/lib':
Makefile.timing - оболочка timing
Makefile.logging - оболочка logging
Makefile.vismess - оболочка animated messages
Makefile.allprof - оболочка timing, logging, and vismess
Для использования этих фрагментов make-файлов:
- (Необязательно) Добавьте в список зависимостей Вашего приложения
$(PROF_OBJ)
myapp: myapp.o $(PROF_OBJ)
- Добавьте $(PROF_FLG) в строку компиляции CFLAGS:
CFLAGS = -O $(PROF_FLG)
- Добавьте $(PROF_LIB) в Ваш путь компоновки, после объектного кода
Вашего приложения, но перед главной библиотекой MPI:
$(CLINKER) myapp.o -L$(MPIR_HOME)/lib $(PROF_LIB)
-lmpich
- (Необязательно) Добавьте $(PROF_CLN) в Вашу мишень clean:
rm -f *.o * myapp $(PROF_CLN)
- Включите нужный фрагмент make-файла в Ваш make-файл:
include $(MPIR_HOME)/mpe/profiling/lib/Makefile.logging
Alex Otwagin
2002-12-16
Архив документации на OpenNet.ru