• 安装MPICH并运行第一行代码


    目录

    安装MPICH

    试运行代码

    进阶Python版


     

    安装MPICH

    1、官网-下载地址:

    MPICH | High-Performance Portable MPI

     2、放入Linux中,解压:

    tar -xvf mpich-4.0.2.tar.gz

    3、配置安装:

    cd mpich-4.0.2/
    ./configure

    如果没有 Fortran 编译器,则可以避免构建 MPI Fortran 库:

    ./configure --disable-fortran

    (此处配置等待较久...)

    如果报错说“Aborting because C++ compiler does not work.”,就安装下编译器:

    sudo apt install g++

    4、编译安装:

    make; sudo make install

    (此处编译等待更久...) 

    如果报错说无make指令,就安装下cmake:

    sudo apt install cmake

    5、验证安装是否完成:

    mpiexec --version

     安装完成。

    试运行代码

    1、待运行的源文件demo.c:

    1. #include
    2. #include
    3. int main(int argc, char** argv) {
    4. // 初始化MPI环境。
    5. // MPI Init的两个参数目前没有被MPI实现使用,但是为了以防将来实现可能需要这些参数。
    6. MPI_Init(NULL, NULL);
    7. // 通过调用以下方法来得到所有可以工作的进程数量
    8. int world_size;
    9. MPI_Comm_size(MPI_COMM_WORLD, &world_size);
    10. // 得到当前进程的rank
    11. int world_rank;
    12. MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    13. // 得到当前进程的名字
    14. char processor_name[MPI_MAX_PROCESSOR_NAME];
    15. int name_len;
    16. MPI_Get_processor_name(processor_name, &name_len);
    17. // 打印一条带有当前进程名字,rank以及整个 communicator 的大小的 hello world 消息。
    18. printf("Hello world from processor %s, rank %d out of %d processors\n",
    19. processor_name, world_rank, world_size);
    20. // 释放 MPI 的一些资源. 在此之后不能再进行MPI调用
    21. MPI_Finalize();
    22. }

    2、再编写makefile:

    1. EXECS=demo
    2. MPICC?=mpicc
    3. all: ${EXECS}
    4. demo: demo.c
    5. ${MPICC} -o demo demo.c
    6. clean:
    7. rm ${EXECS}

    3、然后编译:

    make

     注意:如果想要在好几个节点的集群上面跑这个 MPI 程序的话,就需要配置一个 host 文件(不是 /etc/hosts)。如果在笔记本或者单机上运行的话,可以跳过下面这一段。

    需要配置的 host 文件会包含你想要运行的所有节点的名称。为了运行方便,你需要确认一下所有这些节点之间能通过 SSH 通信,并且需要根据[设置认证文件这个教程](http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html)配置不需要密码的 SSH 访问。 我的 host 文件看起来像这样:

    host_file:

    1. cetus1:2
    2. cetus2:2
    3. cetus3:2
    4. cetus4:2

    (冒号后面的数字表示每个处理器有的核数,也可以不加“冒号和后面的数字”)

    应该设置一个叫 MPI_HOSTS 的环境变量,把它指向 host 文件所在的位置。如果单机跑的话就不用设置这个环境变量。

    1. export MPIRUN=/home/kendall/bin/mpirun
    2. export MPI_HOSTS=host_file

    4、然后运行:

    单机下:

    mpirun -n 4 ./demo

    或者多机时:

    mpirun -n 4 -f host_file ./demo

    进阶Python版

    上面的MPICH使用C和C++开发,但其实也有Python绑定版,对大部分同学来说这个会更友好。

    Python版MPICH库名为:mpi4py,文档推荐:

    11. 使用Python的mpi4py模块 — python-parallel-programming-cookbook-cn 1.0 文档

    使用起来简单直观多了。

    1、安装mpi4py库:

    首先也要先安装上面的MPICH,然后:

    pip3 install mpi4py

    (可能会卡主比较久...)

    2、编写helloWorld_MPI.py:

    1. from mpi4py import MPI
    2. comm = MPI.COMM_WORLD
    3. rank = comm.Get_rank()
    4. print("hello world from process ", rank)

    3、然后运行:

    mpiexec  -n 5 python3  helloWorld_MPI.py

    mpirun -np 3 python3 mpi_helloworld.py

     

  • 相关阅读:
    博图Modbus组态及参数设定源码
    IDEA-SVN合并分支到主干
    12(第十一章,数据仓库和商务智能)
    华为云14天鸿蒙设备开发-Day5驱动子系统开发
    西瓜视频基于 Hertz 的微服务落地实践
    NLP 实战 (9) | CSDN topN指数月排行榜竞赛动画
    SAP ABAP debug的七种方法及错误消息定位
    第三十四节——组合式API使用路由
    FastJSON错误Could not read JSON: Unrecognized field
    Linux进程概念
  • 原文地址:https://blog.csdn.net/sxf1061700625/article/details/126295367