Генератор профилирующих обрамлений (wrappergen) создан для дополнения
профилирующего интерфейса MPI. Он позволяет пользователю создавать любое
количество мета-обрамлений, котороые могут применяться к любому количеству
функций MPI. Обрамления могут находиться в отдельных файлах, и могут корректно
вкладываться друг в друга, так что в отдельной функции может существовать более
одного уровня профилирования.
wrappergen использует три источника ввода:
Список функций, для которых генерируются обрамления.
Описания профилируемых функций. Для достижения скорости и простоты
разбора используется специальный формат. См. файл `proto'. Функции MPI-1
находятся в `mpi_proto'. Функции ввода-вывода из MPI-2 находятся в
`mpiio_proto'.
Определение обрамления.
Список функций представляет собой просто файл имен функций, разделенных
пробелами. Если он опущен, любые макросы forallfn или fnall будут
расширены на каждую функцию в файле определений.
Если описания функций отсутствуют, используются те, которые находятся в
`mpi_proto' (это множество с определением PROTO_FILE в
`Makefile').
Опции wrappergen:
-w file
Добавить файл для использования в списке файлов
обрамлений.
-f file
Файл содержит список имен функций для профилирования,
разделенный пробелами.
-p file
Файл содержит определения прототипов специальных функций.
-o file
Направить вывод в файл.
Например, для оценки времени каждой операции ввода-вывода, используйте
cd mpe/profiling/lib
../wrappergen/wrappergen -p ../wrappergen/mpiio_proto
-w time_wrappers.w > time_io.c
Результирующий код требует только версию MPI_Finalize для вывода
временных величин. Она может быть написана либо добавлением MPI_Finalize
и MPI_Init к `mpiio_proto', либо через простое редактирование
версии, полученной при использовании `mpi_proto' вместо
`mpiio_proto'.
Subsections