并行计算作业

合集下载

并行计算习题答案

并行计算习题答案

并行计算习题答案并行计算习题答案在计算机科学领域,随着技术的不断发展,计算速度的提升成为了一个重要的课题。

并行计算作为一种有效的解决方案,被广泛应用于各个领域。

本文将通过回答一些并行计算习题,来探讨并行计算的原理和应用。

1. 什么是并行计算?并行计算是指同时执行多个计算任务的一种计算模式。

它通过将一个大问题分解为多个小问题,并在多个处理单元上同时执行这些小问题,从而加快计算速度。

并行计算可以应用于各种领域,包括科学计算、图像处理、人工智能等。

2. 并行计算的优势是什么?并行计算具有以下几个优势:- 加速计算速度:通过同时执行多个任务,可以大大提高计算速度,从而节省时间和资源。

- 处理大规模问题:并行计算可以处理大规模问题,将问题分解为多个小问题,分别在不同处理单元上计算,从而提高计算效率。

- 提高系统可靠性:并行计算中的多个处理单元可以相互协作,当一个处理单元发生故障时,其他处理单元可以继续工作,从而提高系统的可靠性。

3. 并行计算的模型有哪些?并行计算的模型有多种,常见的包括:- SIMD(单指令流多数据流)模型:所有处理单元执行相同的指令,但可以处理不同的数据。

- MIMD(多指令流多数据流)模型:每个处理单元可以执行不同的指令,处理不同的数据。

- SPMD(单程序多数据流)模型:所有处理单元执行相同的程序,但可以处理不同的数据。

4. 并行计算中的通信方式有哪些?并行计算中的通信方式包括:- 共享内存:多个处理单元共享同一块物理内存,通过读写内存来实现数据的传递和共享。

- 消息传递:处理单元之间通过发送和接收消息来进行通信,可以通过直接通信或者通过中间件来实现。

5. 如何评估并行计算的性能?评估并行计算的性能可以从以下几个方面考虑:- 加速比:加速比是指并行计算相对于串行计算的速度提升比例,可以通过计算并行计算时间与串行计算时间的比值得到。

- 效率:效率是指并行计算的实际加速比与理论加速比之间的比值,可以反映并行计算的利用率。

并行计算实验的作业调度与远程提交

并行计算实验的作业调度与远程提交
l b r tr fi in y o n e g a u t t e t . a o a o y efc e c fu d r r d ae sud n s K e o ds:h g — ro ma c l se y t m ;d a — ev ra c i cu e;VPN h n e ;paa llc mp t t n yw r i h pe r n e cu tr s se f u ls r e r ht t r e c a nl r le o u a i o

关 键 词 : 性 能 机 群 ;双 服 务 器 架 构 ;V N 通 道 ; 行 计 算 高 P 并 中 图 分 类 号 :P3 1 T 9 文 献 标 志 码 : A 文 章 编 号 :0 6— 1 7 2 1 ) 8— 0 9— 3 10 7 6 ( 0 2 0 0 5 0
J b Sc e uig a d Re t b iig o a a ll mp t t n o h d l n mo e Su m t n fP r l n t e Co u a i o
第 3 卷 第 8期 1 21 0 2年 8月





与探索 来自V 1 3 NO 8 o. l .
RESEARCH AND EXPL0RAT1 0N N A B0RAT0RY I L
Au . 2 2 g 01
并 行 计 算 实 验 的作 业 调 度 与远 程 提 交
邹 溪 , 张 澜 宇 , 周 航
链 路 、 换 端 口和 接 收 端 口具 有 全 双 工 2+2 ia i s 交 G g bt /
科 研 工作 的远 程作 业 提 交 ; 用 结 点 池 完 成 了 基 于本 运

matlab中parallel用法

matlab中parallel用法

matlab中parallel用法MATLAB中parallel用法Markdown作为一种轻量级的标记语言,非常适合用来编写技术文档。

以下是关于MATLAB中parallel用法的一些详细讲解。

并行计算简介并行计算是一种将大型计算任务分割成多个小任务,并同时执行这些小任务的方法。

在MATLAB中,可以使用parallel computing toolbox来提高计算效率并加速任务执行。

并行计算的优势使用并行计算的主要优势包括:1.加速计算速度:并行计算能够利用多核处理器或分布式计算集群来同时执行多个任务,从而大幅提高计算速度。

2.处理大规模数据:并行计算可用于同时处理大规模的数据集,而不会导致内存溢出或计算时间过长。

3.提高系统资源利用率:并行计算能够更有效地利用计算机的系统资源,如CPU和内存。

并行计算的基本概念在进行MATLAB并行计算之前,需要了解以下几个基本概念:1.并行池(Parallel Pool):并行池是一个由多个工作进程组成的资源池,用于执行并行任务。

可以通过设置并行池的大小来利用不同数量的处理器核心进行计算。

2.并行作业(Parallel Job):并行作业是一组要在并行池中执行的任务。

可以通过将多个任务打包到一个并行作业中来同时执行。

3.任务(Task):任务是并行作业的最小执行单位,可以是一个函数调用、多个函数调用组成的任务图或数据处理任务等。

并行计算的实例用法以下是一些常见的MATLAB并行计算用法示例:1.使用parfor循环:parfor循环是一种特殊的循环结构,可以将循环迭代的任务分配到不同的工作进程中执行。

与普通的for循环不同,parfor循环迭代的顺序无法保证。

parfor i = 1:N% 并行执行的任务end2.使用spmd块:spmd块是一种用来执行数据并行任务的结构,可以在多个工作进程中并行执行相同的代码段。

在spmd块中,每个工作进程都有自己的局部变量。

并行计算-习题及答案-例题习题讲解

并行计算-习题及答案-例题习题讲解

例题习题讲解例1 SIMD-SM上求最大值算法Beginfor k=m-1 to 0 dofor j=2k to 2k+1-1 par-doA[j]=max{A[2j], A[2j+1]}end forend forend时间分析t(n)=m×O(1)=O(logn)p(n)=n/2c(n)=O(nlogn) 非成本最优例2 令n=2k(k>=0),求n个数和的并行算法算法运行时间:t(n)=O(logn)总运算量: W(n)=W(1)(n)+W(2)(n)+W(3)(n)=n+∑n/2h+1=O(n)由Brent定理知: t(n)=O(n/p+logn)例3 设A为矩阵,有如下串行程序段:f o r i=1t o n d of o r j=1t o n d oa[3i,2j]=a[3i-2,2j-1]e n df o re n df o r其相关方向向量为,可知行和列间同时存在数据相关。

在此我们可以试用行划分、列划分和方块划分.在行划分的情况下令m=┌n/p┐,例1的串行程序段可以转化为如下的并行程序段:f o r k=1t o P P a r-d of o r i1=1t o m d of o r j=1t o n d oa[3(k-1)m+3i1,2j]=a[3(k-1)m+3i1-2,2j-1]e n df o re n df o re n df o r例4 设A为一个n阶方阵,有如下串行程序段:f o r i=1t o n d of o r j=1t o n d oa[i,j]=a[i-1,j]e n df o re n df o r分析矩阵A的元素下标i和j,则i和j的相关方向向量为,各列之间数据无任何相关关系。

因此对矩阵A可按列划分。

串行程序段可转化为如下并行程序段:f o r k=1t o P P a r-d of o r j1=1t o m d of o r i=1t o n d oa[i,(k-1)m+j1]=a[i-1,(k-1)m+j1] e n d f o re n df o re n df o r例5注:本例无链路竞争和死锁现象例6 E立方选路0110(S)1101(D)1011(R)例7 DNS乘法示例C00=1×(-5)+2×7=9C01=1×(-6)+2×8=10C10=3×(-5)+4×7=13C11=3×(-6)+4×8=14例8 上三角方程组的回代解法并行化(1)SISD上的回代算法Begin(1)for i=n downto 1 do(1.1)x i=b i/a ii(1.2)for j=1 to i-1 dob j=b j-a ji x ia ji=0endforendforEnd(2)SIMD-CREW上的并行回代算法- 划分: p个处理器行循环带状划分- 算法Beginfor i=n downto 1 dox i=b i/a iifor all P j, where 1≤j≤p do for k=j to i-1 step p do b k=b k-a ki x ia ki=0endforendforendforEnd // p(n)=n, t(n)=n例9 n=8的BF网络表示P r,i与上层P r-1,i, P r-1,j相连, 这里j与i仅在第r位不同例10 一个在MPI中创建新通信域的例子M P I_C o m m M y W o r l d,S p l i t W o r l d;i n t m y_r a n k,g r o u p_s i z e,C o l o r,K e y;M P I_I n i t(&a r g c,&a r g v);M P I_C o m m_d u p(M P I_C O M M_W O R L D,&M y W o r l d);M P I_C o m m_r a n k(M y W o r l d,&m y_r a n k);M P I_C o m m_s i z e(M y W o r l d,&g r o u p_s i z e);C o l o r=m y_r a n k%3;K e y=m y_r a n k/3;M P I_C o m m_s p l i t(M y W o r l d,C o l o r,K e y,&S p l i t W o r l d);例11 考虑如下程序段:L1:f o r I=1t o50d o...S:X(2*I)=......T:...=...X(3*I+1)......e n df o r这里:f1(I)=2*I;g1(J)=3*J+1。

并行计算题目答案汇总

并行计算题目答案汇总

!第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和存储器的基本性能指标包括:工作负载,并行执行时间,存储器的层次结构和存储器的带宽。

并行计算习题(全)

并行计算习题(全)

第二章 习题例题:
1.
当代并行计算机系统介绍
请尽可能访问以下有关高性能并行计算的网址: IEEE/CS ParaScope (/parascope/),world-wide parallel computing sites High Performance Computing Lists (/homes/mcbryan/public_html/bb/2/summary.html) The Language List (http://cuiwww.unige.ch/langlist) enumerate programming languages TOP 500 (/benchmark/top500.html) World's TOP 500 most powerful computing sites (at Netlib,University of Tennessee) Myrinet () DSM bibliography (http://www.cs.ualberta.ca/~rasit/dsmbiblio.html) Berkeley Active Message page (/AM/active_messages.html) The Cray Research system page (/products/systems/) SGI/Cray Origin 2000 (/Products/hardware/servers/index.html) Cray T3E (/products/systems/crayt3e/) PetaFLOPS web site (/hpcc/) NASA HPCC Program (/hpcc/) Cray T3E (/products/systems/crayt3e/) IBM SP (/hardware/largescale/) Intel Paragon (/Services/ Consult/Paragon/paragon.html) Kai Li (/~li/) SP2 at MHPCC (/doc/SP2.general/SP2.general.html) MPI Standard site (/mpi/index.html) MIT Parallel and Distributed Operating Systems Group (/). National Center for Supercomputer Applications at UIUC (NCSA) (/) Cornell Theory Center (CTC) (/ctc.html) Argonne Natl Laboratory,Mathematics & Computer Science Div. (/) Army Research Lab (/) Lawrence Livermore National Laboratory (/comp/comp.html) Los Alamos Natl Laboratory (LANL) Advanced Computing Laboratory (/). Maui High Performance Computing Center (MHPCC) (/mhpcc.html) San Diego Supercomputer Center (/SDSCHome.html) Sandia National Laboratories (/) Massively Parallel Comp. Res. Lab. Parallel Processing in Japan (/papers/ppij.html) Cray Research (/) IBM High-Performance Computing (/) ParaSoft Corporation (/)

并行计算第一章课后习题

第一章1.通过对本章所讲内容的理解,结合自身的认识论述学习并行计算及编程的重要性及意义.并行计算及编程是计算机专业本科生核心专业提升课程。

并行计算可以提高计算机的性能。

越来越多的研究和应用领域将需要使用并行计算技术,并行计算技术将对传统计算技术产生革命性的影响2.通过访问超级计算TOP500网站,了解最新的世界超级计算机排名,列出排名前10的超级计算机系统及其基本配置参数,试述你对超级计算机作用、意义的理解和认识.2019年11月①Summit;处理器:2,397,824 个;峰值速度:200795 TFlop/s②Sierra;处理器:1,572,480 个;峰值速度:125,712 TFlop/s③神威太湖之光;处理器:10,649,600 个;峰值速度: 125,436 TFlop/s④TH-2天河二号;处理器:4,981,760个;峰值速度:100,679 TFlop/s⑤Frontera;处理器:448,448 个;峰值速度:38746 TFlop/s⑥Piz Daint 代恩特峰;处理器:387,872 个;峰值速度:27154 TFlop/s⑦Trinity三一;处理器:979,968 个;峰值速度:41,461 TFlop/s⑧ABCI;处理器:391,680 个;峰值速度:32,576 TFlop/s⑨SuperMUC-NG;处理器:305,856个;峰值速度:26873 TFlop/s⑩Lassen;处理器:288,288 个;峰值速度:23047 TFlop/s 超级计算机:能够执行一般个人电脑无法处理的大资料量与高速运算的电脑。

其基本组成组件与个人电脑的概念无太大差异,但规格与性能则强大许多,是一种超大型电子计算机。

具有很强的计算和处理数据的能力,主要特点表现为高速度和大容量,配有多种外部和外围设备及丰富的、高功能的软件系统;超级计算机是计算机中功能最强、运算速度最快、存储容量最大的一类计算机,多用于国家高科技领域和尖端技术研究,是一个国家科研实力的体现,它对国家安全,经济和社会发展具有举足轻重的意义,是国家科技发展水平和综合国力的重要标志。

(完整word版)并行计算实验快速排序的并行算法

3。

1实验目的与要求1、熟悉快速排序的串行算法2、熟悉快速排序的并行算法3、实现快速排序的并行算法3。

2 实验环境及软件单台或联网的多台PC机,Linux操作系统,MPI系统。

3.3实验内容1、快速排序的基本思想2、单处理机上快速排序算法3、快速排序算法的性能4、快速排序算法并行化5、描述了使用2m个处理器完成对n个输入数据排序的并行算法.6、在最优的情况下并行算法形成一个高度为log n的排序树7、完成快速排序的并行实现的流程图8、完成快速排序的并行算法的实现3.4实验步骤3.4。

1、快速排序(Quick Sort)是一种最基本的排序算法,它的基本思想是:在当前无序区R[1,n]中取一个记录作为比较的“基准”(一般取第一个、最后一个或中间位置的元素),用此基准将当前的无序区R[1,n]划分成左右两个无序的子区R[1,i-1]和R[i,n](1≤i≤n),且左边的无序子区中记录的所有关键字均小于等于基准的关键字,右边的无序子区中记录的所有关键字均大于等于基准的关键字;当R[1,i—1]和R[i,n]非空时,分别对它们重复上述的划分过程,直到所有的无序子区中的记录均排好序为止。

3.4.2、单处理机上快速排序算法输入:无序数组data[1,n]输出:有序数组data[1,n]Begincall procedure quicksort(data,1,n) Endprocedure quicksort(data,i,j)Begin(1) if (i<j) then(1。

1)r = partition(data,i,j)(1。

2)quicksort(data,i,r—1);(1.3)quicksort(data,r+1,j);end ifEndprocedure partition(data,k,l)Begin(1)pivo=data[l](2) i=k-1(3)for j=k to l—1 doif data[j]≤pivo theni=i+1exchange data[i] and data[j]end ifend for(4)exchange data[i+1] and data[l](5) return i+1End3.4.3、快速排序算法的性能主要决定于输入数组的划分是否均衡,而这与基准元素的选择密切相关。

并行计算(陈国良版)课后答案解析

第三章互连网络3.1 对于一颗K级二叉树(根为0级,叶为k-1级),共有N=2^k-1个节点,当推广至m-元树时(即每个非叶节点有m个子节点)时,试写出总节点数N的表达式。

答:推广至M元树时,k级M元树总结点数N的表达式为:N=1+m^1+m^2+...+m^(k-1)=(1-m^k)*1/(1-m);3.2二元胖树如图3.46所示,此时所有非根节点均有2个父节点。

如果将图中的每个椭圆均视为单个节点,并且成对节点间的多条边视为一条边,则他实际上就是一个二叉树。

试问:如果不管椭圆,只把小方块视为节点,则他从叶到根形成什么样的多级互联网络?答:8输入的完全混洗三级互联网络。

3.3 四元胖树如图3.47所示,试问:每个内节点有几个子节点和几个父节点?你知道那个机器使用了此种形式的胖树?答:每个内节点有4个子节点,2个父节点。

CM-5使用了此类胖树结构。

3.4 试构造一个N=64的立方环网络,并将其直径和节点度与N=64的超立方比较之,你的结论是什么?答:A N=64的立方环网络,为4立方环(将4维超立方每个顶点以4面体替代得到),直径d=9,节点度n=4B N=64的超立方网络,为六维超立方(将一个立方体分为8个小立方,以每个小立方作为简单立方体的节点,互联成6维超立方),直径d=6,节点度n=63.5 一个N=2^k个节点的de Bruijin 网络如图3.48。

试问:该网络的直径和对剖宽度是多少?答:N=2^k个节点的de Bruijin网络直径d=k 对剖宽带w=2^(k-1)3.6 一个N=2^n个节点的洗牌交换网络如图3.49所示。

试问:此网络节点度==?网络直径==?网络对剖宽度==?答:N=2^n个节点的洗牌交换网络,网络节点度为=2 ,网络直径=n-1 ,网络对剖宽度=43.7 一个N=(k+1)2^k个节点的蝶形网络如图3.50所示。

试问:此网络节点度=?网络直径=?网络对剖宽度=?答:N=(k+1)2^k个节点的蝶形网络,网络节点度=4 ,网络直径=2*k ,网络对剖宽度=2^k3.9 对于如下列举的网络技术,用体系结构描述,速率范围,电缆长度等填充下表中的各项。

mpi并行计算分布式作业

mpi并行计算分布式作业
MPI并行计算分布式作业涉及将一个大的计算任务拆分成多个较小的子任务,然后将这些子任务分配给多个处理器核心并行执行,以提高计算效率和减少计算时间。

MPI并行计算广泛应用于高性能计算、数据挖掘、科学计算等领域。

以下是一个简单的MPI并行计算分布式作业的示例:
1.任务拆分:首先,将原始的大任务拆分成多个较小的子任务,每个子任务可以在不同的处理器核心上独立执行。

2.任务分配:使用MPI的通信协议,将子任务分配给各个处理器核心。

这可以通过使用MPI的"send"和"recv"函数来实现。

3.任务执行:每个处理器核心执行相应的子任务,并通过MPI的通信机制进行数据交换。

这可以涉及到进程间通信(IPC)和消息传递等操作。

4.结果合并:最后,各个处理器核心将结果汇总,合并成一个完整的输出结果。

这可以通过使用MPI的"reduce"函数来实现。

需要注意的是,MPI并行计算分布式作业需要处理数据传输和同步等问题,以确保各个处理器核心之间的正确通信和协同工作。

同时,
还需要注意负载均衡和资源利用率等问题,以充分发挥并行计算的优点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云南大学信息学院2010—2011学年下学期研究生课程《并行计算》期末考试A卷任课教师:专业:学号:姓名:一、基础知识1. 简单阐述当前流行的并行计算机分类,以及各类并行机体系结构的主要特征。

按内存访问模型、微处理器和互联网络的不同,当前流行的并行机可分为对称多处理共享存储并行机(SMP:Symmetric Multi-Processing)、分布共享存储并行机(DSM:Distributed Shared Memory)、机群(cluster)、星群(constellation)和大规模并行机(MPP:Massively Parallel Processing)等五类。

SMP并行机有如下主要特征:对称共享存储、单一的操作系统映像、局部高速缓存cache 及其数据一致性、低通信延迟、共享总线带宽、支持消息传递、共享存储并行程序设计。

SMP 并行机具有如下缺点:欠可靠、可扩展性(scalability)较差。

DSM 并行机具有如下主要特征:并行机以结点为单位,每个结点包含一个或多个CPU,每个CPU 拥有自己的局部cache,并共享局部存储器和I/O设备,所有结点通过高性能互联网络相互连接;物理上分布存储;单一的内存地址空间;非一致内存访问(NUMA)模式;单一的操作系统映像;基于cache 的数据一致性;低通信延迟与高通信带宽;DSM 并行机可扩展到数百个结点,能提供每秒数千亿次的浮点运算性能;支持消息传递、共享存储并行程序设计。

机群(cluster)有三个明显的特征:1、系统由商用结点构成,每个结点包含2-4 个商用微处理器,结点内部共享存储。

2、采用商用机群交换机连接结点,结点间分布存储。

3、在各个结点上,采用机群Linux 操作系统、GNU 编译系统和作业管理系统。

星群(constellation)有三个明显的特征:1、系统由结点构成,每个结点是一台共享存储或者分布共享存储的并行机子系统,包含数十、数百、乃至上千个微处理器,计算功能强大。

2、采用商用机群交换机连接结点,结点间分布存储。

3、在各个结点上,运行专用的结点操作系统、编译系统和作业管理系统。

大规模并行机系统主要特征为:1、系统由结点构成,每个结点含10 个左右处理器,共享存储。

处理器采用专用或者商用CPU。

2、采用专用高性能网络互连,结点间分布存储。

3、系统运行专用操作系统、编译系统和作业管理系统。

2. 一个多处理机系统由100台处理器组成,每台处理器的峰值执行速度为2Gflops.当10%代码为顺序执行而90%代码可并行化时,该系统以Gflops表示的性能为多少?Sp= 1/(10%+90%/100)≈9.17Sp*2Gflops=18.34Gflops所以该系统的性能为18.34Gflops 。

二、基本通信操作1. 若并行计算机使用存储转发路由选择。

大小为m 的消息经长度为d 的路径从P source 传送到的P ndestinatio 成本为ts+tw*d*m 。

一种可替代的传送大小为m 的消息的方法如下:将消息分成k 部分,每部分的大小为m /k ,然后将这k 个不同的消息一个接一个地从P source 传送到P ndestinatio 。

对于这种新方法,在下面两种情况下,导出将大小为m 的消息传送到d 站以外所需时间的表达式。

1) 假设在路径中,当前一条消息到达下一个节点后,另一条消息就能从P source 发出.2) 假设只有当前一条消息到达后另一条消息才能从P source 发出。

对于每种情况,当k 的值在1和m 之间变化时,试讨论表达式的值。

如果ts 很大,或者ts =0时,k 的最优值是多少?解:由题意可知① t1=ts+(m/k)*tw*d+(k-1)m/k * tw② t2=k*(ts+tw*d*m/k)1) t1=ts+[(k-1)/k+d/k]*m*tw 有表达式可以看出随K 值的增大而减小。

表达式的值ts+(m-1+d)*tw ≦t1≦ts+tw*d*m.所以k 的最优值为m 。

2) t2=k*ts+tw*d*m,有表达式的值随K 的增大而增大。

表达式的值ts+tw*d*m ≦t2≦k*ts+tw*d*m.。

当k 为1时取得最小值,所以k 的最优值为1.1)t(sp)= (k m d t t w s ⨯⨯+)+(k-1)·(km d t t w s ⨯⨯+1) 当s t =0时,t(sp) = k m d t w ⨯⨯+d m t w ⨯-k m d t w ⨯⨯1 =d m t w ⨯+⎪⎭⎫ ⎝⎛-⨯d d k m t w 1此时,k 的最优值为m 当s t =∞时,t(sp) = k m d t t w s ⨯⨯++k ·s t +d m t w ⨯-s t -k m d t w ⨯⨯1 = k ·s t +d m t w ⨯+⎪⎭⎫ ⎝⎛-⨯d d k m t w 1此时,k 的最优值为1 2)t(sp)= k km d t t w s ⋅⨯⨯+)( 当s t =0时,t(sp) =k k m d t w ⋅⨯⨯)(=m d t w ⨯⨯,此时,k 的最优值为任意数 当s t =∞时,t(sp) = k ·s t +m d t w ⨯⨯,此时,k 最优值为15. 在环中,多对多广播有两种不同的实现方法:(1)标准环算法;(2)超立方体算法。

1) 上述两种方法的运行时间各是多少?如果k 个消息必须在同一时间通过同一链路,那么假定这些消息的有效字传送时间为kt w 。

同时假定t s =100t w 。

2) 如果消息m 非常大,那么上述两种算法哪个更好,为什么?3) 如果消息m 非常小(可能是一个字),那么哪个算法更好,为什么?解:1) 标准环算法的运行时间:T=(ts+k*tw*m*p/2)*(p-1)超立方体算法的运行时间:T=(ts+k*tw*m*p/2)*logp6.考虑一台有2n 个处理器的共享地址空间并行计算机。

假设每个处理器都有一些本地内存,],[,],[j i B j i A 被储存在j i P ,的本地内存中。

此外,j i P ,在它的本地内存中计算],[j i C 。

假定它在非本地内存中进行一次读或写需要的时间是w local t t +,在本地内存中进行一次读或写需要的时间是local t 。

请推导下列算法在这台并行计算机上的并行运行时间的表达式。

CREW PRAM 上两个n n ⨯矩阵A 和B 相乘的算法,得出矩阵B A C ⨯=――――――――――――――――――――――――――――――――――――――1. procedure MA T_MULT_CREW_PRAM(A, B, C , n)2. begin3. Organize the 2n processes into a logical mesh of n n ⨯;4. for each process j i P , do5. begin6. ],[j i C :=0;7. for k :=0 to n -1 do8. ],[],[],[:],[j k B k i A j i C j i C ⨯+=;9. endfor ;10. end MAT_MULT_CREW_PRAM---------------------------------------------------------------------------------------------------------------- 解: 当k=i 时,],[j i B 在j i P ,的本地内存中,此时执行第8条语句的时间为local t +w local t t ++local t +local t ;同理可得,当k=j 时,],[j i A 在j i P ,的本地内存中,此时执行第8条语句的时间为local t +local t +w local t t ++local t ,当k 既不等于i 也不等于j 时,执行第8条语句的时间为,local t +w local t t ++w local t t ++local t 因此,最后总的时间为t(sp) =(n-2)·(local t +w local t t ++w local t t ++local t )+2·(l o c a l t +local t +w local t t ++local t )= n ·(local t +w local t t ++w local t t ++local t )-2·t w三、计算与编程4. 编写程序实现蒙特卡罗方法的并行计算.蒙特卡罗算法求pi 。

//并行算法#include <stdio.h>#include <pthread.h>#include <time.h>#include <stdlib.h>#include <sys/time.h>#include <unistd.h>long cs=0; //循环次数long count=0; //主线程有效次数long count_thread=0; //thread 线程有效次数struct timeval start, finish; //定义开始结束时间double diffsec,diffusec;long t;//每次生成数据数量pthread_mutex_t mutex;long double *data_thread,*data_main;//void *thread(void *)void thread(void){int i=0,j=0;double x,y;//long double *data_thread;long double data_thread[t];for(i=0;i<cs/t;i++){// data_thread=new (long double)[t];pthread_mutex_lock (&mutex);//lockfor(j=0;j<t;j++)data_thread[j]=(long double)rand()/(long double)RAND_MAX; pthread_mutex_unlock(&mutex);//unlockfor(j=0;j<t;j+=2){x=data_thread[j];y=data_thread[j+1];if((x*x+y*y)<=1)count_thread++;}//delete []data_thread;}}//主线程计算量为总数的一半int main(void){printf("Please input the number:");scanf("%d",&cs);cs=cs*1000000;printf("Please input the number for generating the data once:"); scanf("%d",&t);t=t*100000;pthread_t id;int ret;srand( (unsigned)time( NULL ) );pthread_mutex_init(&mutex,NULL);//声明互斥锁ret=pthread_create(&id,NULL,(void *)thread,NULL); //创建thread线程 gettimeofday(&start,NULL); //记录开始时间int i=0,j=0;double x,y;long double data_main[t];for(i=0;i<cs/t;i++){// data_main=new (long double)[t];pthread_mutex_lock(&mutex);//lockfor(j=0;j<t;j++)data_main[j]=(long double)rand()/(long double)RAND_MAX; pthread_mutex_unlock(&mutex);//unlockfor(j=0;j<t;j+=2){x=data_main[j];y=data_main[j+1];if((x*x+y*y)<=1)count++;}//delete []data_main;}pthread_join(id,NULL); //两线程同步count+=count_thread;gettimeofday(&finish,NULL); //记录结束时间//计算所耗时间diffsec=(double)__sec;diffusec=(double)(__usec)/(double)1000000; diffsec+=diffusec;//输出结果printf("Cost time=%f second \n",diffsec);printf("roop times=%d \n",cs);printf("effective times=%d \n",count);printf("pi= %f \n",4*(double)count/(double)cs);return(0);}。

相关文档
最新文档