典型并行算法的实现性能分析
高性能计算中的并行计算模型及其特点分析

高性能计算中的并行计算模型及其特点分析高性能计算(High-Performance Computing,HPC)是指利用大规模的计算机集群或并行计算机体系结构,通过并行处理技术和优化算法,实现大规模科学计算、复杂数据分析和模拟实验的能力。
在高性能计算中,使用并行计算模型可以提高计算效率和性能,并实现更快速的计算任务处理。
本文将对几种常见的并行计算模型进行分析,并讨论它们的特点。
1. SIMD并行计算模型单指令多数据(SIMD,Single Instruction Multiple Data)是一种并行计算模型,它通过并行执行多个相同指令,在多个数据上同时操作。
SIMD在数据并行性较高的任务中表现出色,如图像处理、信号处理等。
SIMD计算模型的特点是数据并行性强,计算过程中的每个指令会同时作用于多个数据元素。
它可以提高性能,减少资源的浪费。
然而,其缺点是程序设计较为复杂,需要在编程时手动实现并行指令。
2. MIMD并行计算模型多指令多数据(MIMD,Multiple Instruction Multiple Data)是一种并行计算模型,它通过在多个处理单元上执行多个独立的指令,同时处理不同的数据。
MIMD广泛应用于科学计算、仿真模拟等领域。
MIMD计算模型的特点是每个处理单元都独立执行指令,并且可以在不同的数据上进行操作。
这种模型适用于任务之间的数据依赖较弱的情况。
与SIMD相比,MIMD具有更好的灵活性和扩展性,但也会引入更多的通信和同步开销。
3. SPMD并行计算模型单程序多数据(SPMD,Single Program Multiple Data)是一种并行计算模型,它使用多个处理单元执行相同的程序,但处理不同的数据。
SPMD广泛用于科学计算、并行编程和并行算法设计等领域。
SPMD计算模型的特点是多个处理单元以相同的方式执行同一个程序,但每个处理单元可以有不同的数据输入。
它弥补了MIMD模型中通信和同步的不足,并提供了更好的可扩展性和负载均衡性。
面向大数据处理的并行计算模型及性能优化

面向大数据处理的并行计算模型及性能优化随着信息时代的发展,大数据已经成为了人民生产生活中的重要组成部分。
而对大数据进行高效处理和分析已经成为了一个紧迫的问题。
并行计算作为一种解决方案,广泛应用于大数据处理和分析的领域。
本文将讨论面向大数据处理的并行计算模型及其性能优化方法。
一、并行计算模型1. 传统的并行计算模型传统的并行计算模型主要有共享内存模型、分布式内存模型和混合模型。
- 共享内存模型:共享内存模型中,多个处理器通过共享内存交换数据,每个处理器可以同时访问和修改共享内存中的变量。
这种模型的优点是简单易懂,但缺点是并行度有限,不适用于大规模数据处理。
- 分布式内存模型:分布式内存模型中,多个处理器通过消息传递的方式交换数据。
每个处理器有自己的本地内存,并且需要通过消息传递来实现数据的共享或同步。
这种模型的优点是适用于大规模数据处理,但缺点是编程复杂度高。
- 混合模型:混合模型是共享内存模型和分布式内存模型的结合。
多个共享内存模型的计算节点组成一个分布式内存模型的集群。
这种模型既考虑了共享内存模型的便利性,又兼顾了分布式内存模型的灵活性。
2. 新兴的并行计算模型新兴的并行计算模型主要有MapReduce、Spark和MPI。
- MapReduce模型:MapReduce模型是Google提出的一种分布式计算模型。
它将大数据分解为不同的部分,在各个计算节点上并行地执行计算,并将结果进行合并。
MapReduce模型适用于大规模数据的批处理,但不适用于实时计算。
- Spark模型:Spark是一种基于内存的分布式计算框架,具有较高的计算速度。
Spark模型中,数据以弹性分布式数据集(RDD)的形式存储,可以在内存中进行迭代计算。
Spark模型适用于大规模数据的实时计算和迭代计算。
- MPI模型:MPI(Message Passing Interface)模型是一种用于并行计算的标准接口。
它允许不同计算节点进行消息传递,实现数据共享和同步。
超算应用中的并行算法研究

超算应用中的并行算法研究随着计算机技术的不断发展,大型超级计算机(即超算)的研究和应用越来越引起人们的关注。
在超算领域中,一种重要的技术就是并行算法,它可以在多台计算机上同时运行,以加快计算的速度。
本文将探讨超算应用中的并行算法研究。
一、概述并行算法是超算应用中的一个重要研究方向。
在传统的串行计算中,计算机只能使用一条指令按顺序执行程序中的各个操作。
而在并行计算中,计算机可以同时执行多个操作,从而节省计算时间。
并行算法可以分为共享内存和分布式内存两种模式。
在共享内存模式下,多个处理器共享同一块内存,而在分布式内存模式下,每个处理器都有自己的内存。
二、并行算法在超算应用中的应用1. 并行矩阵乘法矩阵乘法是线性代数的基本操作之一。
在超算应用中,矩阵乘法特别常见。
如果使用传统的串行方法,计算过程将会非常耗时。
而采用并行算法,则可以在多台计算机上同时进行计算,从而极大地缩短计算时间。
2. 并行排序算法排序是计算机科学中的一种基本算法。
在超算应用中,排序算法通常用于数据分析和挖掘等领域。
并行排序算法可以让多台计算机同时进行排序操作,从而加快排序的速度。
3. 并行图像处理算法图像处理是超算应用的重要领域之一。
在大规模的图像处理中,串行算法往往不能满足需求。
因此,采用并行算法可以让多台计算机同时处理图像数据,从而提高处理速度。
三、并行算法的优势并行算法相对于传统的串行算法具有如下优势:1. 快速计算:并行算法可以利用多台计算机同时工作,从而大大缩短计算时间。
2. 高可靠性:采用并行算法可以保证数据的冗余存储,提高系统的可靠性。
3. 扩展性:并行算法能够随着计算机数量的增加而扩展,从而满足不断增长的数据需求。
4. 灵活性:并行算法可以采用不同的计算模式,适应不同的应用场景。
四、并行算法的实现方式并行算法的实现方式可以分为以下几种:1. MPIMPI是消息传递接口(Message Passing Interface)的缩写。
高性能计算并行计算模型与并行算法的设计与优化

高性能计算并行计算模型与并行算法的设计与优化随着科技的快速发展和计算需求的提高,现代计算机系统面临着越来越大规模和复杂的计算任务。
在这种背景下,高性能计算应运而生,成为了解决大规模计算问题的重要手段之一。
高性能计算的核心在于并行计算模型与并行算法的设计与优化。
本文将分析与讨论现有的并行计算模型和算法,并介绍其设计与优化的方法。
一、并行计算模型并行计算模型是指计算任务在计算机系统中的分布和执行方式。
常见的并行计算模型包括共享内存模型和分布式内存模型。
1. 共享内存模型共享内存模型指的是多个计算任务共享一块物理内存,并通过内存的读写实现任务之间的通信和同步。
常见的共享内存模型包括共享内存多处理器系统(SMP)和非一致内存访问系统(NUMA)。
在设计并行算法时,可以使用共享内存模型来实现任务的交互和数据共享,提高计算效率。
同时,需要注意解决共享内存并发读写的冲突问题,避免数据一致性错误。
2. 分布式内存模型分布式内存模型指的是计算任务分布在多个计算节点上,通过消息传递实现节点之间的通信和同步。
常见的分布式内存模型包括消息传递接口(MPI)和分布式共享内存模型(DSM)等。
在设计并行算法时,可以使用分布式内存模型来实现任务的划分和调度,并通过消息传递实现节点之间的数据交换。
同时,需要注意解决节点之间的通信延迟和负载均衡问题,提高计算效率。
二、并行算法的设计与优化并行算法是指针对并行计算模型设计的具有并行特性的算法。
在设计并行算法时,需要考虑以下几个方面的问题:1. 任务划分与负载均衡任务划分是指将计算任务划分为多个子任务,并分配到不同的计算节点上进行并行计算。
在进行任务划分时,需要考虑任务之间的数据依赖性和负载均衡问题,避免任务之间的数据冗余和计算节点之间的计算能力不平衡。
2. 通信与同步机制通信与同步机制是指实现计算节点之间的通信和同步操作,保证并行计算的正确性和一致性。
在设计通信与同步机制时,需要考虑通信延迟和带宽的影响,选择合适的通信方式和同步策略,提高计算效率。
并行计算算法设计与分析

并行计算算法设计与分析一、引言在现代计算机系统中,并行计算已经成为一种重要的技术手段。
并行计算算法的设计与分析是研究并行计算的核心内容之一。
本文将详细介绍并行计算算法的设计与分析方法,并讨论其在实际应用中的意义与挑战。
二、并行计算算法的分类1. 数据并行算法数据并行算法采用将计算任务分割为多个子任务,每个子任务在不同的处理单元上并行执行的方式。
典型的数据并行算法包括矩阵乘法算法、并行排序算法等。
2. 任务并行算法任务并行算法是将计算任务分解为多个相互独立的子任务,并行执行的方式。
各个子任务之间没有数据依赖关系,可以同时进行计算。
典型的任务并行算法包括并行搜索算法、并行图算法等。
3. 流水线并行算法流水线并行算法是将计算任务分解为多个阶段,不同处理单元在不同阶段上并行执行,通过流水线的方式提高计算效率。
典型的流水线并行算法包括多级缓存机制的并行计算算法、指令级并行计算算法等。
三、并行计算算法的设计方法1. 并行分解并行分解是指将原始的计算任务分解为多个子任务的过程。
在并行分解过程中,需要考虑任务的划分方式、任务之间的依赖关系以及负载均衡等问题。
2. 并行通信并行通信是指多个处理单元之间的信息传递与同步。
在并行计算算法的设计中,合理的并行通信方式能够提高计算效率。
常用的并行通信方式包括消息传递接口MPI、共享内存等。
3. 并行合并并行合并是指将多个子任务的计算结果合并为最终的结果的过程。
在并行合并过程中,需要考虑合并方式以及结果的正确性验证等问题。
四、并行计算算法的分析方法1. 速度up与加速比速度up表示并行计算与串行计算相比的计算速度提升程度。
加速比表示并行计算中处理单元数量增加时,计算速度相对于串行计算的提升比例。
通过对速度up与加速比的分析,可以评估并行算法的性能优劣。
2. 并行性的度量与评估并行性是指并行计算中各个子任务可以同时进行的程度。
通过对并行性的度量与评估,可以确定并行计算算法的最佳并行度。
深入理解并行算法的基本原理与方法

深入理解并行算法的基本原理与方法并行算法是指同时执行多个计算任务的算法。
它是计算机科学中非常重要的一个领域,可以大大提高计算效率,加快数据处理速度。
并行算法是目前大规模计算的关键技术之一,它带来了巨大的计算能力提升,使得我们能够解决以前无法解决的复杂问题。
并行算法的基本原理是将一个大的计算任务分解成许多小的子任务,并在多个处理单元上同时进行运算。
这样能够充分利用计算资源,提高计算效率。
在并行算法中,最常用的处理单元就是多核处理器、GPU、分布式计算系统等。
并行算法可以分为两种基本类型:数据并行和任务并行。
数据并行是指将不同的数据分配给不同的处理单元进行并行计算,而任务并行则是将不同的计算任务分配给不同的处理单元进行并行计算。
这两种并行算法各有其适用的场景和优缺点,需要根据具体的计算任务来选择。
在并行算法中,最常用的并行计算模型有Fork-Join模型、MapReduce模型、数据流模型等。
其中,Fork-Join模型是最基本的一种并行计算模型,它将一个大的计算任务分解成许多小的子任务,并在多个处理单元上进行并行计算,最后将结果进行合并。
而MapReduce 模型则是一种基于键值对的并行计算模型,它适用于大规模数据分析和处理。
数据流模型则是一种基于数据流的并行计算模型,它适用于需要实时处理数据的场景。
并行算法的设计与实现是一个非常复杂的过程,需要考虑到诸多因素。
首先,需要考虑到任务的分解与调度问题。
对于一个大的计算任务,如何将其合理地分解成小的子任务,并在多个处理单元上进行并行计算是一个重要问题。
其次,需要考虑到通信与同步问题。
在多个处理单元之间进行通信和同步是一个非常关键的问题,要保证各个处理单元之间的数据一致性和协调性。
最后,还需要考虑到负载均衡与容错问题。
在多个处理单元上进行并行计算时,如何保持各个处理单元的负载均衡,以及如何应对处理单元的故障是一个重要问题。
在并行算法中,最常用的并行算法设计与实现模式有数据并行、任务并行、流水线并行等。
并行计算架构的概述

并行计算架构的概述计算机技术的发展已经带来了无限的可能性,然而,计算机的处理速度和计算能力却无法满足当前复杂计算的需求。
为解决这一问题,人们开始研究并行计算架构,提高计算机的性能和效率。
本文将探讨并行计算架构的概述,包括并行计算的基本概念、并行计算的架构类型以及并行计算的实现和应用。
一、并行计算的基本概念并行计算是指同时使用多个处理器或计算机来处理一些相互独立的计算任务,以提高计算机的效率和处理速度。
并行计算可以用来处理大量数据、进行复杂计算和模拟等计算任务,其主要优势在于可以缩短计算时间和提高计算精度。
并行计算可以分为两种类型:共享内存和分布式内存。
共享内存是指多个处理器共同访问同一块内存,这些处理器之间共享内存中的数据,共享内存计算机可以用来解决计算密集型的任务,但是内存的带宽会成为瓶颈;分布式内存是指多个处理器运行在不同的计算机上,这些处理器通过网络相互通信,分布式计算机可以用来解决大规模数据的处理和存储。
并行计算的核心是在多个处理器之间进行数据的划分和通信,因此并行计算的设计需要考虑数据划分、进程通信、并行算法等多个因素,以保证计算的高效和正确性。
二、并行计算的架构类型并行计算可以分为多种架构类型,这些架构类型依据不同的设计理念和目标而区分。
下面将介绍一些典型的并行计算架构类型。
1. Symmetric Multiprocessing(SMP)对称多处理器结构SMP是一种共享内存的并行计算架构,其基本设计原则是多个处理器共享同一块内存,并且每个处理器可以独立地访问内存中的数据。
SMP结构最大的特点是处理器之间的通信速度非常快,因为它们共享内存,通信无需通过慢速的网络。
SMP计算机可以用于解决计算密集型的任务和对内存要求较高的应用场合,如数据库管理系统等。
2. Distributed Memory(DM)分布式内存结构DM是一种分布式内存的架构类型,其基本设计原则是多个处理器运行在不同的计算机上,每个处理器有自己的本地内存,并且处理器之间通过网络通信相互传输数据。
深入理解软件开发中的并行计算和并行算法

深入理解软件开发中的并行计算和并行算法随着科学技术的不断发展,计算机的性能也在不断提升,然而,随着问题规模的不断扩大,传统的串行计算已经不能满足大规模计算的需求。
而并行计算作为一种更加高效的计算方法,逐渐成为了解决大规模计算问题的重要手段。
本文将深入探讨并行计算和并行算法在软件开发中的重要性、应用场景、实现原理和未来发展方向。
一、并行计算的重要性1.1提高计算速度传统的串行计算在处理大规模数据时,往往会出现计算速度慢、效率低的问题。
而并行计算可以将任务分配给多个处理器同时运行,从而大大提高了计算速度,缩短了计算时间,提高了计算效率。
1.2解决大规模计算问题在科学计算、工程计算、数据挖掘等领域,经常需要处理大规模的计算问题,如大规模矩阵运算、大规模数据处理等。
传统的串行计算已经不能满足这些大规模计算问题的需求,而并行计算可以有效地解决这些问题,提高计算能力。
1.3充分利用硬件资源随着计算机硬件的发展,多核处理器、分布式集群等并行计算硬件平台已经得到了广泛的应用。
而并行计算可以充分利用这些硬件资源,发挥最大的性能,提高系统的整体运行效率。
1.4实现实时计算在一些需要实时计算的应用场景中,如金融交易、网络流量分析、实时监控等,传统的串行计算已经不能满足实时计算的需求。
而并行计算可以将计算任务分配给多个处理器同时处理,从而实现实时计算,满足实时性要求。
以上这些重要性,充分说明了并行计算在软件开发中的重要性,也说明了并行算法在解决这些问题中的重要作用。
二、并行计算的应用场景2.1科学计算在科学计算领域,经常需要处理大规模的计算问题,如天气预报模拟、地震模拟、星际物理模拟等。
而并行计算可以有效地解决这些大规模计算问题,提高计算速度,加快科学研究的进展。
2.2工程计算在工程计算领域,如航空航天、汽车制造、电子设计等,经常需要处理大规模的计算问题,如结构仿真、流体力学模拟、电磁场模拟等。
而并行计算可以加速这些工程计算的过程,提高计算效率,降低计算成本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4卷第5期2003年10月空军工程大学学报(自然科学版)JOURNALOFAIRFoRCEENCINEERINGUⅣIvERSrrYfNATURALSCIENCEEDm0Nvo】4No50ct.2003典型并行算法的实现性能分析雷英杰1,霍红卫2(1空军工程大学导弹学院,陕西三原713800;2.西安电子科技大学计算机学院,陕西西安710071)摘要:讨论和分析了几种典型的并行算法及其各种处理方法在基于wjndowsxP环境、消息传递接口MPI并行编程环境支持和c++语言描述的编程实现问题,给出了相应并行程序详尽的计算结果,对比分析了它们的计算性能,以及它们对计算精度产生的影响。
分析结论以相应并行算法的实际编程实现和试验计算数据为基础,可信度高。
设计实例表明。
分析方法是有效的。
关键词:并行计算;消息传递接o;并行算法;高性能计算中图分类号:TP393文献标识码:A文章编号:1009—3516(2003)05一0067—04并行算法计算性能问题是高端、高性能、大规模并行计算领域非常重要的研究内容…。
本文以计算。
值并行算法为例,通过对若于典型并行算法基于消息传递接口MPI(MessageP∞sing111terface)编犁21和c语言描述的HosⅡess程序实现及其运行结果的分析,给出一些新的对比分析结论。
lMPI并行编程环境在基于MPI的编程模型中,计算是由一个或多个彼此通过调用函数库函数进行消息收、发通信的进程所组成。
在绝大部分MPI实现中,一组固定的进程在程序初始化时生成。
这些进程可以执行相同或不同的程序。
进程间的通信可以是点到点的,也可以是群体的(collective)。
MPI最重要的特性是使用了称之为通信体的机构,允许程序员定义一种封装内部通信结构的模块。
所谓通信体就是一个进程组加上进程活动环境,其中进程组就是一组有限或有序的进程集合。
所谓有限意即组内包含有限数目的n个进程依次按o,1,…,n—l整数定序(Ranked)。
MPI中的进程活动环境是指系统指定的超级标记(supertag),它能安全地将彼此相互冲突的通信区分开来。
每个通信体都有一个不同的、系统指定的进程活动环境,在这一个进程活动环境中发送的消息不能在另一个进程活动环境中被接收。
MPI不是一个独立的、白包含的软件系统,MPI进程是重量级、单线程的进程”]。
MPI标准并不指明如何启动并行计算,它可通过命令行参数指定应被生成的进程数,然后按sPMD或MPMD方式执行程序”J。
MPI并行程序中经常需要一些进程组闻的群体通信,包括:①路障(Ba而eT)——同步所有进程;②广播(Bmadcast)——从一个进程发送一条数据给所有进程;③收集(Gat}ler)——从所有进程收集数据到一个进程;④散射(scatcer)——从一个进程散发多条数据给所有进程;⑤归约(Reduction)——包括求和、求积等。
MPI包含的函数多达200个,它们的功能及参数描述参见文献[4]、[5]等。
2问题与算法描述设计求w值并行算法的关键是构造一个合适的函数,(*),使得它计算起来既简便,误差又小。
即使收稿日期:2003—05一12基金项目:国家教育部骨干教师资助计划项目(GG一810—90039—1003)资助作者简介:重摹杰(1956一),争,阵西渭南人,教授,博士生导师;主要从事智能信息处理与模式识别研究霍红卫(1963一),女,陕西西安人,主要从事算法设计与分析,并行与分布计算研究空军工程大学学报(自然科学版)2003年w=【,(x)出一∑^。
以扎)这里取n=O,6=1,Ⅳ为子区间分割数,于是^=1/Ⅳ。
我们选取二种函数,一种是,(x)=4√l—x2,其物理意义是单位圆面积s=”・r2,我们称之为算法1。
另一种函数是,(z)=4/(1+z2),可以直接进行积分,我们称之为算法2。
算式中的%在计算各个子区间的小矩形面积时,按左边界计算取q=^+i,按右边界计算为%=^t(i+1),按中间值计算为t=^-(i+o.5),按梯形计算时则要同时用到左、右两个边界。
并行算法实现时,分配每一个进程或cPu计算其中的若干个子区间,然后通过归约,得到最终结果㈣。
计算过程中。
精度越高,要求Ⅳ越大。
对于足够大的Ⅳ,要求在p个进程或处理机上尽量均衡分配计算任务,通过归约完成总的计算。
3编程实现3.1编程与运行环境所实现的并行计算Ⅱ值的程序环境如下:MPl支持为MPIcHI.2.4;编程语言为Micmsoftvisualc++6.0;开发环境为MicrosoftwhldowsxP&VisuBlstudio6.0;硬件环境为PⅡI900cPu,128MRAM,256kcach8;运行环境为window8xP。
3.2基于MPI的编程算法实现中用到的MPl函数主要有:MPIjNrr~启动MPI计算;MPl—comnL-size——确定进程数;MPI—co∞一mk——确定自己的进程标识数;MPI—Get—processor—nalne——获取处理机名字;MPI—wtime——获取系统时钟时间,以便记录算法始末运行的时刻和计算算法总的运行时间;MPI—Bcast——广播进程信息给该组的所有其它进程;MPI—Reduce——归约,使各个进程所计算的值归约为一个值;MPI—Finalize——结束MPI进程。
此外,比较重要的函数还有MPI—send——发送一条消息;MPI—Recv——接受一条消息等。
对于足够大的子区间划分数Ⅳ和进程数p,每个进程均衡完成的计算量为总计算量的^坳。
每一个计算进程通过MPI—Bcasc函数将自己计算的结果传递给其他进程,最后由某一进程(标识数MyId为o)利用MPI—Reduce函数进行归约,从而得到总的计算结果。
3.3实现的算法功能对于算法l,程序实现了如下功能:①利用小矩形左边界分解计算函数子区间面积的数值积分法,记为RLAl;②利用小矩形中问界分解计算函数子区间面积的数值积分法,记为RMAl;③利用小矩形右边界分解计算函数子区间面积的数值积分法,记为RRAl;④利用小梯形分解计算函数子区间面积的数值积分法,记为RTAl。
对于算法2,程序实现了如下功能:①利用小梯形分解计算函数子区间面积的数值积分法,记为ATA2;②利用小矩形中间界分解计算函数子区间面积的数值积分法,记为AMA2为分析方便起见,表l列出了程序实现的功能号、算法及处理方法之间的对应关系。
使用时通过交互式菜单指定选择相应的算法及其实现功能,然后指定相应的子区间分割数目,程序将给出相应的计算结果。
此外,也可以通过编辑一个文本文件,来设定需要选择的功能号和需要指定的子区间划分数目,然后在启动运行该程序时通过系统所提供的重定向功能,把该程序的输入重新定向到编辑好的文本文件。
“功能号”取值可参见表1.“子区间分割数”取值应为任何足够大的正整数,如102—108。
表1程序功能、算法、处理方法对应关系第5期雷英杰等:典型并行算法的实现性能分析4结果及分析针对各种算法功能,分别指定不同的子区间分割数,它们各自的计算结果如表2一表7所示。
在设定计算参数时,子区间分割数从102~108共分7个数量级。
表中分别列出子区间分割数Ⅳ、新计算出来的w值与25位”值比较后的误差值,以及本次计算所用的时间(单位为s)。
精确Ⅱ值的前25位为3.14l592653589793238462643。
表2RLAl计算结果表4RRAl计算结果表6ATAl计算结果表3RMAl计算结果表5RTAl计算结果表7AMAl计算结果通过对计算结果的仔细观察、分析和比较,可以得出如下几点结论:1)子区同分割数与计算时间的关系。
无论对于哪一种计算功能,子区间的划分数目每增加一个数量级,计算叮r值所需要花费的时间基本上也随之增加一个数量级。
2)算法性能。
在分割子区间数目相同的情况下,无论是从计算时间,还是从计算精度方面来看,算法2都要优于算法l。
算法2在计算精度方面的优势十分明显。
究其原因,主要是因为算法2使用了反正切函数的导数函数作为母函数,计算简单,只包含一次乘法和一次除法。
而算法1所使用的母函数除包含2次乘法之外,还需要多进行一次求平方根开方运算,而正是这个开方运算,既花费较多的时间,又使计算累计误差随机传播,从而降低了计算的速度和精度。
单从计算时间来看,无论是算法l还是算法2,各种矩形法的计算时间基本都在同一个量级上,而梯形70空军工程大学学报(自然科学版)2003年法的计算时间则要长得多。
3)梯形法与矩形法。
两者相比,由于梯形法要计算左、右边界两次,所以计算时间的相应增加远不止一倍。
通过比较表2、表3、表4与表5,以及比较表6与表7,这一点十分明显。
以子区间划分108为例,对于算法l,矩形法的计算时间大致为lo—12s,而梯形法的计算时间则高达36s;对于算法2,矩形法的计算时间大致为10~118,而梯形法的计算时间则高达26.8s。
在计算精度方面,当子区间分割数相对较小时,譬如102、103等,梯形法的计算精度明显高于矩形法,特别是对于算法l。
当子区间分割数相对较大时,譬如107、108等,梯形法与矩形法的计算精度已经没有明显差别。
从理论上讲,梯形法的精度要高于矩形法,但从实践方面看,结果并不尽然,有时候梯形法的精度甚至要低于矩形法。
这一情况产生的主要原因是理论上总是假定计算机每一步计算都是较为精确的,也很少假定所用算法在计算过程中产生的误差的分布和传播。
实际上,对计算精度的影响还远不止于此。
例如,求平方根的开方运算,可能导致计算结果有效数位显著减少,从而影响最终的计算结果。
这一点可以从以上使用两种算法的计算结果表看出。
4)子区问分割数与计算误差。
宏观上看,随着子区间分割数的增加,计算误差总体上呈现出下降的趋势,但这种下降不一定是单调的。
对于算法1而言,基本是单调下降的;而对于算法2来说,则呈现波动下降的态势。
子区间分割数每增加一个数量级,算法l总能使计算误差下降1至2个数量级。
当子区问分割数大到一定程度后,如108数量级,算法2并不能总使计算误差再继续单调下降或保持稳定,而是出现了波动。
这一点如表6和表7所示。
其主要原因可能与计算误差的随机传播有关”“1”1。
5结论本文集中讨论和分析了几种典型的计算叮r值的并行算法及其各种处理方法在基于WirldowsxP环境、MPI并行编程环境支持和VC++6.O下c语言描述的编程实现问题,给出了计算程序详尽的计算结果,对比分析了各种算法及其处理方法的性能,以及它们对计算精度产生的影响。
本文得出的若干分析结论是以相应算法的实际编程实现和试验计算数据为基础的,因而可信度高。
参考文献[1]陈国良.并行计算——结构・算法・编程[M].北京:高等教育出版社,1999.[2]黄凯,徐志伟.可扩展并行计算——技术、结构与编程[M].北京:机械工业出版社,2000.[3]medaK,A王IsoppNK,HaId试ckJc,etBI.AnAss瞄sment0fMPIEⅡviro册肌协for刑ⅡdowsN“J]ne如umd0fs“pe’c…pu6“g,2001,(19):315—323.[4]l(II曲dAl—Tawil,csabaAndmM甜tz.Pe而皿叩ceM0d出“g虮dEvaluad叩ofMH[J].Joumal0fPa讪elaIldDistnbmedcomPuting,200l,61(2):202—223.[5]Daleshjres,R跚Mohan.AnEvalu觚onofHPF肌dMPIApp’nach黯ⅡndPe面珊蛐ceinunstmcturedFi础eElementsimula-ⅡonB[J]Jo啪a10fM且thc啪dc且lM0dem“gandAlg“tI埘8,2001,l(3):153—167.[6]sl。