版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
云計算與大數(shù)據(jù)技術(shù)應(yīng)用
并行計算與集群技術(shù)《云計算與大數(shù)據(jù)技術(shù)應(yīng)用》
并行計算與集群技術(shù)5.1并行計算概述5.1.1并行計算的概念5.1.2并行計算的層次5.1.3并行計算的發(fā)展5.1.4并行計算與分布式計算5.1.5并行計算與云計算5.2云計算基礎(chǔ)架構(gòu)——集群技術(shù)5.2.1集群的基本概念5.2.2集群系統(tǒng)的分類5.2.3集群文件系統(tǒng)5.3并行計算的分類5.3.1按Flynn分類5.3.2按應(yīng)用的計算特征分類5.3.3按結(jié)構(gòu)模型分類5.4并行計算的相關(guān)技術(shù)5.4.1并行計算的關(guān)鍵技術(shù)5.4.2并行計算的性能估算面向計算的高性能集群技術(shù)MPI5.5并行程序設(shè)計--MPI編程5.5.1
MPI簡介5.5.2一個簡單的MPI程序?qū)崿F(xiàn)5.5.3
MPI消息5.5.4
MPI的消息傳遞過程5.5.5MPI常用基本函數(shù)5.5.6有消息傳遞的并行程序并行計算是相對于串行計算5.1.1并行計算的概念5.1.1并行計算的概念并行計算努力仿真自然世界中的事務(wù)狀態(tài):一個序列中眾多同時發(fā)生的、復(fù)雜且相關(guān)的事件。如有21畝地需要除草,一個人一天只能除一畝地的草,那么需要21天才能除完草,這在現(xiàn)實中是不太可能的,因莊稼是有時間段的。那么如果找21個人一起來完成除草,那只需要一天就能完成任務(wù)。所以從這里可以看出并行計算并沒有讓計算量減少,它是以犧牲勞動力來節(jié)約時間,其思路如圖5-2所示。圖5-2大任務(wù)分解并行計算是相對于串行計算來說的。傳統(tǒng)地,串行計算是指在單個計算機(具有單個中央處理單元)上執(zhí)行軟件寫操作。CPU逐個執(zhí)行一系列指令解決問題,但其中只有一種指令可提供隨時并及時的使用。并行計算是在串行計算的基礎(chǔ)上增加了處理器,可以同時執(zhí)行多個指令。5.1.1并行計算的概念并行計算是指同時使用多種計算資源解決計算問題的過程,旨在提高計算機系統(tǒng)計算速度和處理能力的一種有效手段。它是由運行在多個部件上的小任務(wù)合作來求解一個規(guī)模很大的計算問題的一種方法(Thesimultaneoususeofmorethanonecomputertosolveaproblem)。它的基本思想是用多個處理器來協(xié)同求解同一問題,即將被求解的問題拆分成若干個部分,各部分均由一個獨立的處理機來并行計算。即并行計算實際上是由多個計算單元組成,運算速度快、存儲容量大、可靠性高的計算機系統(tǒng)。并行計算的內(nèi)容包括了并行計算機體系結(jié)構(gòu)、編譯系統(tǒng)、并行算法、并行編程、并行軟件技術(shù)、并行性能優(yōu)化與評價、并行應(yīng)用等。此外,并行計算可以定位為連接并行計算機系統(tǒng)和實際應(yīng)用問題之間的橋梁。它輔助科學、工程及商業(yè)應(yīng)用領(lǐng)域的專家,為在并行計算機上求解本領(lǐng)域問題提供了關(guān)鍵支撐。5.1.1并行計算的概念整個大的串行任務(wù)分解各個并行執(zhí)行部分需做大量運算,持續(xù)時間長根據(jù)大任務(wù)內(nèi)在相關(guān)性各個相對獨立模塊部分并行執(zhí)行,節(jié)約運算時間圖:并行計算任務(wù)分解程序級并行子程序級并行語句級并行操作級并行微操作級并行并行粒度細粗5.1.2并行計算的層次高性能計算、高端計算、超級計算5.1.3并行計算的發(fā)展1.按時間看并行計算機的發(fā)展20世紀70年代,第一臺并行計算機于1972年產(chǎn)生(ILLIACIV,伊利諾依大學),由64個處理器組成,可擴展性好,但可編程性差。1976年向量機Cray-1投入運行,被稱為“超級計算元年”,編程方便,但可擴展性差,以Cray為代表的向量機稱雄超級計算機界十幾年。20世紀80年代,并行計算機進入百家爭鳴狀態(tài),早期以多指令多數(shù)據(jù)流MIMD(MultipleInstructionstreamMultipleDatastream)并行計算機為主。20世紀90年代,并行計算體系結(jié)構(gòu)框架趨于統(tǒng)一,基本以分布式共享存儲DSM(DistributedSharedMemory)、大規(guī)模并行處理結(jié)構(gòu)MPP(MassivelyParallelProcessing)、工作站機群COW(ClusterofWorkstations)為代表。2000年至今,并行計算得到了前所未有的大踏步發(fā)展。以COW為原型的由大規(guī)模商用普通PC機構(gòu)成的機群為主,如Cluster機群、Constellation星群和MPP都是以機群為基本架構(gòu)而成。5.1.3并行計算的發(fā)展2.按應(yīng)用特點看并行計算機的發(fā)展并行計算機的發(fā)展歷程也可以簡單的分為兩個時代。(1)專用時代。包括向量機、MPP系統(tǒng)、SGINUMA系統(tǒng)、SUN大型SMP系統(tǒng),也包括我國的神威、銀河、曙光1000等。之所以稱為“專用”,并不是說它們只能運行某種應(yīng)用,是指它們的組成部件是專門設(shè)計的,它們的CPU板、內(nèi)存板和I/O板,甚至操作系統(tǒng),都是不能在其它系統(tǒng)中使用的。由于技術(shù)上桌面系統(tǒng)與高端系統(tǒng)的巨大差異,因此用戶群窄小。(2)普及時代。高性能計算機價格下降,應(yīng)用門檻降低,應(yīng)用開始普及。兩個技術(shù)趨勢起到重要作用。其一是商品化趨勢使得大量生產(chǎn)的商品部件接近了高性能計算機專有部件,標準化趨勢使得這些部件之間能夠集成到一個系統(tǒng)中,其中X86處理器、以太網(wǎng)、內(nèi)存部件、Linux都起到?jīng)Q定性作用。其二是機群系統(tǒng)是高性能計算機的一種,它的技術(shù)基礎(chǔ)和工業(yè)基礎(chǔ)都是商品化和標準化。5.1.4并行計算與分布式計算并行計算、分布式計算都屬于高性能計算范疇,這也使得很多人一直分不清兩者之間的關(guān)系。并行計算是相對于串行計算來說的,并行計算主要目的是加速求解問題的速度和提高求解問題的規(guī)模。并行計算強調(diào)時效性和海量數(shù)據(jù)處理,各任務(wù)之間的獨立性弱,而且關(guān)系密切,每個結(jié)點之間的任務(wù)時間要同步。即并行程序并行處理的任務(wù)包之間有很大的聯(lián)系,并且并行計算的每一個任務(wù)塊都是必要的,沒有浪費的、分割的,就是每個任務(wù)包都要處理,而且計算結(jié)果相互影響,這就要求每個計算結(jié)果要絕對正確。分布式計算是相對于集中式計算來說的。分布式計算的任務(wù)包相互之間有獨立性,上一個任務(wù)包的結(jié)果未返回或者是結(jié)果處理錯誤,對下一個任務(wù)包的處理幾乎沒有什么影響。分布式計算的實時性要求不高,并且允許存在計算錯誤。分布式計算中,有大量的無用數(shù)據(jù)塊。因此,分布式計算的速度盡管很快,但真正的“效率”是低之又低的。分布式要處理的問題一般是基于“尋找”模式的。所謂的“尋找”,就相當于窮舉法。而并行計算的任務(wù)包個數(shù)相對有限,在一個有限的時間應(yīng)該是可能完成的。分布式計算程序的編寫一般用是C++或Java,基本不用MPI接口。并行計算編程采用用MPI或者OpenMP。5.1.5并行計算與云計算云計算是并行計算技術(shù)、大數(shù)據(jù)技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展的必然結(jié)果。云計算需要解決:計算資源的透明虛擬化和彈性化、內(nèi)存儲資源的透明虛擬化和彈性化、外存儲資源的透明虛擬化和彈性化、數(shù)據(jù)安全的保障、向開發(fā)者提供完善的API并實現(xiàn)終端用戶向云計算的平滑過渡。云計算使普通用戶有了享受高性能計算的機會,因為云計算中心幾乎可以提供無限制的計算能力,計算的彈性化和存儲的彈性化是云計算的重要特征。云計算的計算能力實現(xiàn)是從計算機的并行化開始的,即把多個計算機并聯(lián)起來,從而獲得更快的計算速度。大規(guī)模并行計算機出現(xiàn)后,以其為基礎(chǔ)的云計算服務(wù)器集群的服務(wù)器數(shù)量是以萬、十萬甚至更高的單位計數(shù),在這樣巨大的集群規(guī)模下,云計算面臨兩個重要問題:昂貴的系統(tǒng)部署費用和不可忽視的結(jié)點失效問題。由于服務(wù)器的大量集中,服務(wù)器的失效成為經(jīng)常的事情,傳統(tǒng)的架構(gòu)對于單點失效是很敏感的,而在云計算架構(gòu)下,任何的單點失效都不會影響系統(tǒng)對外提供服務(wù)。即云計算在構(gòu)建系統(tǒng)架構(gòu)時就將系統(tǒng)結(jié)點的失效考慮了進去,實現(xiàn)了基于不可信服務(wù)器結(jié)點的云計算基礎(chǔ)架構(gòu)。將服務(wù)器失效作為云計算系統(tǒng)的服務(wù)器集群模型是符合實際情況的,這種情況下單個服務(wù)器可以看作是不可信的結(jié)點,。在將服務(wù)器失效作為常態(tài)的服務(wù)器集群模型下,數(shù)據(jù)的安全性通過副本策略得到了保證。5.2.1集群的基本概念集群系統(tǒng)是一組獨立的計算機(節(jié)點)的集合體,節(jié)點間通過高性能的互聯(lián)網(wǎng)絡(luò)連接,各節(jié)點除了作為一個單一的計算資源供交互式用戶使用外,還可以協(xié)同工作,并表示為一個單一的、集中地計算資源,供并行計算任務(wù)使用。集群系統(tǒng)是一種造價低廉、易于構(gòu)建并且具有較好可擴放性的體系結(jié)構(gòu)。集群系統(tǒng)具有以下重要特征:(1)集群系統(tǒng)的各節(jié)點都是一個完整的系統(tǒng),節(jié)點可以是工作站,也可以是PC或SMP器。(2)互聯(lián)網(wǎng)絡(luò)通常使用商品化網(wǎng)絡(luò),如以太網(wǎng)、FDDI、光纖通道和ATM開關(guān)等,部分商用集群系統(tǒng)也采用專用網(wǎng)絡(luò)互聯(lián)。(3)網(wǎng)絡(luò)接口與節(jié)點的I/O總線松耦合相連。(4)各節(jié)點有一個本地磁盤。(5)各節(jié)點有自己的完整的操作系統(tǒng)。5.2.2集群系統(tǒng)的分類集群系統(tǒng)可以分為以下4類:(1)高可用性集群系統(tǒng)高可用性集群系統(tǒng)通常通過備份節(jié)點的使用來實現(xiàn)整個集群系統(tǒng)的高可用性,活動節(jié)點失效后備份節(jié)點自動接替失效節(jié)點的工作。(2)負載均衡集群系統(tǒng)負載均衡集群系統(tǒng)中所有節(jié)點都參與工作,系統(tǒng)通過管理節(jié)點(利用輪詢算法、最小負載優(yōu)先算法等調(diào)度算法)或利用類似一致性哈希等負載均衡算法實現(xiàn)整個集群系統(tǒng)內(nèi)負載的均衡分配。(3)高性能集群系統(tǒng)高性能集群系統(tǒng)主要是追求整個集群系統(tǒng)計算能力的強大,其目的是完成復(fù)雜的計算任務(wù),在科學計算中常用的集群系統(tǒng)就是高性能集群系統(tǒng),目前物理、生物、化學等領(lǐng)域有大量的高性能集群系統(tǒng)提供服務(wù)。(4)虛擬化集群系統(tǒng)在虛擬化技術(shù)得到廣泛使用后,人們?yōu)榱藢崿F(xiàn)服務(wù)器資源的充分利用和切分,將一臺服務(wù)器利用虛擬化技術(shù)分割為多臺獨立的虛擬機使用,并通過管理軟件實現(xiàn)虛擬資源的分配和管理。5.2.3集群文件系統(tǒng)隨著大數(shù)據(jù)技術(shù)的出現(xiàn),面向數(shù)據(jù)的計算成為云計算系統(tǒng)需要解決的問題之一,集中的存儲模式更是面臨巨大的挑戰(zhàn),計算向數(shù)據(jù)遷移這種新的理念,使集中存儲風光不在,集群文件系統(tǒng)在這種條件下應(yīng)運而生。目前常用的HDFS、GFS、Lustre等文件系統(tǒng)都屬于集群文件系統(tǒng)。集群文件系統(tǒng)存儲數(shù)據(jù)時并不是將數(shù)據(jù)放置于某一個節(jié)點存儲設(shè)備上,而是將數(shù)據(jù)按一定的策略分布式地放置于不同物理節(jié)點的存儲設(shè)備上。集群文件系統(tǒng)將系統(tǒng)中每個節(jié)點上的存儲空間進行虛擬的整合,形成一個虛擬的全局邏輯目錄在進行文件存取時依據(jù)邏輯目錄按文件系統(tǒng)內(nèi)在的存儲策略與物理存儲位置對應(yīng),從而實現(xiàn)文件的定位。集群文件系統(tǒng)相比傳統(tǒng)的文件系統(tǒng)要復(fù)雜,它需要解決在不同節(jié)點上的數(shù)據(jù)一致性問題及分布式鎖機制等問題,所以集群文件系統(tǒng)一直是云計算技術(shù)研究的核心內(nèi)容之一。5.3并行計算的分類并行計算分為時間上的并行和空間上的并行。時間上的并行就是指流水線技術(shù),流水線(pipeline)技術(shù)是指在程序執(zhí)行多條指令時,重疊進行操作的一種準并行處理實現(xiàn)技術(shù)??臻g上的并行是指用多個處理器并發(fā)的執(zhí)行計算。其中,并行計算主要研究的是空間上的并行問題。并行計算技術(shù)在高速發(fā)展的今天,出現(xiàn)了各種不同的技術(shù)方法,同時也出現(xiàn)了不同的分類方法,包括按指令和數(shù)據(jù)處理方式的Flynn分類、按存儲訪問結(jié)構(gòu)的分類、按應(yīng)用計算特征的分類等,以下將做簡要介紹。5.3.1按Flynn分類斯坦福大學教授MichaelJ.Flynn提出了經(jīng)典的計算機結(jié)構(gòu)分類方法,從最抽象的指令和數(shù)據(jù)處理方式進行分類,通常稱為Flynn分類(1972年提出)方法,空間上的并行計算可分為兩類,F(xiàn)lynn是計算機系統(tǒng)結(jié)構(gòu)的分類方法之一,它關(guān)注的是指令流(InstructionStream)、數(shù)據(jù)流(DataStream)和多倍性(Multiplicity),如圖5-4所示。圖5-4并行計算按Flynn分類5.3.2按應(yīng)用的計算特征分類按照應(yīng)用的計算特征,可將并行計算分為以下2類。(1)數(shù)據(jù)密集型并行計算(Data-IntensiveParallelComputing),它使用數(shù)據(jù)并行方法處理大量數(shù)據(jù)(通常為TB或PB級),通常稱為大數(shù)據(jù)。數(shù)據(jù)密集型并行計算用于描述I/O綁定的應(yīng)用程序或需要處理大量數(shù)據(jù)的應(yīng)用程序,這些應(yīng)用程序?qū)⑵浯蟛糠痔幚頃r間用于I/O以及數(shù)據(jù)的移動和處理。數(shù)據(jù)密集型處理需求通常根據(jù)數(shù)據(jù)的大小線性地進行縮放,并且非常適合直接并行化。(2)計算密集型并行計算(Computation-IntensiveParallelComputing),計算密集型是用來描述計算綁定的應(yīng)用程序。計算密集型應(yīng)用程序的并行處理通常涉及在應(yīng)用程序進程中并行化各個算法,并將整個應(yīng)用程序進程分解為單獨的任務(wù),然后可以在適當?shù)挠嬎闫脚_上并行執(zhí)行,以實現(xiàn)比串行處理更高的整體性能。在計算密集型應(yīng)用程序中,多個操作是同時執(zhí)行的,每個操作都會解決問題的特定部分,這通常也稱為任務(wù)并行。5.3.3按結(jié)構(gòu)模型分類并行計算按結(jié)構(gòu)模型可以分為并行向量處理機PVP、對稱式多處理器SMP、分布式共享存儲系統(tǒng)DSM、大規(guī)模并行處理機MPP和工作站機群COW,如圖5-5所示。圖5-5并行計算按結(jié)構(gòu)模型分類5.4.1并行計算的關(guān)鍵技術(shù)并行計算的基本條件包括硬件(并行計算機)、并行算法設(shè)計和并行編程環(huán)境。目前,并行計算的關(guān)鍵技術(shù)主要包括四部分:1.并行計算機的體系結(jié)構(gòu)并行計算機關(guān)注兩個要點:①組成要素,并行計算機體系結(jié)構(gòu)組成要素包括結(jié)點(node)、互聯(lián)網(wǎng)絡(luò)(interconnectnetwork)和內(nèi)存(memory)。結(jié)點可以由一個或多個處理器組成;互聯(lián)網(wǎng)絡(luò)是指連接結(jié)點;內(nèi)存是指多個存儲模塊組。②結(jié)構(gòu)模型,其典型的結(jié)構(gòu)模型有PVP、SMP、DSM、MPP和COW。2.并行算法設(shè)計與分析它包含了并行算法的設(shè)計與分析以及算法庫和測試庫,并行化的主要方法是分而治之,因此并行算法的設(shè)計可以從兩個角度劃分。(1)作用域分解:根據(jù)處理數(shù)據(jù)的方式,形成多個相對獨立的數(shù)據(jù)區(qū),由不同的處理器分別處理,實現(xiàn)數(shù)據(jù)并行。(2)任務(wù)或功能分解:根據(jù)問題的求解過程,把任務(wù)分成若干子任務(wù),每個子任務(wù)完成全部工作的一部分,實現(xiàn)任務(wù)級并行或功能并行。關(guān)注要被完成的計算而不是操作數(shù)據(jù)的計算。5.4.1并行計算的關(guān)鍵技術(shù)
3.并行實現(xiàn)技術(shù)并行技術(shù)可分為三類,分別是線程庫、消息傳遞庫和編譯器支持。線程庫(如POSIX*線程和Windows*API線程)可實現(xiàn)對線程的顯性控制。借助消息傳遞庫(如消息傳遞接口MPI),應(yīng)用程序可同時利用多臺計算機,它們彼此間不必共享同一內(nèi)存空間。并行實現(xiàn)技術(shù)即編程實現(xiàn)和優(yōu)化性能,它包含了并行編程模型以及并行編程的環(huán)境工具。并行編程環(huán)境主要有操作系統(tǒng)與編程語言。并行計算機主流操作系統(tǒng)有:UNIX/Linux。如IBM的AIX、HP的HPUX、SUN的Solaris、SGI的IRIX都是UNIX的變體。并行計算的編程語言有Fortran77/90/95或C/C++。4.并行計算的應(yīng)用它包含了科學工程應(yīng)用和各種新型的應(yīng)用。5.4.2并行計算的性能估算并行計算的性能主要從兩個方面進行判斷:(1)加速比(speedup)。是同一個任務(wù)在單處理器系統(tǒng)和并行處理器系統(tǒng)中運行消耗的時間的比率,用來衡量并行系統(tǒng)或程序并行化的性能和效果,其公式計算如下。
其中,speedup是加速比,T1是單處理器下的運行時間,Tn是在有n個處理器并行系統(tǒng)中的運行時間。(2)并行效率(parallelefficiency)。是加速比與所用處理機個數(shù)之比。并行效率表示在并行機執(zhí)行并行算法時,平均每個處理機的執(zhí)行效率。5.5.1MPI簡介消息傳遞接口(MessagePassingInterface,MPI)并行程序設(shè)計采用提供并行庫的方式,它是消息傳遞函數(shù)庫的標準規(guī)范。MPI是一種新的庫描述,不是一種語言。MPI是一種標準或規(guī)范的代表,而不是特指某一個對它的具體實現(xiàn)。MPI是一種消息傳遞編程模型,并成為這種編程模型的代表和事實上的標準。它由MPI論壇開發(fā),支持Fortran、C和C++。消息傳遞并行程序設(shè)計要求用戶必須通過顯式地發(fā)送和接收消息來實現(xiàn)處理機間的數(shù)據(jù)交換。每個并行進程均有自己獨立的地址空間,相互之間訪問不能直接進行,必須通過顯式的消息傳遞來實現(xiàn)。這種編程方式是大規(guī)模并行處理機(MPP)和集群(Cluster)采用的主要編程方式。由于消息傳遞程序設(shè)計要求用戶很好地分解問題,組織不同進程間的數(shù)據(jù)交換,因此并行計算粒度大,特別適合于大規(guī)??蓴U展并行算法。目前,消息傳遞并行計算領(lǐng)域的一個非常重要的并行程序設(shè)計方式。5.5.1MPI簡介設(shè)計MPI的目標是:①提供應(yīng)用程序編程接口。②提高通信效率。包括避免存儲器到存儲器的多次重復(fù)拷貝,允許計算和通信的重疊。③可在異構(gòu)環(huán)境下提供實現(xiàn)。④提供的接口可以方便C語言和FORTRAN77的調(diào)用。⑤提供可靠的通信接口。即用戶不必處理通信失敗。⑥接口設(shè)計應(yīng)是線程安全的(允許一個接口同時被多個線程調(diào)用)。⑦接口的語義是獨立于語言的。MPI具有以下特點:①基于消息傳遞的通信機制;②結(jié)合串行語言的并行庫;③支持Fortran、C和C++常用串行語言;④可移植性好;⑤程序設(shè)計方式靈活、簡單。MPI提供了一種與語言和平臺無關(guān),可以被廣泛使用的編寫消息傳遞程序的標準,用它來編寫消息傳遞程序,不僅實用、可移植、高效和靈活,而且和當前已有的實現(xiàn)沒有太大的變化(即當前大多數(shù)的MPI實現(xiàn)都提供了MPI的主要功能)。5.5.2一個簡單的MPI程序?qū)崿F(xiàn)下面首先以C語言的形式給出一個最簡單的MPI并行程序。該程序的任務(wù)是在終端打印出“HelloWorld!”字樣。程序代碼文件Hello.c如下。在編寫程序前,首先要清楚,C和MPI函數(shù)約定:必須包含mpi.h頭文件;MPI函數(shù)返回出錯代碼或MPI_SUCCESS成功標志;MPI_前綴,且只有MPI以及MPI_標志后的第一個字母大寫,其余小寫。程序如圖5-6所示。
圖5-6程序代碼截圖5.5.2一個簡單的MPI程序?qū)崿F(xiàn)接著實現(xiàn)“HelloparallelWorld!”的編譯與運行。(1)啟動機器集群中的3個機器節(jié)點。
(2)編譯Hello.c程序,生成Hello.o程序。
(3)執(zhí)行Hello程序。
注意:可執(zhí)行程序Hello.o須同時位于3個機器節(jié)點的test3目錄下。
5.5.3MPI消息在MPI程序中,進程間通信所傳送的所有信息稱為消息(message)。從而實現(xiàn)控制整個集群內(nèi)的所有機器節(jié)點進行協(xié)同工作,對底層異構(gòu)系統(tǒng)進行抽象,實現(xiàn)程序可移植性。消息由消息信封和消息內(nèi)容組成。(1)消息信封由源/目的(Destination)、標識(tag)和通信域組成。其中源/目的是消息的接收者,由send函數(shù)參數(shù)確定。源(Source)是消息的提供者,由發(fā)送進程隱式確定,由進程的rank值唯一標識。隱含目/源是組通信。標識是區(qū)別同一進程的不同消息,使程序員以一種有序的方式處理到達的消息。它是必要的,但不是充分的,因為“tag”的選擇具有一定的隨意性。MPI用一個新概念“上下文(context)”對“tag”進行擴展。系統(tǒng)運行時分配,但不允許統(tǒng)配。消息信封的格式類似于信封的皮,如圖5-7所示。
圖5-7消息信封的格式
5.5.3MPI消息(2)消息內(nèi)容(data)在組通信中有變化形式,但基本由起始地址、數(shù)據(jù)個數(shù)和數(shù)據(jù)類型組成,如圖5-8所示。圖5-8消息內(nèi)容的組織形式5.5.4MPI的消息傳遞過程MPI的消息傳遞過程分為三個階段:消息裝配、消息發(fā)送和消息拆卸,如圖5-9所示。圖5-9MPI的消息傳遞過程5.5.5MPI常用基本函數(shù)MPI調(diào)用接口的總數(shù)雖然龐大,但根據(jù)實際編寫MPI的經(jīng)驗,常用的MPI調(diào)用的個數(shù)卻是有限的。下面是6個最基本的MPI函數(shù)。(1)MPI_Init():啟動MPI環(huán)境,標志并行代碼的開始。函數(shù)原型為:intMPI_Init(int*argc,char**argv)它通常應(yīng)該是第一個被調(diào)用的MPI函數(shù),除MPI_Initialized()(測試是否已執(zhí)行MPI_Init())外,其余所有的MPI函數(shù)應(yīng)該在其后被調(diào)用。MPI系統(tǒng)通過argc、argv得到命令行參數(shù)。(2)MPI_Comm_size():獲得通信空間comm中規(guī)定的組包含的進程的數(shù)量。函數(shù)原型為:intMPI_Comm_size(MPI_Commcomm,int*size)(3)MPI_Comm_rank():得到本進程在通信空間comm中的rank值,即在組中的邏輯編號(從0開始,類似于進程ID)。函數(shù)原型為:intMPI_Comm_rank(MPI_Commcomm,int*rank)(4)MPI_Send():標準阻塞發(fā)送消息,函數(shù)原型為:intMPI_Send(void*buff,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm)5.5.6有消息傳遞的并行程序我們已經(jīng)清楚在MPI程序中,進程間通信是通過傳遞消息來實現(xiàn)的,為了比較好理解在MPI中如何實現(xiàn)消息傳遞,下述案例程序以C語言為宿主語言,結(jié)合MPI提供的并行庫,實現(xiàn)3個機器結(jié)點并行執(zhí)行該MPI程序的功能,該MPI程序是帶消息傳記遞的Hello程序。5.5.6有消息傳遞的并行程序#include"mpi.h"main(intargc,char*argv[]){intp;/*進程數(shù),該變量為各處理器中的同名變量*/intmy_rank;/*我的進程ID,存儲也是分布的*/MPI_Statusstatus;/*消息接收狀態(tài)變量,存儲也是分布*/charmessage[100];/*消息buffer,存儲也是分布的*/ MPI_Init(&argc,&argv);/*初始化MPI*//*該函數(shù)被各進程各調(diào)用一次,得到自己的進程rank值*/ MPI_Comm_rank(MPI_COMM_WORLD,&my_rank); /*該函數(shù)被各進程各調(diào)用一次,得
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工商合同規(guī)范管理科工作職責
- 杭州市事業(yè)單位聘用合同管理辦法
- 《氬弧管管水平固定》課件
- 《母親節(jié)促銷方案》課件
- 2025年長春貨運從業(yè)資格證考試題及答案大全
- 2025年哈爾濱貨運從業(yè)資格考試題庫答案大全
- 2025年和田貨運上崗證考試題庫答案
- 第25課《活板》知識點梳理及練習-2022-2023學年七年級語文下冊古詩文專題期中期末復(fù)習(部編版)教師版
- 精密制造防火封堵
- 蘇科版九年級物理上冊一課一測-14.1電阻
- 抗生素使用及控制制度
- 信息安全教育培訓管理制度(3篇)
- 數(shù)據(jù)管理制度完整
- 電梯改造維修合同范例
- 2024年醫(yī)院客服中心年終工作總結(jié)范例(3篇)
- 雄安新區(qū)容東片區(qū)地下空間專項規(guī)劃-ECADI
- 自然辯證法論述題146題帶答案(可打印版)
- 2024年急診科護理計劃和總結(jié)
- 特殊作業(yè)安全管理監(jiān)護人專項培訓課件
- 公司年度培訓總結(jié)匯報
- 電梯日管控、周排查、月調(diào)度內(nèi)容表格
評論
0/150
提交評論