我可以使用gfortran编译器来编译我的Openmpi代码。我给出的编译语法是:
mpif90 -o mycode.exe mycode.f90
mpirun -np 4 ./mycode.exe
有效。现在,我想使用Gprof分析我的代码。我知道我应该添加-pg标志,但是如果我在mpif90之后放它,它就会崩溃。我应该把旗帜放在哪里?
答案 0 :(得分:2)
您可以尝试一下,看看它如何产生效果。假设您正在使用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
为了简化测试,主机文件仅使用本地主机。命令输出:
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