【并行程序设计】实验一使用MPI6个基本函数编写并行程序

目录

  • 一、上机目的
  • 二、上机内容与要求
  • 三、上机结果

一、上机目的

1.了解所用的并行程序设计平台的基本操作方法,学会独立部署和使用该平台。
2.了解在该系统上如何编辑、编译、连接和运行一个并行程序。
3. 通过编写运行简单的并行程序,初步了解并行源程序的特点。
在这里插入图片描述

二、上机内容与要求

1.检查所用的计算机系统是否已安装了MPI并行程序设计平台,若无,予以安装;进入所用的并行编译集成环境;熟悉集成环境的界面和有关菜单的使用方法。
2. 使用C/C++及MPI编写并行程序,实现n个进程并行,从0号进程开始,依次发送“Hello, I’m process x.”给下一个进程,下一个进程接收上述消息并把它打printf出来。x为发送消息的进程号,最后一个进程不需要发送给0号进程。
3. 使用梯形积分法计算圆周率π值,计算公式为

三、上机结果

1、使用C/C++及MPI编写并行程序,实现n个进程并行,从0号进程开始,依次发送“Hello, I’m process x.”给下一个进程,下一个进程接收上述消息并把它打printf出来。x为发送消息的进程号,最后一个进程不需要发送给0号进程。

#include <iostream>
#include "mpi.h"
using namespace std;
int main(int argc, char* argv[]) {// 初始化MPI环境MPI_Init(&argc, &argv);int num_processes;int process_rank;MPI_Comm_size(MPI_COMM_WORLD, &num_processes);MPI_Comm_rank(MPI_COMM_WORLD, &process_rank);char message[50] = { 0 };//防止乱码// 0号进程发送消息到1号进程if (process_rank == 0) {cout << message << "Hello, I'm process " << process_rank << endl;MPI_Send(message, strlen(message) + 1, MPI_CHAR, process_rank + 1, 0, MPI_COMM_WORLD);}else {MPI_Recv(message, sizeof(message), MPI_CHAR, process_rank - 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);cout << message << endl;if (process_rank < num_processes - 1) {cout << message << "Hello, I'm process "  << process_rank << endl;MPI_Send(message, strlen(message) + 1, MPI_CHAR, process_rank + 1, 0, MPI_COMM_WORLD);}}MPI_Finalize();return 0;
}

在这里插入图片描述

使用梯形积分法计算圆周率π值

#include <iostream>
#include <mpi.h>
#include <cmath>double f(double x) {return 4.0 / (1.0 + x * x);
}int main(int argc, char* argv[]) {int rank, size;const int n = 1000000; // 划分的区间数double sum = 0.0;double total_sum;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &size);const int local_n = n / size;const double h = 1.0 / n;double local_sum = 0.0;double x;for (int i = rank * local_n; i < (rank + 1) * local_n; ++i) {x = h * (i + 0.5);local_sum += f(x);}MPI_Reduce(&local_sum, &total_sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);if (rank == 0) {sum = h * total_sum;std::cout << "π 的近似值为: " << std::fixed << sum << std::endl;}//关闭MPI环境MPI_Finalize();return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库

目录 一、准备工作&#xff1a;获取安装包和相应工具 &#xff08;一&#xff09;所需安装包 &#xff08;二&#xff09;安装包下载链接 &#xff08;三&#xff09;在服务器上创建文件夹并上传安装包 二、安装MySql &#xff08;一&#xff09;删除系统自带的mariadb …

Windows kafka 简单集群搭建

Windows kafka 简单集群搭建 文章目录 Windows kafka 简单集群搭建1.环境说明2.Zookeeper集群搭建2.1 ZooKeeper下载2.2 ZooKeeper安装2.2.1 解压zookeeper-3.4.8.tar.gz2.2.2 进入conf目录下&#xff0c;复制zoo_sample.cfg为zoo.cfg2.2.3 修改zoo.cfg文件2.2.4 生成myid文件2…

【C语言】Windows下的C语言线程编程详解

文章目录 1. 头文件1.1 windows.h1.2 process.h 2. 创建线程3. 线程同步3.1 线程同步方式3.1 互斥量&#xff08;Mutex&#xff09;3.2 事件&#xff08;Event&#xff09; 4. 线程的结束与资源管理5.线程池&#xff08;简要&#xff09; 在Windows平台下&#xff0c;C语言提供…

ChatGPT功能让你嘎嘎提升写代码效率和质量

PS: ChatGPT无限次数&#xff0c;无需魔法&#xff0c;登录即可使用,网页打开下面 tj4.mnsfdx.net 点击跳转链接 5个ChatGPT功能嘎嘎提升写代码效率和质量 ChatGPT在代码开发方面带来了巨大变革&#xff0c;尽管如此&#xff0c;仍有许多软件开发人员未能充分利用ChatGPT来优…

WEB区块链开发组件 - KLineChart

当我们开发区块链的时候&#xff0c;实现K线可能大家会想到EChart&#xff0c;但是EChart做可能需要耗费大量工作量&#xff0c;实现出来的功能估计也是牵强着用。 这时候&#xff0c;我们可能网上会搜索到TradingView,可是这个组件虽然功能非常强大&#xff0c;但是还是要费事…

三、HarmonyOS 应用开发入门之运行Hello World

目录 1、课程对象 1.1、有移动端开发经验 1.2、无移动端开发经验 1.3、对 HarmonyOS 感兴趣 2、DevEco Studio 的使用 2.1、DevEco Studio 的关键特性 智能代码编辑 低代码开发 多段双向实时预览 多端模拟仿真 2.2、安装配置 DevEco Studio 2.2.1、官网开发工具下载地…

25.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-利用全新的通信结构传递消息

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;24.根据配置文件…

VRay渲染动画怎么快一点?提升VRay动画渲染方法

随着动画和视觉效果行业对高品质渲染的需求日益增长&#xff0c;V-Ray作为一款领先的渲染工具&#xff0c;面临着提升渲染效率的挑战。项目规模和复杂度的扩大导致渲染时间延长&#xff0c;对交付期限造成影响。探索加速V-Ray渲染流程的方法变得尤为关键。 一、动画渲染的常见瓶…

创建空的Numpy数组

参考&#xff1a;Creating Empty Numpy Array Numpy 是一个开源的 Python 扩展库&#xff0c;用于科学计算和数据分析。它提供了高性能的多维数组对象&#xff0c;以及在这些数组上进行的各种操作。 在 Numpy 中&#xff0c;可以使用 numpy 模块的 empty 函数来创建一个空的 …

逆变器功率软起斜率要求

安规说明 在NB32004中&#xff0c;有明确要求&#xff0c;有功功率调整速率不得超过正负10%Pn/min&#xff0c;包括起停机。 控制对象 控制功率最终是通过调整D轴电流给定来达到限制功率的目的&#xff0c;所以我们只要让D轴的电流给定限幅值按照10%/min增加就好了。 具体实…

Grapher教程—重建长江中下游降雨量时间变化序列

各位朋友好&#xff01;非常激动&#xff01;新学了一个科研绘图软件&#xff0c;它的大名叫“Grapher”&#xff0c;也许在科研界早已如雷贯耳&#xff0c;但在我这&#xff0c;还得是第一次遇见你&#xff01;来看看小编在老师的指导下鼓捣了三节课搞出来的图。 就问大家&…

视频监控管理系统EasyCVR平台设备增删改操作不生效是什么原因?

国标GB28181协议EasyCVR安防平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力&#xff0c;平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流&#xf…