77范文网 - 专业文章范例文档资料分享平台

MPI和OpenMP程序设计实验报告

来源:网络收集 时间:2018-12-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

一、实验目的及要求

熟悉MPI编程环境,掌握MPI编程基本函数及MPI的相关通信函数用法,掌握MPI的主从模式及对等模式编程;

熟悉OpenMP编程环境,初步掌握基于OpenMP的多线程应用程序开发,掌握OpenMP相关函数以及数据作用域机制、多线程同步机制等。 二、实验设备(环境)及要求

Microsoft Visual Studio .net 2005 MPICH2

Windows 7 32位

Intel Core2 Duo T5550 1.83GHz 双核CPU 2GB内存 三、实验内容与步骤

1. 配置实验环境

http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads 处下载MPICH2,并安装。

将安装目录中的bin目录添加到系统环境变量path中。

以管理员身份运行cmd.exe,输入命令smpd -install -phrase ***。***为安装时提示输入的passphrase。

运行wmpiregister.exe,输入具有系统管理员权限的用户名及密码,进行注册。 配置vs2005,加入MPICH2的包含文件,引用文件和库文件,如下图。

配置项目属性,添加附加依赖项mpi.lib,如下图。 VS2005支持OpenMP,只需在项目属性中做如下配置。

2. 编写MPI程序

题目:一个小规模的学校想给每一个学生一个唯一的证件号。管理部门想使用6位数字,但不确定是否够用,已知一个“可接受的”证件号是有一些限制的。编写一个并行计算程序来计算不同的六位数的个数(由0-9组合的数),要求满足以下限制:

? 第一个数字不能为0;

? 两个连续位上的数字不能相同; ? 各个数字之和不能为7、11、13

代码如下。 #include \#include #include

#define NUM 6

#define MAX 999999 #define MIN 100000

int check(int n) {

int i, x, y, sum;

if (n < MIN) { return -1; }

sum = 0;

for (i=1; i

if (sum==7 || sum==11 || sum==13) { return -1; }

return 0; }

void main(int argc, char **argv) {

int myid, numprocs, namelen;

char processor_name[MPI_MAX_PROCESSOR_NAME]; MPI_Status status;

double startTime, endTime; int i, mycount, count;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Get_processor_name(processor_name,&namelen);

if (myid == 0) { startTime = MPI_Wtime(); }

mycount = 0;

for (i=myid; i<=MAX; i+=numprocs) { if (check(i) == 0) { mycount++; } }

printf(\%d of %d on %s get result=%d\\n\myid, numprocs, processor_name, mycount);

if (myid != 0) { MPI_Send(&mycount, 1, MPI_INT, 0, myid, MPI_COMM_WORLD); } else { count = mycount; for (i=1; i

MPI_Finalize(); }

计算量平均分给每个进程,每个进程将自己计算的部分结果发送给0号进程,由0号进程将结果相加,并输出。

MPI_Init函数进行MPI的初始化,MPI_Comm_size函数获得相关进程数,MPI_Comm_rank函数获得该进程在指定通信因子中的进程号,MPI_Get_processor_name获得进程名。

其他进程使用MPI_Send函数将自己计算的结果发送给0号进程,0号进程使用MPI_Recv函数接受其他进程发送来的结果。

3. 编写OpenMP程序

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MPI和OpenMP程序设计实验报告在线全文阅读。

MPI和OpenMP程序设计实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/384464.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: