当前位置: 首页 > article >正文

mpi 示例小程序集锦

1,小ring 程序

数据从rank 0开始向外传递,rank1收到后再传递给 rank2,以此类推

除了rank0,程序一开始时,每个rank先进入接收等待状态,像是多米诺骨牌,都立起来。

rank 0开始倒下,依次推倒 rank1,rank2,。。。。

源码:

#include <stdio.h>
#include <mpi.h>

int main(){
	// Initialize the MPI environment
	MPI_Init(NULL, NULL);

	// Get the rank and size in the original communicator
	int world_rank, world_size;
	
	MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
	MPI_Comm_size(MPI_COMM_WORLD, &world_size);
	int token;
	if (world_rank != 0) {
	    MPI_Recv(&token, 1, MPI_INT, world_rank - 1, 0,
        	     MPI_COMM_WORLD, MPI_STATUS_IGNORE);
	    printf("Process %d received token %d from process %d\n",
        	   world_rank, token, world_rank - 1);
	} else {
	    // Set the token's value if you are process 0
	    token = 777;
	}
	MPI_Send(&token, 1, MPI_INT, (world_rank + 1) % world_size,
        	 0, MPI_COMM_WORLD);

	// Now process 0 can receive from the last process.
	if (world_rank == 0) {
	    MPI_Recv(&token, 1, MPI_INT, world_size - 1, 0,
        	     MPI_COMM_WORLD, MPI_STATUS_IGNORE);
	    printf("Process %d received token %d from process %d\n",
        	   world_rank, token, world_size - 1);
	}

	return 0;

}

编译:

openmpi/bin/mpicxx ./hello_little_ring.cpp -o ring

运行:

可见,每个rank都拿到了777这个数值。


http://www.kler.cn/news/341424.html

相关文章:

  • C语言之扫雷小游戏(完整代码版)
  • SpringBoot美发门店系统:提升服务质量
  • git pull
  • 如何激发员工对FMEA的浓厚兴趣与深度应用?
  • 谈谈英国硕士毕业论文如何收集问卷数据
  • Vue.js组件开发:构建可复用、可维护的前端应用
  • 物理学基础精解【61】
  • quantlab_ai版本v0.1代码发布: 从研报中提取因子并建模(附代码与研报集下载)
  • Qt C++设计模式->解释器模式
  • Linux中yum与apt有什么区别
  • turtlebot3使用
  • 《向量数据库指南》——Mlivus Cloud:重塑向量数据库的性能与可扩展性新标杆
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十二章 安装VMware Tool 工具
  • 爬虫常用正则表达式用法
  • 安装雷池社区版,保护网站安全
  • sql调优指南及高级sql技巧
  • ChatTTS使用demo示例(包含长文本生成语音、固定音色pt文件)
  • Jquery serialize()、serializeArray()、$.param()
  • 超详细2024版python+pycharm安装与配置教程,pycharm汉化教程-python学习
  • 如何用深度神经网络预测潜在消费者