Можете попробовать, посмотрите, как это даст.Предположим, вы используете openmpi.Создайте следующее как скрипт с именем mywrapper.sh
#!/bin/bash
prefix="gmon_${OMPI_COMM_WORLD_RANK}.out"
GMON_OUT_PREFIX=$prefix $*
И запустите ваш код с
mpif90 -o mycode.exe -pg mycode.f90
mpirun -np 4 mywrapper.sh ./mycode.exe
Тестовый код профилирования кода MPI (я использую C, но FORTRAN должен работать без разницы):
//file x.c
#include <mpi.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int rank=9;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("Hello from rank=%d!\n", rank);
MPI_Finalize();
return 0;
}
Команда для компиляции и запуска теста
#!/bin/bash
mpicc -pg x.c
mpirun --hostfile hostfile mywrapper.sh ./a.out
Для простоты теста hostfile использует только локальный хост.Вывод команды:
Hello from rank=1!
Hello from rank=2!
Hello from rank=0!
Затем вы получите файл gprof, если не можете, это проблема конфигурации mpi.
.
├── a.out
├── gmon_0.out.2690
├── gmon_1.out.2692
├── gmon_2.out.2693