文档库 最新最全的文档下载
当前位置:文档库 › 并行计算题目答案汇总

并行计算题目答案汇总

并行计算题目答案汇总
并行计算题目答案汇总

第1题(1)什么是并行计算(2)它的优点有哪些(3)可以通过哪些结构完成并行计算

1.并行计算就是在并行计算或分布式计算机等高性能计算系统上所做的超级计算。(P3)

2.计算极大地增强了人们从事科学研究的能力,大大地加速了把科技转化为生产力的过程,深刻地改变着人类认识世界和改造世界的方法和途径。计算科学的理论和方法,作为新的研究手段和新的设计与创造技术的理论基础,正推动着当代科学与技术向纵深发展。(P4)

3.单指令多数据流SIMD、对称多处理机SMP、大规模并行处理机MPP、工作站机群COW、分布共享存储DSM多处理机。(P22)

第2题什么是网络计算它的特点它与分布式计算、集群计算的关系(P104)

网络计算:在工作站机群COW环境下进行的计算称为网络计算。

特点:网络计算结合了客户机/服务器结构的健壮性、Internet面向全球的简易通用的数据访问方式和分布式对象的灵活性,提供了统一的跨平台开发环境,基于开放的和事实上的标准,把应用和数据的复杂性从桌面转移到智能化的网络和基于网络的服务器,给用户提供了对应用和信息的通用、快速的访问方式。

与分布式计算、集群计算的关系:

分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

集群计算是使用多个计算机,如典型的个人计算机或UNIX工作站;多个存储设备;冗余互联,来组成一个对用户来说单一的高可用性的系统。

因此,网络计算与分布式计算和集群计算都是属于计算密集型,数据密集型和网络密集型应用。

第3题表征并行系统的性能指标有哪些并行系统的加速比如何定义它能否完全确定系统的性能为什么

a.表征并行系统的性能指标主要有:CPU和存储器的基本性能指标,通信开销以及系统机器的成本、价格与性价比,

还有系统加速比和系统可扩放性(p88页);其中CPU和存储器的基本性能指标包括:工作负载,并行执行时间,存储器的层次结构和存储器的带宽。

b.并行系统的加速比,是指对于一个给定的应用,并行算法的执行速度相对于串行算法的执行速度另快了多少倍。

c.加速比并不能完全确定系统的性能;因为评价并行计算性能的指标,除了加速比外,并行计算的可扩放性也是主要

性能指标之一即并行系统性能随处理器数的增加而按比例提高的能力。(个人理解的,大家参考第三章吧~)

第4题节点度的定义它在并行计算中的作用。(第9页)作用:百度也没找到答案。

定义:射入或射出一个节点的边数称为节点度。在单向网络中,入射和出射边之各称为节点度。

第5题等效率函数的定义、作用及应用。(P89)

参考答案:为了维持一定的效率E(介于0与1之间),当处理器数p增大时,需要相应地增大问题规模W的值。由此定义函数为问题规模W随处理器数P变化的函数,称此函数为等效率函数。等效率函数是等效率度量标准,而等效率度量是并行计算可扩放性评测的依据之一。应用举例:按照等效率函数的定义,对于某一并行算法(或并行程序),为了维护运行效率保持不变,随着处理器数目的增加,若只需增加较小的工作量(即问题规模),比如说W随p呈线性或亚线性增长,则表示该算法具有良好的可扩放性;若需要增加非常大的问题规模,比如说W随p呈指数级增长,则表示该算法是不可扩放的。第6题

等速度函数的定义,作用及应用答:该题的答案在课本P90-P91面。可以自行参考课本复习。

表面-容积效应的定义及应用答:该题答案在课本P168面(2,3,4段)。同学们可以参考复习。

第7题页数:P164

全局通信:是指有很多任务参与交换数据的一种通信模式,全局通信中,每个任务与很多别的任务通信。局部通信:局部通信时,每个任务只与较少的几个近邻通信。

结构化通信:结构化通信值,一个任务和其近邻形成规整结构(如树、网格等)。

非结构化通信:非结构化通信中,通信网则可能是任意图。

第8题表面—容积效应的定义、应用(P168)

答:定义是一个任务的通信需求比例于它所操作的子域的表面积,而计算需求却比例于子域的容积。其应用是:表面—容积效应启发我们,在其他条件等同的情况下,高维分解一般更有效,因为相对于一个给定的容积(计算)它减少的表面积(通信),因此从效率的角度,增加力度的最好办法是在所有的维组合任务。

第9题 mpi编程模型中的基本通信概述

MPI(Message Passing Interface)定义:MPI是94年5月发布的一种消息传递接口。它实际上是一个消息传递函数库的标志说明,吸取了众多消息传递系统的优点,是目前国际上最流行的并行编程环境之一。

具有的优点:具有可移植性和易用性,有完备的异步通信功能;有正式和详细的精确定义。

何为通信体:在基于MPI编程模型中,计算是由一个或多个彼此调用库函数进行消息收、发通信的进程所组成。所谓通信体,就是一个进程组加上进程活动环境,其中进程组就是一组有限和有序的进程的集合。

最基本的MPI:

MPI_INIT:启动MPI计算;MPI_FINALIZE:结束MPI计算;MPI_COMM_SIZE:确定进程数;

MPI_COMM_RANK:确定自己的进程的标识符;MPI_SEND:发送一条消息;MPI_RECV:接受一条消息;

群体通信:

群体通信提供了MPI中独立的安全的消息传递。不同的通信库使用了独立的通信体,它隔离了内部和外部的通信,避免了在通信库被调用的和退出时的同步,也保证了在同一通信体的通信操作胡不干扰。

点到点通信的数据传送有阻塞和非阻塞两者机制;阻塞和非阻塞有四种通信模式:

1、标准模式;

2、缓冲模式;

3、同步模式;

4、就绪模式;

第10题什么事共享存储并行编程P323 第二段

在共享存储的编程模式中,各个处理器可以对共享存储器中的数据进行存取,数据对每个处理器而言都是可访问到的,不需要在处理器之间进行传送,即数据通信时通过读/写共享存储单元来完成.

它的基本思路是什么 P323 第三段粗体字

1任务划分; 2任务调度静态调度2.1.1确定模式 2.1.2非确定模式动态调度 3.任务同步 4任务通信.

第11题 MPI基本函数有哪些每一个函数的作用及使用

参考:352页。每一函数的作用:参考352~353页

①有六个基本函数

MPI_INIT :启动MPI计算;MPI_FINALIZE:结束MPI计算;MPI_COMM_SIZE:确定进程数;

MPI_COMM_RANK:确定自己的进程标识符;MPI_SEND:发送一条消息;MPI_RECV:接收一条消息;

第12题找不到

第13题 MPI的基本函数有哪些每个函数的作用及使用

MPI 中有

MPI_Wtime(void) 取得当前时间,计时的精度有 double MPI_Wtick(void) 取得

C/C++ 有 clock_t clock(void) 取得当前时间,计时的精度有常数 CLOCKS_PER_SEC 定义。

MPI_Init(int *argc ,char ***argv)

MPI的初始化例行函数,用于初始化MPI运行的环境,必须调用,还是首先调用,仅调用一次。

(void) 结束MPI执行的环境,该函数一旦被调用,就不能调用MPI的其它的函数(包括MPI_init)

(void *buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm)

将缓冲区的count个datatype数据类型的数据发送到目的进程阻塞型:

需要等待指定的操作的实际完成,或至少所涉及的数据被MPI系统

完全的备份后才返回如:MPI_Send和MPI_Recv都是阻塞型的。

(void *buf,int count,MPI_Datatype datatype,int source,int tag,MPI_Comm comm.,MPI_Status *status)

从指定进程source接收信息,并且该数据的类型和本接收进程指定的数据类行一样

(void *buf,int count,MPI_Datatype datatype,int dest,int tag,MPI_Comm comm.,MPI_Requst *request)

非阻塞地发送信息。在发送数据完成之前,对数据操作是把安全的,因为随时可能与正

在后台执行的MPI操作发生冲突。所以用户使用非阻塞型发送数据必须调用其他函数

来等待或查询操作完成的情况。

该函数递交一个信息发送的请求MPI系统在后台完成消息的发送,请求的句柄通过

Request变量返回给MPI进程,供随后查询/等待消息的完成用

注意:阻塞型和非阻塞型相差一个I。

(MPI_Request *request,MPI_Status *status)

通信请求的完成与检测

MPI_Wait是阻塞型函数,必须等待通信的完成才返回。该检测函数等待,检测一个通信器请求的完成

成功返回时,status中包含关于所完成的通信的信息,相应的通信请求被释放,request被程MPI_REQUST_NULL。(MPI_Request *request,int *flag,MPI_Status *status)

MPI_TEST 与MPI_Wait刚好相反的。MPI_TEST是非阻塞函数

该函数检测指定的通信请求,不论通信是否完成都立刻返回

(int source ,int tag,MPI_Comm comm.,int *flag,MPI_Status *status)

消息的探测函数是属于非阻塞函数,它不论是否有符合条件的消息都立刻返回

(int source ,int tag,MPI_Comm comm.,MPI_Status *status) 消息的探测

检查要接收的信息是否到达信息到达了才能返回

MPI_Probe属于阻塞型函数,它等待直到一个符合条件的消息到达后才返回

如果探测到符合条件的消息flag=true,否则flag=false

(MPI_Status *status,MPI_Datatype datatype,int *count) 该函数返回以指定的数据类型为单位,接收到数据的个数,接收信息是使用的是最大个数,搞函数准确地知道接收信息的个数

(int count,MPI_Datatype oldtype,MPI_Datatype *newtype)

新数据类型newtype由count个老数据类型olodtype按域(extent)连续存放构成

.新定义数据类型函数。如:count=5,OLDTYPE=INYTRGER,则新的数据类型NEWTYPE为5个整数

(int count,int blocklength,int stride,MPI_Datatype oldtype,MPI_Datatype *newtype)

新数据类型newtype由count个数据块构成。每个数据块由blockelength个连续存放的oldtype构成。相邻的两个数据块的位移相差stride x extent(oldtype)个字节

新定义数据类型如:count=3,BLOCKLENGTH=2,STRIDE=3,OLDTYPE=INTEGER,则调用此函数后得到的新的数据类型NEWTYPE为6个整数组成,其中在原始数组中从开始取2个隔1隔再取2个,再隔一个取2个构成

14..MPI_Type_indexed(int count,int array_of_blocklengths,int *array_of_displacements,MPI_Datatype, oldtype,MPI_Datatype *newtype)

新的数据类型newtype由count个数据块构成,第i个数据块包含arry_of_blocklengths(i)个连续存放的oldtype,字节位移为arry_of_displacements(i)*extent(oldtype)。

ARRAY_OF_BLOCKLENTHS和ARRAY_OF_DLSPLACEMENRS由OLDTYPE定义的元素个数来度量

注意:MPI_Type_indexed与MPI_Type_vector的区别在每个数据块的长度可以不同,数据块间也可以不等距

15..MPI_Type_commit(MPI_Datatype *datatype)

提交数据类型,一个数据类型被提交之后就可以和MPI的原始数据类型完全一样地在消息传递中使用

使用自定义的数据类型之前,必须调用此函数

16..MPI_Type_free(MPI_Datatype *datatype)

释放指定的数据类型。函数返回后。Datatype将被置成MPI_DATATYPE_NULL。

17..MPI_Barrier(MPI_Comm comm)

该函数用于进程间的同步。一个进程调用该函数后将等待直到通信器comm中的所有进程都调用了该函数才返回18..MPI_Bcast(void *buffer,int count,MPI_Datatype datatype,int root,MPI_Comm comm)

广播数据通信器comm中进程号为root的进程(根进程)将自己buffer中的内容同时发送给通信器的所有其他的进程。

19..MPI_Gather(void *sendbuf,int sendcount,MPI_Datatype sendtype,void *recvbuf,int recvcount,MPI_Datatype recvtype,int root,MPI_Comm comm)

收集数据所有进程(包括根进程)将sendbuf中的数据发送给根进程。根进程将这些数据按进程号的顺序依次接收到recvbuf中,发送数据和接收的数据类型与长度必须相匹配。即发送的类型必须具有相同的序列。

20..MPI_Scatter(void *sendbuf,int sendcount,MPI_Datatype sendtype,void *recvbuf,int recvcount,MPI_Datatype recvtype ,int root, MPI_Comm comm)

分散数据。指根进程将一个大的数据块分成小块分别散发给各个进程(包括根进程自己)

它是数据收集的逆操作

(void *sendbuf,int sendcount,MPI_Datatype sendtype,void *recvbuf,int recvcount,MPI_Datatype recvtype ,MPI_Comm comm)

(void *sendbuf,int sendcount,MPI_Datatype sendtype,void *recvbuf,int recvcount,MPI_datatype recvtype ,MPI_Comm comm)

全部到全部每个进程散发自己的一个数据块,并且收集并装所有进程散发过来的数据块,我们称该操作为数据的“全散发收集”,它既被认为是数据的全收集的扩展,也可以被认为是数据的散发扩展。

(void *sendbuf ,void *recvbuf,int count,MPI_Datatype datatype,MPI_Op op ,

Int root,MPI_Comm comm)

在组内所有的进程中,执行一个规约操作,并把结果存放在指定的进程中

(void *sendbuf ,Void *recvbuf,int count,MPI_Datatype datatype,MPI_Op op,MPI_Comm comm)

全规约

(MPI_Comm comm.,int *size) 该函数返回与该组通信因子相关的进程数

(MPI_Comm comm.,int *rank)

相关文档