2011秋高性能计算练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:
A 组题中任选1题,在
B 组任选1题;
编写MPI 程序,采用多进程协同完成练习题。
要求: (1) 并行环境正确运行;
(2)提交上机实验报告:
问题描述、算法设计、重点及难点、并行程序关键代码、计算结果分析等 A01. 从键盘输入一个无符号长整型数n ,计算2~n 之间完数的个数。所谓完数
是指,小于该数的所有因数之和恰好等于该数。例如6是一个完数,因为小于6的因数有1,2,3且1+2+3=6。
A02. 从键盘输入一个无符号长整型数n ,产生一个长度为n ,取值在[0,1]之间
的随机实数数组,计算其去掉一个最大值、去掉一个最小值,剩下n -2个值的平均值。
A03. 从键盘输入一个无符号长整型数n ,产生一个长度为n ,取值在[0,1]之间
的随机实数数组,计算其数学期望、方差。
A04. (仿环网络的多圈接力) 设0进程有变量x ,初值为0,要求将x 按进程号
的次序,将(圈数*进程号)累加到x 上,完成m 后,输出0进程中x 的值。 A05. (仿完全连接网络的互致问候)所有进程间两两互致问候。具体要求,例
如:进程0传递字符串”greetings from process No.0.”到进程1。进程1则在收到字符串前添加字符”Process No.1 has received ”并输出。
A06. (仿二维网格Mesh 通信)设创建n m P ⨯=个进程(n m ,为正整数),要求各进程与其相邻的进程(按n m ⨯网格结构)互致问候。具体要求,例如:若进程0传递字符串”greetings from process No.0.”到进程1。进程1则在收到字符串前添加字符”Process No.1 has received ”并输出。
A07. (仿二维环形网格2D-Torus Mesh 通信)设创建n m P ⨯=个进程(n
m ,为正整数),要求各进程与其相邻的进程(按2维n m ⨯环形网格结构)互致问候。具体要求,例如:若进程0传递字符串”greetings from process No.0.”到进程m-1。进程m-1则在收到字符串前添加字符”Process No.m-1 has received ”并输出。
A08. 计算级数()()() +--++-+-=--!
121!7!5!3sin 121753n x x x x x x n n ,要求精度
810-。
B01. 从键盘输入一个正整数n ,由进程0产生一个n 行5列的矩阵A ,该矩阵的
第一行元素依次为-1,0,1,2,3;第
k 行元素依次为(-1)k ,0,1,2-k ,3-k 。用send 和recv 实现将矩阵A 的各行按“块分布”
分布到各进程。各进程输出收到的各行数据。
B02. 从键盘输入一个正整数n ,由进程0产生一个n 行5列的矩阵A ,该矩阵的
第一行元素依次为-1,0,1,2,3;第k 行元素依次为(-1)k ,0,1,2-k ,3-k 。用send 和recv 实现将矩阵A 的各行按“周期分布(亦称为卷帘分布)”分布到各进程。各进程输出收到的各行数据。
B03. 在各进程上计算:1-5000中,凡是【进程号(myid)+1】的倍数的数的
倒数之和。并用gather 收集各进程求解的和,并输出。
B04. 从键盘输入一个正整数n ,由进程0产生n 阶方阵A (元素为0~99之间的
随机值),并行计算矩阵A*A*A 。
B05. (超立方体结构从高维到低维的广播算法)设创建p P 2=个进程(p 为正
整数),进程0从键盘接收一个整数n 。请按照超立方体结构的边,从高维到低维,模仿超立方体结构的广播算法将n 传递到其他所有进程(提示:该算法在P p 2log =步内完成)。
B06. (归并排序)给定无符号长整型数n N 2=(n 为正整数)。产生长度为N
取值在0~99之间的随机整数数组,用p P 2=(p 为正整数)个进程实现数组的归并排序。
B07. (邻域布雷数)给定两个正整数n m ,,随机产生一个n m ⨯阶矩阵A ,
矩阵A 的元素取0(表示该处未布地雷),或取1(表示该处布有地雷)。要求计算矩阵A 各点邻域内的地雷数,形成一个n m ⨯阶矩阵B ,并输出矩阵B 。
例如,若⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=00001101110110001001A ,则⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=12243244533555323321B 。 B08. (八皇后问题)在8*8格的棋盘上,放置8个皇后。要求每行每列放一个
皇后,而且每一条对角线和每一条反对角线上最多只能有一个皇后,即对同时放置在棋盘的任意两个皇后
11(,)i j 和22(,)i j ,不允许1212()()i i j j -=-或者1122()()i j i j +=+的情况出现。