【《并行计算技术理论综述》1800字】_第1页
【《并行计算技术理论综述》1800字】_第2页
【《并行计算技术理论综述》1800字】_第3页
【《并行计算技术理论综述》1800字】_第4页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

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

文档简介

并行计算技术理论综述目录TOC\o"1-3"\h\u1894并行计算技术理论综述 [57]。MPI只是是一个函数库的说明,并不是具体的编程语言,因此还需要有专门的语言与之配合才能使用,MPI在其中起了传递消息的作用。MPI功能强大,可移植性高,深受研究人员欢迎,迅速成为并行程序设计中消息传递模型的标准。和普通的函数调用一样,MPI也遵循库的调用原则,通过Fortran和C语言执行。1.1.1MPI基本结构MPI的程序结构简单明了,很容易掌握,一般包含以下几个结构:①includempi.h;②变量申明;③初始化MPI环境;④并行计算和消息传递;⑤终止。1.1.2MPI基本函数MPI函数较多,从功能上可分为点点通讯、进程组通讯、集合操作、环境管理等,一般来说,掌握其中几个常用的函数即可基本实现MPI的大多数功能。(1)初始化函数IntMPI_Init(int*argc,char**argv)初始化MPI的运行环境并完成所有初始化工作。argc指令用来传参,argv指令用来存储。(2)结束函数IntMPI_Finalize(void)该指令是程序的结束指令,可以用于结束所有MPI函数指令操作。(3)获取当前进程标识MPI_Comet_rank(MPI_Commcomm,int*rank)(4)获取通信域包含的进程数IntMPI_Comm_size(MPI_Commcomm,int*size)(5)消息发送IntMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intlest,inttag,MPI_Commcomm)(6)消息接收IntMPI_Recv(void*buf,intcount,MPI_Datatypedatatype,intsource,inttag,MPI_Commcomm,MPI_Status*status)(7)计时doubleMPI_Wtime(void)Doublestarttime,endtime;…MPI_Wtime=endtime-starttime;(8)同步路障intMPI_Barrier(MPI_Commcomm)该函数协调每个进程的进度,进行同步化处理。1.2OpenMPOpenMP(OpenMulti-Processing)是以线程为基础的共享内存并行的一套多线程程序并行标准。OpenMP是一种可调用的并行编程模型,其主要的特点是操作方便;可扩展性能优异,通过编译指导指令,就能够在支持OpenMP的编译器上实现并行操作;可移植性强,与众多厂商的产品都能够匹配。OpenMP的特点是共享存储模型,在进行计算的时候,所有的计算信息全部上传到同一个共享存储器,各个子模块通过这样的方式进行信息的同步与交互。主要由三部分组成:编译语法、环境变量以及库函数。其主要的流程为:计算机在进行数据处理的时候,主线程将数据分割成若干部分并分配给各个子线程进行处理,这样就可以实现整个数据的并行处理,其原理如图3-1所示。图3-1OpenMP编程原理1.3基于Python语言的并行编程Python是较为常用的并行编程语言之一,其自带有丰富的库函数,可以实现各种功能。使用Python语言进行并行编程需要对任务进行分解,然后通过基于线程、基于进程、异步编程、分布式Python等方式对任务进行重新分配,再指定执行哪些任务。Multiprocessing是Python中用来解决并行计算问题的一种常用的库,用来编写多线程或者多进程。Multiprocessing支持子进程之间的信息交互以及不同方式的同步策略,并提供了多种组件对并行程序进行控制。其工作流程是:先生成含有若干个空闲进程池处于待命状态,当收到来自程序的请求时,就分配一个进程用于执行相应的指令,假如此时所有进程都被占用,则新传递的请求就需要排队等待,其实现原理如图3-2所示。图3-2Multiprocessing架构图1.3.1多线程并行Python中有thread和threading模块用于多线程的并行编程,threading中采用了api接口技术对线程进行处理,通过函数调用进行信息的传递,并采取了线程锁定“threading.lock()”的策略防止线程之间的相互影响。核心指令如下:import

time,threading

def

loop():

.

.

.

t=threading.Thread(target=loop,name='Sub_Thread')

t.start()

t.join()

.

.

.

lock=threading.Lock()

.

.

.

lock.acquire()

.

.

.

lock.release()

1.3.2多进程并行由于Python中全局锁GIL的存在,其多线程并行只能属于并发式并行,即每个子线程是轮流执行任务的,这样对于多核计算机的利用效率不高。因此在Python中使用多进程并行的编程方式更为常用。Process和Pool模块用于多进程编程,通过填加进程池,给每个进程池单独分配一个计算机内核进行计算的方式实现任务的并行处理。核心指令如下:from

mult

温馨提示

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

最新文档

评论

0/150

提交评论