(完整word版)并行计算期末试题-理工(word文档良心出品)_第1页
(完整word版)并行计算期末试题-理工(word文档良心出品)_第2页
(完整word版)并行计算期末试题-理工(word文档良心出品)_第3页
(完整word版)并行计算期末试题-理工(word文档良心出品)_第4页
(完整word版)并行计算期末试题-理工(word文档良心出品)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、并行计算期末试题适用专业:理工类考试说明:1、将试卷答案以学号命名为 word文件,如115042101.doc,上传到03/upload。2、第一、二大题,直接将答案写在题后;第三、四题要求将程序补充、编写完 整并将运行结果截图插在题目后面。一、简述题(每小题4分,共20分)。的功能。1、简述 openmp编译制导指令 master,single,critical,atomic1 .master制导语句指定代码段只能被主线程执行2 . single编译制导语句指定内部代码只能由线程组中的一个线程执行。线程 组中没有执行single语句的线程会一直等待代码块的

2、结束,使用nowait子句除外。3 .critical制导语句表明域中的代码一次只能由一个线程执行,其他线程被阻塞在临界区4 .atomic制导语句指定特定的存储单元将被原子更新 2、简述openmp译制导子句shared,private 的功能?简述openmp译制导指 令 threadprivate 的功能。1.private 子句表示它列出的变量对于每个线程是局部的。2.shared子句表示它所列出的变量被线程组中所有的线程共享,所有线程都 能对它进行读写访问。3.threadprivate语句使一个全局文件作用域的变量在并行域内变成每个线程私有,每个线程对该变量复制一份私有拷贝并在多个

3、并行域中保持。3、简述 openmp函数 omp_set_num_threads, omp_get_num_threads,OMP NUM THREADSgomp_get_thread_num 的功能; 环境变量omp_set_num_threadsomp_get_num_threads omp_get_thread_numOMP_NUM_THRE ADSC执行中最大的线程数4、简述MPI点对点通信与MPI集合通信的区别。1)在通信子中的所有进程都必须调用相同的集合通信函数。2)每个进程传递给MPI 集合通信函数的参数必须是“相容的”。3) 参数output_data_p 只用在 dest_p

4、rocess 上。 然而, 所有进程仍需要传递一个与output_data_p 相对应的实际参数,即使它的值只是NULL。4)点对点通信函数是通过标签和通信子来匹配的。集合通信函数不 使用标签,只通过通信子和调用的顺序来进行匹配。5、简述并行计算机的三种内存架构。答: 1. 共享内存 2. 分布式内存3. 混合型分布式共享内存二、与并行计算相关的名词术语翻译(英译汉,每小题 1 分,共 20 分) 。1、 Task 任务2、 Parallel Task 并行任务3、 Serial Execution 串行执行4、 Parallel Execution 并行执行5、 Pipelining 流水线

5、技术6、 Shared Memory共享内存7、 Symmetric Multi-Processor (SMP) 对称多处理器8、 Distributed Memory 分布式存储9、 Communications 通信10、 Synchronization 同步11、 Granularity 粒度12、 Observed Speedup 测量加速比13、 Parallel Overhead 并行开销14、 Massively Parallel 大规模并行15、 Embarrassingly Parallel 易并行计算16、 Scalability 可扩展性17、 Multi-core Pr

6、ocessors 多核处理器18、 Cluster Computing 集群计算19、 Supercomputing / High Performance Computing 高性能计算20、 Cloud computing 云计算三、补充程序(每小题 10 分,共 30 分)1、下列OpenM严序要求运行时获取每个线程的id号并输出,主线程获取总的 线程数并输出。请补充适当的 OpenM隔译制导指令和函数调用,要求运行时启 动 4 个线程。#include <stdio.h>#include <omp.h>int main (int argc,char *argv口)

7、int nthreads, tid;/* Fork a team of threads with each thread having a private tid variable*/#pragma omp parallel private(tid)/* Obtain and print thread id */tid = omp_get_thread_num();printf("Hello World from thread = %dn", tid);/* Only master thread does this */if (tid = 0)nthreads = omp_

8、get_num_threads();printf("Number of threads = %dn", nthreads); /* All threads join master thread and terminate */2、下列OpenM严序完成对数组a和b相应元素分别求和、求积的任务,请用 OpenMPE务(功能)划分的编译制导指令进行并行化。#include <omp.h>#define N 1000int main (int argc,char *argv口)int i;float aN, bN, cN, dN;/* Some initializat

9、ions */for (i=0; i < N; i+) ai = i * 1.5;bi = i + 22.35;#pragma omp parallel shared(a,b,c,d) private(i)#pragma omp sections nowait#pragma omp sectionfor (i=0; i < N; i+)ci = ai + bi;#pragma omp sectionfor (i=0; i < N; i+)di = ai * bi; /* end of sections */ /* end of parallel section */3、下列M

10、PI程序运行时要求启动4个进程,每个进程要求获取自己的进程号、 进程运行所在的机器名称、启动的进程个数并输出。请补充适当的MPI函数#include "mpi.h"#include <stdio.h>#include <stdlib.h>#define MASTER0int main (int argc, char *argv口)int numtasks, taskid, len;char hostnameMPI_MAX_PROCESSOR_NAME;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_C

11、OMM_WORLD, &numtasks);MPI_Comm_rank(MPI_COMM_WORLD,&taskid);MPI_Get_processor_name(hostname, &len);printf ("Hello from task %d on %s!n", taskid, hostname);if (taskid = MASTER)printf("MASTER: Number of MPI tasks is: %dn",numtasks);MPI_Finalize();四、并行程序设计(第1题10分,第2题20分,

12、共30分)1、编程求Sum=1+2+ No (要求使用openmp2、#include <stdio.h>#include "mpi.h"#define N 1000int main(int argc,char *argv口)int sum,i,total;int numprocs, myid;MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &myid);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);for(i=myid+1;i<=

13、N;i+=numprocs)sum+=i;MPI_Reduce(&sum,&total,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);if(myid=0)printf("sum=%dn",total);MPI_Finalize(); return 0;2、请分别用OpenM的MPI并行编程的方法求PI的近似值。H 11兀dx = arctan(x)= arctan(1) - arctan(D) - arctan(1) =一J。1 + x -fJ4#include <stdio.h>#include <omp.h>static long num_steps = 100000;double step;#define NUM_THREADS 2int main () int i;double x, pi, sumNUM_THREADS;step = 1.0/(double) num_steps;omp_set_num_threads(NUM_THREADS); /#pragma omp paralle

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论