UP | HOME

我的 MPICH 笔记

Table of Contents

MPICH2 的初步使用

安装

参考安装文档,并配置好运行环境。在 Rocks 系统上,可使用 mpi-selector 选择系统安装好的 MPICH 环境。

本地测试

  1. 启动 mpd 任务管理器

                                    $ mpd &
    
                                
  2. 使用 mpdtrace 查看机器状态,其结果如下所示:

                                    $ mpdtrace
                                    node0
    
                                
  3. 编写测试程序,比如 mpihello.c, 内容可以如下:

    #include <stdio.h>
                                    #include <stdlib.h>
                                    #include <mpi.h>
    
                                    int main(int argc, char *argv[])
                                    {
                                    int  numprocs, rank, namelen;
                                    char processor_name[MPI_MAX_PROCESSOR_NAME];
    
                                    MPI_Init(&argc, &argv);
                                    MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
                                    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
                                    MPI_Get_processor_name(processor_name, &namelen);
    
                                    printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);
    
                                    MPI_Finalize();
    
                                    return EXIT_SUCCESS;
                                    }
                                    

    然后使用 mpicc 进行编译:

                                    $ mpicc -o mpihello mpihello.c
    
                                
  4. 使用命令 mpirun 运行编译后的程序

                                    $ mpirun -np 4 ./mpihello
                                    Process 1 on node0.hpc.cndc out of 4
                                    Process 2 on node0.hpc.cndc out of 4
                                    Process 0 on node0.hpc.cndc out of 4
                                    Process 3 on node0.hpc.cndc out of 4
                                

    其中参数 -np 表示需要使用的 CPU 数目。

集群测试

  1. 与本地测试同样的步骤,第一步需要启动 mpd 任务守护进程。所不同的是并不是直接调用 mpd 进程,而是通过 mpdboot 来启动。
    1. 首先,需要准备一份参与计算的机器列表文件,比如 mpd.hosts, 其内容大致如下:

                                          compute-0-0
                                          compute-0-1
                                          compute-0-4
                                          compute-0-2
                                          compute-0-3
                                          compute-0-5
                                      

      当然,需要在你的 /etc/hosts 文件中首先定义好所有的主机名。

    2. 然后执行 mpdboot 命令

                                          $ mpdboot -n 6 -f mpd.hosts
      
                                      
  2. 然后执行 mpdtrace 查看参与计算的节点是否打开

                                    $ mpdtrace
                                    node0
                                    compute-0-0
                                    compute-0-2
                                    compute-0-1
                                    compute-0-4
                                    compute-0-3
                                
  3. 编译测试程序,比如 mpich2 中自带的示例 cpi.c:

                                    $ mpicc -o cpi cpi.c
    
                                
  4. 使用 mpirun 执行编译后的程序

                                    $ mpirun -np 6 ./cpi
                                    Process 0 on node0.hpc.cndc
                                    Process 2 on compute-0-2.local
                                    Process 1 on compute-0-0.local
                                    Process 3 on compute-0-1.local
                                    Process 4 on compute-0-4.local
                                    Process 5 on compute-0-3.local
                                    pi is approximately 3.1416009869231249, Error is 0.0000083333333318
                                    wall clock time = 0.005853
                                

MPICH2 的性能测试

88x31.png

版权所有 ©2012-2018: Vivodo Lio | 日期: 2011-10-14 五 00:00

Generated by Emacs 25.3.1 (Org mode 9.1.7), Validate