实验一:建立并行计算平台
并行计算_实验三_简单的MPI并行程序及性能分析

并行计算_实验三_简单的MPI并行程序及性能分析一、实验背景和目的MPI(Massive Parallel Interface,大规模并行接口)是一种用于进行并行计算的通信协议和编程模型。
它可以使不同进程在分布式计算机集群上进行通信和协同工作,实现并行计算的目的。
本实验将设计和实现一个简单的MPI并行程序,并通过性能分析来评估其并行计算的效果。
二、实验内容1.设计一个简单的MPI并行程序,并解决以下问题:a.将一个矩阵A进行分块存储,并将其均匀分配给不同的进程;b.将每个进程分别计算所分配的矩阵块的平均值,并将结果发送给主进程;c.主进程将收到的结果汇总计算出矩阵A的平均值。
2.运行该MPI程序,并记录下执行时间。
3.对程序的性能进行分析:a.利用不同规模的输入数据进行测试,观察程序的运行时间与输入规模的关系;b. 使用mpiexec命令调整进程数量,观察程序的运行时间与进程数量的关系。
三、实验步骤1.程序设计和实现:a.设计一个函数用于生成输入数据-矩阵A;b.编写MPI并行程序的代码,实现矩阵块的分配和计算;c.编写主函数,调用MPI相应函数,实现进程间的通信和数据汇总计算。
2.编译和运行程序:a.使用MPI编译器将MPI并行程序编译成可执行文件;b.在集群上运行程序,并记录下执行时间。
3.性能分析:a.对不同规模的输入数据运行程序,记录下不同规模下的运行时间;b. 使用mpiexec命令调整进程数量,对不同进程数量运行程序,记录下不同进程数量下的运行时间。
四、实验结果和分析执行实验后得到的结果:1.对不同规模的输入数据运行程序,记录下不同规模下的运行时间,得到如下结果:输入规模运行时间100x1002.345s200x2005.678s300x30011.234s...从结果可以看出,随着输入规模的增加,程序的运行时间也相应增加。
2. 使用mpiexec命令调整进程数量,对不同进程数量运行程序,记录下不同进程数量下的运行时间,得到如下结果:进程数量运行时间110.345s26.789s43.456s...从结果可以看出,随着进程数量的增加,程序的运行时间逐渐减少,但当进程数量超过一定限制后,进一步增加进程数量将不再显著减少运行时间。
并行计算实验一:多线程计算π

2.2 并行思想 在上述计算过程中唯一可以并行化的地方是随机数模拟了, 假设投入的总点 数为 kSamplePoints ,开启 num_threads 个线程,这样每个线程平均的去投 kSamplePoints/num_threads 个点,最后将所有线程的结果求和并计算概率 P, 这样比串行的效率高很多。
三、程序流程图
(1)串行流程图: 串行流程图只需要调用 hits 函数即可(hits 函数如下图) ,在此不再赘述。 (2)并行流程图
四、实验结果及分析
4.1 实验结果数据统计 (1)随机点个数为 107
串、并行运行结果: 线程数 PI 的值 0 3.1 411 3 153 947 1 1 2 3 4 5 6 7 8 9 10 3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14 3.14 113 113 113 113 113 113 113 113 113 113
4.2 加速比曲线 柱形图:
8 7 6 5 加速比 4 3 2 1 0 0 1 2 3 4 5 线程数 6 7 8 9 10 随机点个数为10^7 随机点个数为10^8
折线图:
8 7 6 5 加速比 4 3 2 1 0 0 1 2 3 4 5 线程数 6 7 8 9 10 随机点个数为10^7 随机点个数为10^8
ห้องสมุดไป่ตู้
3.89 5026
2.74 0197
(2)随机点个数为 10 线程数 PI 的值 运行时 间/微秒 加速比
8
串、并行运行结果: 0 1 2 3 4 5 6 7 8 9 10 3.1 3.14 3.14 3.14 3.14 3.14 3.1 3.14 3.14 3.14 3.1 417 17 17 17 17 17 417 17 17 17 417 153 1547 7974 5469 4191 3825 3352 2891 2304 2448 2865 49 93 15 72 35 31 52 11 34 736 753 1 1 0.99 1.92 2.81 3.66 4.01 4.5 5.31 6.67 6.27 5.3 3286 7849 0568 8113 8488 859 7178 1068 9787 653 2 7
《云计算技术》课程标准

《云计算技术》课程标准一、课程概述《云计算技术》课程旨在让学生了解和掌握云计算的基本概念、原理和技术,以及其在各行各业的应用。
通过本课程的学习,学生将能够理解云计算的基本架构、服务模型和关键技术,熟悉常见的云服务和应用,并能够根据实际需求选择和配置合适的云服务。
二、课程目标1、理解云计算的基本概念、原理和技术,掌握云计算的基本架构和服务模型。
2、熟悉常见的云服务和应用,了解云服务的优势和适用场景。
3、能够根据实际需求选择和配置合适的云服务,了解云服务的部署和运维。
4、掌握云安全的基本概念和防护措施,了解合规性和隐私保护的重要性。
5、通过实践操作,加深对云计算技术的理解和应用能力。
三、课程内容1、云计算的基本概念和原理2、云计算的架构和服务模型3、常见的云服务和应用4、云服务的选择和配置5、云服务的部署和运维6、云安全的概念和防护措施7、实践操作:云服务的配置和管理四、教学方法本课程采用理论教学和实践操作相结合的方式,以激发学生的学习兴趣和主动性,提高其实践操作能力。
具体方法包括:1、理论教学:通过课堂讲解、案例分析等方式,让学生了解云计算的基本概念、原理和技术,掌握云服务的选择、配置、部署和运维等方面的知识。
2、实践操作:通过实验室实践、项目实训等方式,让学生熟悉常见的云服务和应用,掌握云服务的配置和管理技能,加深对云计算技术的理解和应用能力。
3、小组讨论:通过小组讨论的方式,鼓励学生交流和分享学习心得和经验,促进团队协作和创新能力的培养。
4、在线学习:通过在线学习平台,让学生在课后自主进行拓展学习,提供学习的灵活性和个性化。
五、课程评价本课程的评价采用多种方式相结合的方式,包括:1、平时成绩:通过课堂表现、作业完成等情况进行评价。
2、期末考试:通过笔试或机试等方式进行期末考试评价。
3、项目实训:通过小组项目实训的方式进行实践操作评价。
4、学习报告:通过撰写学习报告的方式进行学习成果展示和总结评价。
MPI综合实验报告

MPI综合实验报告一、实验目的本次实验旨在探究MPI并行计算技术在多节点集群中的应用,并通过编写相关代码实现一个简单的并行计算任务,验证MPI的计算能力和效果。
二、实验原理MPI(Message Passing Interface)是一种并行计算中进程间通信的标准接口。
MPI通过发送和接收消息来实现进程之间的通信,协调各个计算节点的工作。
一般而言,MPI程序由多个进程组成,每个进程可以独立地执行计算任务,当需要进行通信时,进程可以通过MPI提供的接口来发送和接收消息。
三、实验过程1.配置MPI环境在实验开始前,需要在多个节点上安装MPI环境,并确保各节点之间能够正常通信,可以互相发送和接收消息。
2.编写代码首先,需要编写一个主进程(通常为进程0)和多个子进程参与计算的代码。
主进程负责将计算任务分配给子进程,并收集子进程的计算结果。
子进程则负责进行具体的计算任务。
以下是一个简单的示例代码:```pythonfrom mpi4py import MPIif rank == 0:#主进程负责任务分配data = [i for i in range(size-1)] # 分配给每个子进程的数据for i in range(1, size):#主进程接收结果result = []for i in range(1, size):print("Result:", result)else:#子进程接收任务数据#子进程进行计算result = data * 2#子进程发送计算结果```以上代码使用了mpi4py库来实现MPI的功能。
在主进程中,首先准备要分配的数据,然后将每个子进程的数据发送给相应的子进程,并接收子进程的计算结果。
在子进程中,首先接收来自主进程的数据,然后进行计算,并将计算结果发送给主进程。
3.运行实验在配置好MPI环境和编写好代码后,将代码保存并上传到各个节点上。
然后,在主节点上执行以下命令来运行程序:``````其中,`-np 5`表示使用5个进程来进行计算。
JGLUE——一个基于Java和GLUE的并行计算系统

Msr 两 法与D pc r ae提供了 个方 t iah 线程 ( s te 代表一 独立的 个 计算任务) 进行交互. 之间 D pc r iah 对象可以 s te 调用 Msr ae 中的 b ia ( t en s) gT k启动子任务, 还可以调 Msr 用 ae 的 t gTs e l 方法获取分配到S v之上的某个Ts 的计算返回结果. e a Rst t k uQ l。 a a k
D pc r 程的 名, 后 这 线 动 . 为 序员 只 写D pc r 和 iah 线 类 然 将 些 程启 运行 作 程 , 要编 iah 类 ste s te
Ts 类并将它们提交给系统运行即可. a k
4 L E的设计和实现 J U G
41 atr . M s 模块 e
M sr ae对象是J L E系统的中心管理员, t GU 主要实现了 如下几大功能. 41 进程管理 .1 .
I 引 言
中类T .号 4 ( 1
机群环境下往往采用P M. I V M 等消息传递并行编程J具,随着计算环境日 P _ 益向 分布 化网格化发展, 传统的并行编程_具无法满足易编程性和可扩展性等要求, 〔 而基于 分布组 件和网 络服务的编程方法日 益得以 应用. 本文将介绍一个分布式并行计算系统 JL E G U ,该
等方法 S v 调用,以 le a 获得要执行的 Ts 类文件的名称、 a k 类文件、参数类型、 参数以及返 回结果类型 另外, ae还提供了gRst M sr t e e l( le t u ) 方法Sv 调用, 获得其它,s 的运行 a 以 Tk a
结果.
4 Sae . l 模块 2 v
以 保证每一 iah 线程获 le 源的 个Ds te pc r 得Sv 资 机会是 a 均等的 为 . 实现这一 机制, ae类 M sr t 中 义了 个 法, e Isae, ls. r ls, r 和gRstaQ 定 多 方 如gC s mQ gC s gA C s gAg e e lIs taN e aQ e g aQ e o t uC s t t t
并行计算实验报告一

并行计算实验报告一江苏科技大学计算机科学与工程学院实验报告评定成绩指导教师实验课程:并行计算宋英磊实验名称:Java多线程编程学号: 姓名: 班级: 完成日期:2014年04月22日1.1 实验目的(1) 掌握多线程编程的特点;(2) 了解线程的调度和执行过程;(3) 掌握资源共享访问的实现方法。
1.2 知识要点1.2.1线程的概念(1) 线程是程序中的一个执行流,多线程则指多个执行流;(2) 线程是比进程更小的执行单位,一个进程包括多个线程;(3) Java语言中线程包括3部分:虚拟CPU、该CPU执行的代码及代码所操作的数据。
(4) Java代码可以为不同线程共享,数据也可以为不同线程共享; 1.2.2 线程的创建(1) 方式1:实现Runnable接口Thread类使用一个实现Runnable接口的实例对象作为其构造方法的参数,该对象提供了run方法,启动Thread将执行该run方法;(2) 方式2:继承Thread类重写Thread类的run方法;1.2.3 线程的调度(1) 线程的优先级, 取值范围1,10,在Thread类提供了3个常量,MIN_PRIORITY=1、MAX_ PRIORITY=10、NORM_PRIORITY=5;, 用setPriority()设置线程优先级,用getPriority()获取线程优先级; , 子线程继承父线程的优先级,主线程具有正常优先级。
(2) 线程的调度:采用抢占式调度策略,高优先级的线程优先执行,在Java 中,系统按照优先级的级别设置不同的等待队列。
1.2.4 线程的状态与生命周期说明:新创建的线程处于“新建状态”,必须通过执行start()方法,让其进入到“就绪状态”,处于就绪状态的线程才有机会得到调度执行。
线程在运行时也可能因资源等待或主动睡眠而放弃运行,进入“阻塞状态”,线程执行完毕,或主动执行stop方法将进入“终止状态”。
1.2.5 线程的同步--解决资源访问冲突问题(1) 对象的加锁所有被共享访问的数据及访问代码必须作为临界区,用synchronized加锁。
Hadoop云计算平台实验报告
数据校验技术提高了数据的高可靠性。NameNode 执行文件系统的名字空间操作, 比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体 DataNode 节 点的映射。 DataNode 负责存放数据块和处理文件系统客户端的读写请求。在 NameNode 的统一调度下进行数据块的创建、删除和复制。
责任务执行。用户提交基于 MapReduce 变成规范的作业之后,JobTracker 根据作 业的输入数据的分布情况(在 HDFS 之中) ,将 Map 任务指派到存储这些数据块 的 DataNode 上执行(DataNode 也充当了 TaskTracker) ,Map 完成之后会根据用 户提交的 Reduce 任务数对中间结果进行分区存储在 Map 任务节点本地的磁盘, 执行 Reduce 任务的节点(由 JobTracker 指派)通过轮询的方式从各 Map 节点拉 取 Reduce 的输入数据,并在 Reduce 任务节点的内存进行排序后进行合并作为 reduce 函数的输入,输出结果又输出到 HDFS 中进行存储。
Hadoop 云计算平台实验报告
金松昌 11069010 唐明圣 11069033 尹洪 11069069
实验目标
1. 掌握 Hadoop 安装过程 2. 理解 Hadoop 工作原理 3. 测试 Hadoop 系统的可扩展性 4. 测试 Hadoop 系统的稳定性 5. 测试 Hadoop 系统的可靠性
排序
分片 0
Map
复制 合并
reduce
分区 0
HDFS 副本
分片 1
Map HDFS 副本
reduce Map
分区 1
分片 2
图 2 MapReduce 数据处理流程示意图
并行计算实验报告
分析 :这样的加速比 , 是符合预测 , 很好的 . 附 :(实验 源码 ) 1 pi.cpp #include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cmath> #include <ctime> #include <cassert>
#include <climits> #include <iostream> #include <iomanip> #include <string> #include <vector> #include <set> #include <map> #include <queue> #include <deque> #include <bitset> #include <algorithm> #include <omp.h> #define MST(a, b) memset(a, b, sizeof(a)) #define REP(i, a) for (int i = 0; i < int(a); i++) #define REPP(i, a, b) for (int i = int(a); i <= int(b); i++) #define NUM_THREADS 4 using namespace std; const int N = 1e6; double sum[N]; int main() { ios :: sync_with_stdio(0); clock_t st, ed; double pi = 0, x; //串行 st = clock(); double step = 1.0 / N; REP(i, N) { x = (i + 0.5) * step; pi += 4.0 / (1.0 + x * x); } pi /= N; ed = clock(); cout << fixed << setprecision(10) << "Pi: " << pi << endl; cout << fixed << setprecision(10) << "串行用时: " << 1.0 * (ed - st) / CLOCKS_PER_SEC << endl; //并行域并行化 pi = 0; omp_set_num_threads(NUM_THREADS); st = clock(); int i; #pragma omp parallel private(i) { double x; int id; id = omp_get_thread_num();
本科专业认证《云计算》课程教学大纲
《云计算》课程教学大纲(Cloud Computing)编写单位:计算机与通信工程学院计算机科学与技术系编写时间: 2021年 7月《云计算》课程教学大纲一、基本信息课程名称:云计算英文名称:Cloud Computing课程类别:专业教育课程课程性质:选修课课程编码:0812001946学分:2.5总学时:40。
其中,讲授26学时,实验14学时,上机0学时,实训0学时适用专业:计算机科学与技术、网络工程先修课程与知识储备: Linux编程技术。
后继课程:大数据技术基础二、课程简介:《云计算技术》是网络工程、计算机科学与技术专业的选修课。
通过本课程的学习,使学生对云服务、云服务接口、并行计算与云计算的相互关系、云计算平台及其技术实现等有所了解。
本课程主要介绍云计算的原理及关键技术的基本概念,Hadoop、Open Stack等开源平台的云计算实现方法,以及云计算领域具有代表性的国外Google平台、国内阿里云平台。
通过学习云计算的框架、云计算的模式、云计算的研究热点、云计算的企业应用场景,为学生对云计算这门科学前沿学科有深入的认知,为以后开展类似的工作打下基础。
三、教学目标1、课程思政教学目标:通过本课程的学习,使学生充分了解云计算领域的科学发展史,重点了解云计算技术对社会经济产生的影响和贡献,熟悉本领域国内外企业的发展现状及领先世界的技术和产品。
了解云计算领域相应的国家标准、法律法规;学会一定的沟通、组织、团队合作的社会能力。
通过课程思政教学,培养爱国、爱党、具有良好的职业道德和高度职业责任感的专业人才。
2、课程教学总目标:通过本课程的学习,使学生对云计算技术的兴起、由来、概念及分类、云计算的原理及关键技术建立基本的概念,并通过实践了解云服务,虚拟化技术,并行计算与云计算的相互关系等相关内容;通过对云计算开源平台Hadoop、OpenStack等的介绍,让学生对云计算平台的相关技术有所了解;结合云计算平台中各项应用及核心技术的介绍,拓展学生对云计算的认识。
并行实验报告
实验名称:并行处理技术在图像识别中的应用实验目的:1. 了解并行处理技术的基本原理和应用场景。
2. 掌握并行计算环境搭建和编程技巧。
3. 分析并行处理技术在图像识别任务中的性能提升。
实验时间:2023年10月15日-2023年10月25日实验设备:1. 主机:****************************,16GB RAM2. 显卡:NVIDIA GeForce RTX 2080 Ti3. 操作系统:Windows 10 Professional4. 并行计算软件:OpenMP,MPI实验内容:本实验主要分为三个部分:1. 并行计算环境搭建2. 图像识别任务并行化3. 性能分析和比较一、并行计算环境搭建1. 安装OpenMP和MPI库:首先在主机上安装OpenMP和MPI库,以便在编程过程中调用并行计算功能。
2. 编写并行程序框架:使用C++编写一个并行程序框架,包括并行计算函数和主函数。
3. 编译程序:使用g++编译器编译程序,并添加OpenMP和MPI库的相关编译选项。
二、图像识别任务并行化1. 数据预处理:将原始图像数据转换为适合并行处理的格式,例如将图像分割成多个子图像。
2. 图像识别算法:选择一个图像识别算法,如SVM(支持向量机)或CNN(卷积神经网络),并将其并行化。
3. 并行计算实现:使用OpenMP或MPI库将图像识别算法的各个步骤并行化,例如将图像分割、特征提取、分类等步骤分配给不同的线程或进程。
三、性能分析和比较1. 实验数据:使用一组标准图像数据集进行实验,例如MNIST手写数字识别数据集。
2. 性能指标:比较串行和并行处理在图像识别任务中的运行时间、准确率等性能指标。
3. 结果分析:分析并行处理在图像识别任务中的性能提升,并探讨影响性能的因素。
实验结果:1. 并行处理在图像识别任务中显著提升了运行时间,尤其是在大规模数据集上。
2. 并行处理对准确率的影响较小,甚至略有提升。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《集群系统与并行计算》实验指导书计算机科学学院广东技术师范学院计算机学院编2013年9月目录实验一:建立并行计算平台实验二:并行程序设计(1)实验三:并行程序设计(2)实验四:并行程序设计(3)实验五:并行程序设计(4)实验六:提高结点的运算能力《集群系统与并行计算》实验根据实验室环境,学生的实际情况,可以有选择地进行。
本实验系列涵盖计算机网络的基本知识,加深学生对集群系统与并行计算理论的理解,对实际的并行计算有指导意义。
教师可以根据实际情况掌握评分。
在《集群系统与并行计算》实验过程中,要求学生做到:(1)预习实验指导书有关部分,认真做好实验内容的准备,就实验可能出现的情况提前作出思考和分析。
(2)仔细观察上机和上机操作时出现的各种现象,记录主要情况,作出必要说明和分析。
(3)认真书写实验报告。
实验报告包括实验目的和要求,实验情况及其分析。
对需编程的实验,写出程序设计说明,给出源程序框图和清单。
(4)遵守机房纪律,服从指导教师指挥,爱护实验设备。
(5)实验课程不迟到,不早退。
如有事不能出席,需要向指导教师请假,所缺实验一般不补。
实验的验收将分为两个部分。
第一部分是上机操作,包括检查程序运行和即时提问。
第二部分是提交书面的实验报告。
实验将采用阶段检查方式,每个实验都将应当在规定的时间内完成并检查通过,过期视为未完成该实验,不计成绩。
以避免集中检查方式产生的诸多不良问题,希望同学们抓紧时间,合理安排,认真完成。
实验一:建立并行计算平台MPICH 并行程序设计环境(参考安竹林的文章:)MPI(MessagePassing Interface)是目前一种比较著名的应用于并行环境的消息传递标准。
MPICH是MPI1.2标准的一个完全实现,也是应用范围最广的一种并行及分布式环境。
MPICH除包含MPI函数库之外,还包含了一套程序设计以及运行环境。
本文将简要介绍如何应用MPICH的Windows版本,建立一个基于Windows的并行程序设计及运行环境。
并给出一个C+MPI程序设计实例。
MPICH for Microsoft Windows 的安装与配置1.1 系统要求安装MPICH for Microsoft Windows 对系统有如下要求:Windows NT4/2000/XP 的Professional 或Server 版(不支持Windows 95/98)所有主机必须能够建立TCP/IP 连接MPICH 支持的编译器有:MS VC++ 6.x,MS VC++.NET,Compaq Visual Fortran 6.x,Intel Fortran,gcc ,以及g77 。
安装MPICH ,必须以管理员的身份登录。
1.2 下载MPICH 的下载地址是:/mpi/mpich/download.htmlWindows 版本的mpich.nt.1.2.5.exe 的下载地址是:/~ashton/mpich.nt/1.3 安装以管理员的身份登录每台主机,在所有主机上建立一个同样的账户(当然也可以每个机器使用不同的用户名和账户,然后建立一个配置文件,使用命令行的方式运行程序),然后,运行下载的安装文件,将MPICH 安装到每台主机上。
打开“任务管理器”中的“进程”选项卡,查看是否有一个mpd.exe 的进程。
如果有的话说明安装成功。
以后每次启动系统,该进程将自动运行。
1.4 注册与配置安装好MPICH 之后还必须对每台计算机进行注册和配置才能使用。
其中注册必须每台计算机都要进行,配置只要在主控的计算机执行就行了。
注册的目的是,将先前在每台计算机上申请的账号与密码注册到MPICH 中去,这样MPICH 才能在网络环境中访问每台主机。
配置方法:运行“mpich\mpd\bin\MPIRegister.exe”首先会提示输入用户账号,然后会提示输入两边密码,之后会问你是否保持上面的设定。
如果选择是,则上面的信息将写入硬盘,否则保存在内存中,再重新启动之后就不存在了。
图一 MPIRegister为了让程序在许多主机上执行,而不需建立配置文件来给出相应的各个主机的信息,主控机必须直到当前可用的主机的信息。
这时就需要运行MPICH 的配置程序来进行配置了。
MPICH 提供的配置程序是一个图形界面的程序,可以从“开始->程序->MPICH->mpd-> MPICH Configuration tool ”启动。
启动之后的界面如下图所示:图二MPICH Configuration tool整个界面分为三栏,在第一栏中点击Select(1号按钮),然后在跳出的对话框中选择安装了MPICH 的主机名。
之后在第一栏的编辑框中会显示出所有选择的主机。
检查无误后,点击第二栏的Apply(2号按钮),这时下方的进度条会显示对各主机核查的情况,如果没问题整个进度条会变为蓝色。
最后点击OK(3号按钮)。
整个配置就完成了。
1.5 MPICH 与编译环境的整合MPICH 提供了C语言和Fortran 语言的接口。
要编译一个MPI+C 或MPI+Fortran 的程序必须对编译器进行设置。
下面分别对Visual C++ 6.0 、Compaq Visual Fortran 6.5 、和Visual Fortran 5.0进行说明。
1.5.1 Visual C++ 6.0在Visual C++ 6 中编译一个MPI+C 的程序的步骤如下:Page 2 of 15 1.打开Visual C++ 6 的Develop Studio 。
2.新建一个工程,通常为Win32 Console Application 。
3.在新的工程的编辑界面下,按Alt+F7 打开工程设置对话框。
图三 Visual C++设置(1)图四 Visual C++ 设置(2)4.切换到C/C++ 选项卡。
(如图三)首先选择“Win32 Debug”(①的下拉框),再选择“Code Generation”(②的下拉框),再选择“Debug Multithreaded”(③的下拉框)。
这时在“Project Options”的文本框中显示“/MT”表示设置成功。
然后选择“Win32 Release”(①的下拉框)重复上述步骤。
(图四)5.在C/C++ 选项卡中,选择“All Configurations”。
(①的下拉框)选择“Preprocessor”(②的下拉框),在“Additional include directories ”的文本框中输入MPICH 所附带的头文件的目录。
(如图五)图五 Visual C++ 设置(3)6.在Link选项卡中,选择“All Configurations”。
(①的下拉框)然后再选择“Input”(②的下拉框),在“Additional library path ”的文本框中输入MPICH 所附带的库文件的目录。
(如图六)7.在Link选项卡中,选择“All Configurations”。
(①的下拉框)然后再选择“General”然后在(③)图六 Visual C++ 设置(4)(②的下拉框),“Object/library modules”的文本框中添加“ws2_32.lib”。
点击“OK”。
这时在“Common Options”(④)中会出现“ws2_32.lib”。
(如图七)图七 Visual C++ 设置(5)8.在Link选项卡中,选择“Win32 Debug”。
(①的下拉框)然后再选择“General”(②的下拉框),然后在“Object/library modules”(③)的文本框中添加“mpichd.lib”。
点击“OK”。
这时在“Project Options”(④)中会出现“mpichd.lib”。
(如图八)9.在Link选项卡中,选择“Win32 Release”。
(①的下拉框)然后再选择“General”(②的下拉框),然后在“Object/library modules”(③)的文本框中添加“mpich.lib”。
点击“OK”。
这时在“Project Options”(④)中会出现“mpich.lib”。
(如图九)图八 Visual C++ 设置(6)图九 Visual C++ 设置(7)10.关闭工程设置对话框。
1.6 样例程序的运行在“MPICH\SDK\Examples\nt\Basic ”有一个简单的计算π的程序,在VC下编译成可执行程序就可应用来测试并行环境。
在MPICH 中运行并行程序有两种方式:命令行方式和图形方式。
命令行方式可以使用配置文件,功能比较强,但操作复杂易出错。
图形方式简单明了,下面以图形方式说明如何运行一个测试程序来测试并行环境。
在运行一个程序之前,首先要做的事是将待运行的目标程序复制到所有的主机的相同目图十 MPIRunMPIRun目录下,运行程序的步骤如下:从“开始->程序->MPICH->mpd->MPIRun ”启动图形方式的MPI 环境。
(如上图所示)首先,选择待运行的程序,点击右上角的“..”按钮,选择相应的程序;然后选择需要用于计算的主机个数,指定参加运算的主机名;最后点击Run,运行程序。
运行的结果会显示在文本框,不同主机的输出信息会以不同的颜色标出。
FAQQ:MPICH 有Windows 和Linux 的版本,那么可以同时在两个环境下运行一个程序吗?A:不行。
同一个MPI 程序可以分别在Windows 和Linux 环境下编译和运行,但却不能同时运行。
这是因为MPICH 确立和管理主机间的Socket 连接的代码是不兼容的。
Q:为什么得到错误信息“Unhandled exception caught in RedirectIOThread”?A:这是由于向标准输出(屏幕)打印了过多的信息而造成的。
由于在运行MPIRun 的时候,所有主机的信息全部输出在0 号进程所在的主机的屏幕上,如果每个程序输出了过多的信息,这就会造成上述错误。
解决方法是,减少不必要的调试信息的输出。
Q:为什么得到错误信息“MPI_RECV : Message truncated”?A:这是由于MPI_RECV 的接收缓冲区比对应的MPI_SEND 的发送缓冲区小造成的,解决办法是,调整MPI_RECV 的接收缓冲区尺寸,使其与发送缓冲区的尺寸一致。
Q:为什么得到错误信息“Error 64 – GetQueuedCompletenessStatus failed”?A:通常这是由于MPI_RECV 与MPI_SEND 不匹配造成的。
解决方法是,检查每个MPI_RECV 是否都有相应的MPI_SEND 与之匹配。