Sun Studio 12:性能分析器

存储 MPI 实验

由于多进程环境比较复杂,因此从 MPI 程序收集性能数据时应当注意一些有关存储 MPI 实验的问题。这些问题涉及到数据收集和存储的效率以及实验的命名。有关命名实验(包括 MPI 实验)的信息,请参见数据的存储位置

用来收集性能数据的每个 MPI 进程都创建其自己的实验。当某个 MPI 进程创建实验时,它会锁定实验目录。所有其他 MPI 进程都必须等到该锁定被释放之后才能使用此目录。因此,如果将实验存储到所有 MPI 进程都可以访问的文件系统,则会按顺序创建这些实验;但是如果将实验存储到每个 MPI 进程的本地文件系统,则会并行创建这些实验。

如果允许收集器创建实验名称,则可以避免与实验名称和存储位置有关的问题。请参见下一节缺省的 MPI 实验名称

缺省的 MPI 实验名称

如果未指定实验名称,则使用缺省的实验名称。收集器使用 MPI 等级以标准格式 experiment.m.er 构造实验名称,其中 m 是 MPI 等级。如果指定了实验组,则主干 experiment 为实验组名称的主干,否则主干为 test。无论使用的是公共文件系统还是本地文件系统,实验名称都是唯一的。因此,如果使用本地文件系统记录实验并将其复制到公共文件系统,则复制这些实验并重新构造任何实验组文件时不必重命名实验。在多数情况下,您应当允许收集器创建实验名称,以确保名称在所有文件系统的范围内是唯一的。

指定非缺省的 MPI 实验名称

如果您将实验存储在公共文件系统上,并以标准格式 experiment. n.er 指定实验名称,那么当每个实验的 n 值递增时,每个实验将被赋予一个唯一的名称。实验是按照 MPI 进程获取实验目录锁的顺序来编号的,因而无法保证与进程的 MPI 等级相对应。如果您将 dbx 附加到正在运行的 MPI 作业中的 MPI 进程,则实验编号由附加的顺序来确定。

如果您将每个实验都存储在其自己的本地文件系统上并指定一个显式的实验名称,则每个实验都可能会获得这个名称。例如,假设您在具有四个单处理器节点的群集中运行 MPI 作业,这四个节点分别标记为 node0node1node2node3。每个节点具有一个名为 /scratch 的本地磁盘,您将实验存储在该磁盘的 username 目录中。由 MPI 作业创建的实验具有下面的全路径名称。


node0:/scratch/username/test.1.er
node1:/scratch/username/test.1.er
node2:/scratch/username/test.1.er
node3:/scratch/username/test.1.er

包括节点名称的全名是唯一的,但在每个实验目录中都有一个名为 test.1.er 的实验。如果在 MPI 作业完成后将实验移到公共位置,则必须确保这些名称仍然是唯一的。例如,要将这些实验移到假设可以从所有节点访问的起始目录并重命名这些实验,请键入以下命令。


rsh node0 ’er_mv /scratch/username/test.1.er test.0.er’
rsh node1 ’er_mv /scratch/username/test.1.er test.1.er’
rsh node2 ’er_mv /scratch/username/test.1.er test.2.er’
rsh node3 ’er_mv /scratch/username/test.1.er test.3.er’

对于大型 MPI 作业,可能需要使用脚本将实验移到公共位置。请不要使用 UNIX® 命令 cpmv;应当使用上例中所示的 er_cper_mv,如处理实验中所述。

如果不知道哪些本地文件系统可用,请使用 df -lk 命令或咨询系统管理员。请始终确保用来存储实验的目录已经存在、其定义是唯一的以及不将其用于任何其他实验,还要确保文件系统具有足够的空间来容纳这些实验。有关如何估计所需空间的信息,请参见估计存储要求


注 –

除非您能够访问用于运行实验的装入对象和源文件或者拥有具备相同路径和时间戳的副本,否则在计算机或节点间复制或移动实验时不能在带注释的反汇编代码中查看带注释的源代码或源代码行。