并行计算期末试题理工Word下载.doc

上传人:wj 文档编号:1454000 上传时间:2023-04-30 格式:DOC 页数:7 大小:209.50KB
下载 相关 举报
并行计算期末试题理工Word下载.doc_第1页
第1页 / 共7页
并行计算期末试题理工Word下载.doc_第2页
第2页 / 共7页
并行计算期末试题理工Word下载.doc_第3页
第3页 / 共7页
并行计算期末试题理工Word下载.doc_第4页
第4页 / 共7页
并行计算期末试题理工Word下载.doc_第5页
第5页 / 共7页
并行计算期末试题理工Word下载.doc_第6页
第6页 / 共7页
并行计算期末试题理工Word下载.doc_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

并行计算期末试题理工Word下载.doc

《并行计算期末试题理工Word下载.doc》由会员分享,可在线阅读,更多相关《并行计算期末试题理工Word下载.doc(7页珍藏版)》请在冰点文库上搜索。

并行计算期末试题理工Word下载.doc

3.threadprivate语句使一个全局文件作用域的变量在并行域内变成每个线程私有,每个线程对该变量复制一份私有拷贝并在多个并行域中保持。

3、简述openmp函数omp_set_num_threads,omp_get_num_threads,omp_get_thread_num的功能;

环境变量OMP_NUM_THREADS的功能。

omp_set_num_threads

omp_get_num_threads

omp_get_thread_num

OMP_NUM_THREADS:

定义执行中最大的线程数

4、简述MPI点对点通信与MPI集合通信的区别。

1)在通信子中的所有进程都必须调用相同的集合通信函数。

2)每个进程传递给MPI集合通信函数的参数必须是“相容的”。

3)参数output_data_p只用在dest_process上。

然而,所有进程仍需要传递一个与output_data_p相对应的实际参数,即使它的值只是NULL。

4)点对点通信函数是通过标签和通信子来匹配的。

集合通信函数不使用标签,只通过通信子和调用的顺序来进行匹配。

5、简述并行计算机的三种内存架构。

答:

1.共享内存2.分布式内存3.混合型分布式共享内存

二、与并行计算相关的名词术语翻译(英译汉,每小题1分,共20分)。

1、Task任务

2、ParallelTask并行任务

3、SerialExecution串行执行

4、ParallelExecution并行执行

5、Pipelining流水线技术

6、SharedMemory共享内存

7、SymmetricMulti-Processor(SMP)对称多处理器

8、DistributedMemory分布式存储

9、Communications通信

10、Synchronization同步

11、Granularity粒度

12、ObservedSpeedup测量加速比

13、ParallelOverhead并行开销

14、MassivelyParallel大规模并行

15、EmbarrassinglyParallel易并行计算

16、Scalability可扩展性

17、Multi-coreProcessors多核处理器

18、ClusterComputing集群计算

19、Supercomputing/HighPerformanceComputing高性能计算

20、Cloudcomputing云计算

三、补充程序(每小题10分,共30分)

1、下列OpenMP程序要求运行时获取每个线程的id号并输出,主线程获取总的线程数并输出。

请补充适当的OpenMP编译制导指令和函数调用,要求运行时启动4个线程。

#include<

stdio.h>

omp.h>

intmain(intargc,char*argv[]){

intnthreads,tid;

/*Forkateamofthreadswitheachthreadhavingaprivatetidvariable*/

#pragmaompparallelprivate(tid)

{

/*Obtainandprintthreadid*/

tid=omp_get_thread_num();

printf("

HelloWorldfromthread=%d\n"

tid);

/*Onlymasterthreaddoesthis*/

if(tid==0)

{

nthreads=omp_get_num_threads();

printf("

Numberofthreads=%d\n"

nthreads);

}

}/*Allthreadsjoinmasterthreadandterminate*/

}

2、下列OpenMP程序完成对数组a和b相应元素分别求和、求积的任务,请用OpenMP任务(功能)划分的编译制导指令进行并行化。

#defineN1000

intmain(intargc,char*argv[])

inti;

floata[N],b[N],c[N],d[N];

/*Someinitializations*/

for(i=0;

i<

N;

i++){

a[i]=i*1.5;

b[i]=i+22.35;

}

#pragmaompparallelshared(a,b,c,d)private(i)

{

#pragmaompsectionsnowait

#pragmaompsection

i++)

c[i]=a[i]+b[i];

#pragmaompsection

d[i]=a[i]*b[i];

}/*endofsections*/

}/*endofparallelsection*/

3、下列MPI程序运行时要求启动4个进程,每个进程要求获取自己的进程号、进程运行所在的机器名称、启动的进程个数并输出。

请补充适当的MPI函数。

#include"

mpi.h"

stdlib.h>

#defineMASTER 0

intmain(intargc,char*argv[])

intnumtasks,taskid,len;

charhostname[MPI_MAX_PROCESSOR_NAME];

MPI_Init(&

argc,&

argv);

MPI_Comm_size(MPI_COMM_WORLD,&

numtasks);

MPI_Comm_rank(MPI_COMM_WORLD,&

taskid);

MPI_Get_processor_name(hostname,&

len);

printf("

Hellofromtask%don%s!

\n"

taskid,hostname);

if(taskid==MASTER)

printf("

MASTER:

NumberofMPItasksis:

%d\n"

numtasks);

MPI_Finalize();

四、并行程序设计(第1题10分,第2题20分,共30分)

1、编程求Sum=1+2+…N。

(要求使用openmp)

2、

#defineN1000

intmain(intargc,char*argv[])

intsum,i,total;

intnumprocs,myid;

MPI_Init(&

MPI_Comm_rank(MPI_COMM_WORLD,&

myid);

MPI_Comm_size(MPI_COMM_WORLD,&

numprocs);

for(i=myid+1;

i<

=N;

i+=numprocs)

sum+=i;

MPI_Reduce(&

sum,&

total,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);

if(myid==0)printf("

sum=%d\n"

total);

return0;

2、请分别用OpenMP和MPI并行编程的方法求PI的近似值。

staticlongnum_steps=100000;

doublestep;

#defineNUM_THREADS2

intmain()

{ inti;

doublex,pi,sum[NUM_THREADS];

step=1.0/(double)num_steps;

omp_set_num_threads(NUM_THREADS);

//

#pragmaompparallel

{

doublex;

intid;

id=omp_get_thread_num();

for(i=id,sum[id]=0.0;

num_steps;

i=i+NUM_THREADS){//

x=(i+0.5)*step;

sum[id]+=1.0/(1.0+x*x);

}

}

for(i=0,pi=0.0;

NUM_THREADS;

i++)

pi+=sum[i]*step;

}

printf(“pi=%f”,pi);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2