• MPI初学-安装及OpenMPI函数说明


    一、Mac下OpenMPI的安装

    所用电脑:MacBook Pro,OSX 10.11.2

    1. 从openmpi官网下载相应版本:OpenMPI 1.8下载
    2. 解压文件
      双击解压或者tar zxvf openmpi***.tar.gz
    3. 指定安装路径
      进入解压的目录,指定要安装的路径:./condigure --prefix=/usr/local
    4. 编译mpi源码
      make all
    5. sudo make安装
      sudo make install
    6. 检查是否加入环境变量
      echo $PATH 查看MPI所在的/usr/local/bin是否在环境变量PATH中
    7. 编译examples源码并运行
      首先进入examples文件夹,该文件夹下有一些MPI的简单源码例子
      编译hello world的C程序,mpicc hello_c.c -o test
      或者编译hello world的C++程序,mpicxx hello_cxx.cc -o test
      这样生成名叫test的可执行程序,然后使用mpirun执行:mpirun -np 2 ./test //np指定使用几个进程

    二、MPI函数简单说明

    下面以examples里的hello_c.c为例说明MPI常用函数

    int myid, numprocess;
    int namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &myid);
    MPI_Comm_size(MPI_COMM_WORLD, &numprocess);
    MPI_Get_processor_name(processor_name, &namelen);
    
    fprintf(stderr, "To you : Process %d of %d on %s
    ", myid, numprocess, processor_name);
    MPI_Finalize();
    return 0;
    
    1. 初始化 MPI_Init(int argc, char **argv)
      参数:argc变量个数,argv变量数组
    2. 获取当前进程标识 MPI_Comm_rank(MPI_Comm comm, int rank)
      参数:comm该进程所在的通信域句柄,rank该进程在通信域中的标识号
    3. 获取通信域进程总数 MPI_Comm_size(MPI_Comm comm,int size)
      参数:comm该进程所在的通信域句柄,size通信域comm中的进程总数
    4. 获取本线程机器名 MPI_Get_processor_name(char *name,int resultlen)
      参数:name为返回的机器名字符,resultlen为机器名长度
    5. 结束函数 MPI_Finalize()

    另外,MPI有预定义的数据类型与C语言中的对应关系如下:

    MPI数据类型 对应C数据类型
    MPI_CHAR signed char
    MPI_SHORT signed short int
    MPI_INT signed int
    MPI_LONG signed long int
    MPI_UNSIGNED_CHAR unsigned char
    MPI_UNSIGNED_SHORT unsigned short int
    MPI_UNSIGNED unsigned int
    MPI_UNSIGNED_LONG unsigned long int
    MPI_FLOAT float
    MPI_DOUBLE double
    MPI_LONG_DOUBLE long double
    MPI_BYTE 无相应数据类型
    MPI_PACKED 无相应数据类型
    MPI_LONG_LONG_INT long long int

  • 相关阅读:
    redis 布隆过滤器
    ltp分词加入词典后处理——强制分词
    python零散的小知识点
    icecream调试
    pandas操作excel的基础知识
    Neo4j在python中的基础操作
    正则表达式中的split的使用
    初始化方法__init__
    if语句中的多个条件**的并与交
    python爬虫
  • 原文地址:https://www.cnblogs.com/fanyabo/p/5770461.html
Copyright © 2020-2023  润新知