是否可以从 totalview 中查看存储在各种 PETSc 数据类型中的数据?
通常,PETSc 类型是用作指向实际数据的指针的整数(显然我对此的理解很薄弱)。因此,在调试和故障排除时,我的工作流程看起来像 1) 编辑源以将 PETSc 数据保存到文件 2) 重新编译 3) 运行并检查输出。
这很慢。
直接从像 totalview 这样的 GUI 并行调试器查看这些数据会非常好。
顺便说一句,我正在使用 fortran 90。
是否可以从 totalview 中查看存储在各种 PETSc 数据类型中的数据?
通常,PETSc 类型是用作指向实际数据的指针的整数(显然我对此的理解很薄弱)。因此,在调试和故障排除时,我的工作流程看起来像 1) 编辑源以将 PETSc 数据保存到文件 2) 重新编译 3) 运行并检查输出。
这很慢。
直接从像 totalview 这样的 GUI 并行调试器查看这些数据会非常好。
顺便说一句,我正在使用 fortran 90。
PETSc 甚至推荐 TotalView作为并行调试器,所以你应该可以使用它。但是,您必须确保您使用的是带有调试符号的库版本:
大多数 PETSc 代码的代码开发应该在一个处理器上完成;因此,使用标准调试器(例如
dbx、gdb、xdbx等)就可以了。对于调试并行运行,如果您的机器上可用,我们建议使用 Totalview。否则,您可以在单独的调试器中运行每个进程;这与使用并行调试器不同,但在大多数情况下并没有那么糟糕。PETSc 运行时选项-start_in_debugger [-display xdisplay:0]将为每个进程打开单独的窗口和调试器。您应该使用库的调试版本进行调试(./configure使用附加选项--with-debugging(默认)运行)。
尽管 TotalView 是一个非常好的并行调试器,但更常见的串行调试器可能会更好地为您服务。特别是因为调试通常是在相对较小的示例上完成的。因此,gdb除非我对并行功能的调试感兴趣(比如我自己编写的一些 MPI 通信),否则我会在大部分调试中使用。