JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:性能分析器 MPI 教程     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  性能分析器 MPI 教程

关于 MPI 和性能分析器

针对本教程的设置

获取 MPI 软件

适用于 Oracle Solaris 10 和 Linux 的 MPI 软件

适用于 Oracle Solaris 11 的 MPI 软件

准备样例源代码

用于 ClusterTools 和 Open MPI 的样例代码

用于 Oracle Solaris 11 中 Oracle Message Passing Toolkit 的样例代码

编译并运行样例程序

收集有关 ring_c 示例的数据

打开实验

在 MPI 时间线内导航

查看消息详细信息

查看函数详细信息和应用程序源代码

在 MPI 标签中过滤数据

使用过滤堆栈

使用 `MPI Chart`(MPI 图表)标签

使用 `MPI Chart Controls`(MPI 图表控件)

创建图表显示消息从何处发送

创建图表显示哪些进程号接收消息的等待时间最长

了解速度慢的消息对 MPI 函数用时的影响

结论

A.  MPI 图表控件设置

B.  教程的样例代码

针对本教程的设置

性能分析器与消息传递接口 (Message Passing Interface, MPI) 标准的多个实现结合使用,其中包括 Oracle Message Passing Toolkit,该工具包是一个高度优化的 Open MPI 实现,它适用于 Oracle Sun x86 和基于 SPARC 的系统。


注 - Oracle Message Passing Toolkit 产品以前称为 Sun HPC ClusterTools,在 Oracle Web 页面和文档中您可能会同时看到这两个名称。Sun HPC ClusterTools 的最新版本是 8.2.1c 版。该产品的下一个版本为 Oracle Message Passing Toolkit 9,在 Oracle Solaris 11 的软件包系统信息库中已提供该版本。


通过运行无任何附加参数的 collect 命令,可查看与性能分析器结合使用的 MPI 版本的列表。

本教程基于名为 ring_c 的 MPI 样例应用程序介绍了如何使用性能分析器。

您必须为本教程配置好一个群集并使其正常运行。

获取 MPI 软件

尽管本教程使用来自 Oracle 的 MPI 软件,但是您也可以使用 Open MPI,它可从 Open MPI Web 站点 获取。

有关 Oracle Message Passing Toolkit 软件的信息位于 http://www.oracle.com/us/products/tools/message-passing-toolkit-070499.html。该站点提供了下载该软件的链接,但如果您这样做的话,请改用以下详细说明。

适用于 Oracle Solaris 10 和 Linux 的 MPI 软件

对于本教程,您可在 Oracle Solaris 10 或 Linux 上使用 Sun HPC ClusterTools 8 及其更新。有关下载 Sun HPC ClusterTools 8.2.1c 的信息,请参见以下说明。

下载适用于 Oracle Solaris 10 和 Linux 的 Sun HPC ClusterTools:

  1. 登录到 My Oracle Support。您必须具有 Oracle Solaris 或 Oracle Solaris Studio 的支持合同才能下载该软件。

  2. 在搜索框中键入 ClusterTools,然后单击搜索按钮。

  3. 在页面左侧的 "Refine Search"(缩小搜索范围)区域中,单击 "Patches"(修补程序)。

  4. 单击 HPC-CT-8.2.1C-G-F - HPC ClusterTools 8.2.1c

  5. 单击 "Download"(下载)按钮,按照对话框中的说明下载包含 ClusterTools 软件的压缩文件。

  6. 文件下载后,将其解压缩到系统的相应平台目录中。如果需要,可在此目录下解压缩多个文件。

  7. 按照《Sun HPC ClusterTools 8.2.1c Software Installation Guide》(Sun HPC ClusterTools 8.2.1c 软件安装指南)所述安装该软件,可在解压缩目录中找到该指南的 PDF 文件。请注意,该手册中介绍的顶级目录名称可能与解压缩目录中使用的路径不匹配,但是子目录和程序名称均相同。

  8. /Studio-installation/bin 目录和 ClusterTools-installation/bin 目录添加到您的路径中。

适用于 Oracle Solaris 11 的 MPI 软件

如果您运行的是 Oracle Solaris 11,在 Oracle Solaris 11 发行版中已提供了 Oracle Message Passing Toolkit,它位于名为 openmpi-15 的软件包中。有关安装和使用 Oracle Message Passing Toolkit 的信息,请参见《How to Compile and Run MPI Programs on Oracle Solaris 11》(如何在 Oracle Solaris 11 上编译和运行 MPI 程序)一文。

有关在 Oracle Solaris 11 中安装软件的一般信息,请参见 Oracle Solaris 11 文档库中的《Adding and Updating Oracle Solaris 11 Software Packages》(添加并更新 Oracle Solaris 11 软件包)。


注 - Oracle Solaris 11 软件包 openmpi-15 中未提供本教程中使用的样例代码。如果安装的是此版本,必须另外获取样例代码,如用于 Oracle Solaris 11 中 Oracle Message Passing Toolkit 的样例代码所述。您也可以通过下载 Open MPI 来获取样例代码。


准备样例源代码

有关准备样例源代码的信息,请参见下文中适用于您的 MPI 软件的部分。

用于 ClusterTools 和 Open MPI 的样例代码

如果您采用的是 Sun HPC ClusterTools 或 Open MPI,您必须在所有群集节点都可访问的一个位置中制作 examples 目录的一个可写副本。

例如:

用于 Oracle Solaris 11 中 Oracle Message Passing Toolkit 的样例代码

Oracle Solaris 11 openmpi-15 软件包中未包含样例代码。在附录 B中提供了 ring_c.c 的源代码以及用于生成该程序的 Makefile。您可以通过复制这些文件的文本来自行创建 ring_c.cMakefile

创建文件:

  1. 在所有群集节点都可访问的一个位置中创建名为 examples 的目录。

  2. 使用鼠标或键盘从附录 B复制 ring_c.c 的源代码和 Makefile,然后将文本粘贴到文本编辑器中。

  3. 将这些文件保存在您的 examples 目录下。

编译并运行样例程序

编译并运行样例程序:

  1. 将目录更改为新的 examples 目录。

  2. 生成 ring_c 示例。

    % make ring_c
    mpicc -g -o ring_c ring_c.c

    使用 -g 选项编译该程序,这样可允许性能分析器的数据收集器将 MPI 事件映射为源代码。

  3. 使用 mpirun 运行 ring_c 示例,以确保其可正常运行。ring_c 程序只是将消息从进程环中的一个进程传递给下一个进程,然后终止。

    以下示例介绍了如何在双节点群集上运行该程序。在主机文件中指定了节点名称以及每个节点上要使用的插槽数。本教程使用了 25 个进程,并在每个主机上指定了一个插槽。您应指定适用于您系统的进程数和插槽数。有关指定主机和插槽的更多信息,请参见 mpirun(1) 手册页。您也可以在不属于群集的独立主机上运行此命令,但产生的结果没有那么显著的教学意义。

    本示例的的主机文件名称为 clusterhosts,包含以下内容:

    hostA slots=1
    hostB slots=1

    您必须有权对每个主机使用远程 shell(sshrsh)而无需登录主机。默认情况下,mpirun 使用 ssh

    % mpirun -np 25 --hostfile clusterhosts ring_c
    Process 0 sending 10 to 1, tag 201 (25 processes in ring)
    Process 0 sent to 1
    Process 0 decremented value: 9
    Process 0 decremented value: 8
    Process 0 decremented value: 7
    
    Process 0 decremented value: 6
    Process 0 decremented value: 5
    Process 0 decremented value: 4
    Process 0 decremented value: 3
    Process 0 decremented value: 2
    Process 0 decremented value: 1
    
    Process 0 decremented value: 0
    Process 0 exiting
    Process 1 exiting
    Process 2 exiting
    .
    .
    .
    Process 24 exiting

    运行此命令后,如果得到类似输出,即可收集有关示例应用程序的数据,如下一节所示。

如果 mpirun 使用 ssh 出现问题,请尝试在 mpirun 命令中使用 --mca plm_rsh_agent rsh 选项,以使用 rsh 命令进行连接:

% mpirun -np 25 --hostfile clusterhosts --mca plm_rsh_agent rsh -- ring_c