MPI入门

MPI入门1 什么是 MPIMPI 是一个跨语言的通讯协议 用于编写并行计算机 支持点对点和广播 MPI 是一个信息传递应用程序接口 包括协议和和语义说明 他们指明其如何在各种实现中发挥其特性 MPI 的目标是高性能 大规模性 和可移植性 MPI 在今天仍为高性能计算的主要模型 主要的 MPI 1 模型不包括共享内存概念 MPI 2 只有有限的分布共享内存概念 但是 MPI 程序经常在共享内存的机器上运行 在 MPI 模型周边

1.什么是MPI

2.第一个MPI程序

int main() { int rank; int allProcess; MPI_Comm worker_comm; MPI_Init(nullptr, nullptr); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &allProcess); MPI_Finalize(); return 0; }

下面我们来逐个介绍上例中使用的MPI函数:

一些常用函数

MPI作为一个用来传递信息的协议,核心肯定是通信,我们先介绍几组常用的通信函数

int MPI_Send (void *buf, int count, MPI_Datatype datatype,int dest, int tag,MPI_Comm comm) int MPI_Recv (void *buf, int count, MPI_Datatype datatype,int source, int tag, MPI_Comm comm,MPI_Status *status)
int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source,int tag, MPI_Comm comm, MPI_Request *request) int MPI_Isend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag,MPI_Comm comm, MPI_Request *request)
int MPI_Wait(MPI_Request *request, MPI_Status *status)

当程序运行到时MPI_Wait,会堵塞直到MPI_Wait传入的句柄参数对应的函数被完成。

下面是一个比较完整的函数列表:

MPI_Get_library_version

#undef FUNCNAME #define FUNCNAME MPI_Get_library_version #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME)

MPI_Graph_neighbors_count

MPI_Info_get

#undef FUNCNAME #define FUNCNAME MPI_Info_get #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME) int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag)

通过key查找value

MPI_Info_get_nkeys

#undef FUNCNAME #define FUNCNAME MPI_Info_get_nkeys #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME) int MPI_Info_get_nkeys( MPI_Info info, int *nkeys )

返回info中key的数量

MPI_Info_get_nthkey

#undef FUNCNAME #define FUNCNAME MPI_Info_get_nthkey #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME) int MPI_Info_get_nthkey( MPI_Info info, int n, char *key )

返回info的第n个key

MPI_Info_get_valuelen

#undef FUNCNAME #define FUNCNAME MPIRInfo_get_valuelen #undef FCNAME #define FCNAME MPL_QUOTE(FUNCNAME) int MPI_Info_get_valuelen( MPI_Info info, const char *key, int *valuelen, int *flag )

检索与密钥相关联的值的长度

MPI_File_iwrite

#ifdef HAVE_MPI_GREQUEST #include "mpiu_greq.h" #endif int MPI_File_iwrite(MPI_File fh, ROMIO_CONST void *buf, int count,MPI_Datatype datatype, MPI_Request *request)

非堵塞的运用单独指针写

MPI_File_iwrite_at

#ifdef HAVE_MPI_GREQUEST #include "mpiu_greq.h" #endif int MPI_File_iwrite_at(MPI_File fh, MPI_Offset offset, ROMIO_CONST void *buf,int count, MPI_Datatype datatype, MPIO_Request *request)

非阻塞使用显式偏移写

MPI_File_iwrite_shared

#ifdef HAVE_MPI_GREQUEST #include "mpiu_greq.h" #endif int MPI_File_iwrite_shared(MPI_File fh, ROMIO_CONST void *buf, int count, MPI_Datatype datatype, MPIO_Request *request)

使用共享文件指针进行非阻塞写入

以上难免有不足或错误之处,愿大佬们能在评论区不吝赐教。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208428.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午11:37
下一篇 2026年3月19日 上午11:37


相关推荐

  • sqlyog证书密钥(注册码)_SQLyog安装教程

    sqlyog证书密钥(注册码)_SQLyog安装教程SQLyogv12.09(64bit)注册码姓名(Name):cr173序列号(Code):8d8120df-a5c3-4989-8f47-5afc79c56e7c或者(OR)姓名(Name):ttrar序列号(Code):8d8120df-a5c3-4989-8f47-5afc79c56e7c…

    2022年4月20日
    4.6K
  • 绕过校园网认证实现免费上网【三端】

    绕过校园网认证实现免费上网【三端】前言很多时候 当流量不够用时 看着周围那么多热点又连不上 是不是有点心痒痒呢 那么有没有办法不需要要通过这些热点的认证即可上网呢 当然是有的 另外在此强调一点 本教程仅用于学习测试用途 请勿用于不正当的途径 大体思路连上那些公共热点 往往都能成功 但是也往往还需要进一步的认证才能够上网 没有认证的时 当我们访问 http 的网站时 我们的请求会被拦截并跳转至热点 下文就以校园网代表热点了 的登

    2026年3月16日
    2
  • ConcurrentSkipListMap 图解

    ConcurrentSkipListMap 图解疯狂创客圈经典图书 NettyZookeep 高并发实战 面试必备 面试必备 面试必备 博客园总入口 疯狂创客圈经典图书 SpringCloud Nginx 高并发核心编程 大厂必备 大厂必备 大厂必备 博客园总入口 入大厂 涨工资必备 高并发 亿级流量 IM 实战 实战系列 SpringCloudN 秒杀 实战系列 博客园总入口 1ConcurrentS

    2026年3月19日
    3
  • Oracle sqlplus 查询结果显示优化

    Oracle sqlplus 查询结果显示优化使用Oraclesqlplus进行查询时经常会碰到查询结果显示问题,字段和查询结果难以直接对应显示。这个是因为sqlplus的设置问题,在Windows环境下,可直接在查询窗口“右键-环境”,修改屏幕显示的缓冲区设置,将设置值调整到合适的值,确定即可。Linux环境下可直接设置环境变量setpagesizexxx;setlinesizexxx;修改显示的方式有很多…

    2022年7月16日
    24
  • JS刷新当前页面的五种方式

    JS刷新当前页面的五种方式https://www.jb51.net/article/44764.htm

    2022年7月27日
    8
  • oc深坑測试题及其答案[通俗易懂]

    oc深坑測试题及其答案

    2022年1月22日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号