debugging 当并行处理时,我的代码在运行了大量的循环(在do循环中)后自行终止,我该如何调试?

ohfgkhjo  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(139)

当我通过并行处理运行代码时,会出现以下错误:
在节点25上中止(1)(通信0中的等级25):调用MPI_Abort(MPI_COMM_WORLD,1)的应用程序-进程25
我在F90中使用英特尔编译器,在编译调试时使用以下英特尔标志:-g -traceback -check bounds.
如果我直接在一个处理器上运行代码,那么标志会打印导致代码终止的问题,但是当我使用mpirun或mpiexec并行运行相同的代码时,标志不会打印任何内容,代码只在长时间运行后才会自行终止。
我想知道在使用mpirun或mpiexec时可以做些什么来查看打印标志输出。
我想在MPI中运行代码时打印错误的-g -traceback -check输出的标志输出。

j7dteeu8

j7dteeu81#

要调试MPI代码,我们需要使用以下示例命令:

For Compilation: mpiifort -g -traceback -check bounds test.f90 -o test 
For Execution: mpirun -n 4 -gdb ./test

上面的执行命令将引导您进入GDB调试模式,您可以在该模式下开始调试应用程序。
有关详细信息,请参阅以下链接:https://www.intel.com/content/www/us/en/develop/documentation/mpi-developer-guide-linux/top/debugging-applications.html
谢谢,桑托什

相关问题