歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

開發 Linux 下的並行程序(1)

 作者:肖文鵬      性能並行計算所處理的問題具有程序規模龐大、編寫困難、計算量大、運行時間長,以及數據量巨大等特點,因此選擇一個好的並行計算平台和並行編程工具非常重要。Linux是一個非常優秀的操作系統,其上的MPI和PVM是目前最流行的並行編程語言。本文將介紹如何借助Linux來構建並行計算系統,以及如何在Linux平台下開發MPI和PVM並行程序。       並行計算環境       並行計算是提高計算機系統計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來協同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來並行計算。並行計算系統既可以是專門設計的、含有多個處理器的超級計算機,也可以是以某種方式互連的若干台獨立計算機構成的集群。     並行計算基於一個簡單的想法:n台計算機應該能夠提供n倍的計算能力,不論當前計算機的速度如何,都可以期望被求解的問題將在1/n的時間內完成。顯然這只是一個理想的情況,因為被求解的問題在通常情況下都不可能被分解為完全獨立的各個部分,而是需要進行必要的數據交換和同步。盡管如此,並行計算仍然可以使整個計算機系統的性能得到實質性的改進,而改進的程度取決於欲求解問題自身的並行程度。     並行計算的優點是具有巨大的數值計算和數據處理能力,能夠被廣泛地應用於國民經濟、國防建設和科技發展中具有深遠影響的重大課題,如石油勘探、地震預測和預報、氣候模擬和大范圍天氣預報、新型武器設計、核武器系統的研究模擬、航空航天飛行器、衛星圖像處理、天體和地球科學、實時電影動畫系統及虛擬現實系統等等。     目前,並行計算已經成為計算機科學研究和應用中的熱點,各種並行計算系統層出不窮,其中發展最快的當數基於Linux平台的並行計算環境。使用Linux來構建並行計算平台具有許多優點:     ◆ 廉價 Linux最大的優勢就是價格,通常只需少量的軟、硬件投資就可以擁有一個PC工作站或服務器。相比之下,Linux對硬件的要求比Windows要低得多,即使是普通用戶也可以利用Linux來構建一個高性能的並行計算環境,從而替代以往開銷昂貴的大型計算機。     ◆ 開放 自由和開放是Linux最吸引人的特點,同時也為提高並行系統的性能提供了更加廣闊的空間。開發者可以很容易地深入到系統的核心,從而使在操作系統一級提高性能成為可能。     ◆ 高效 在相同軟硬件配置情況下,Linux與其他操作系統相比具有更高的效率,尤其是網絡性能和穩定性,而這些正是衡量並行計算平台優劣的關鍵所在。       並行編程模型       為了簡化並行程序的設計,需要采用合適的並行編程模型。目前兩種最重要的並行編程模型是數據並行和消息傳遞。數據並行編程模型的編程級別較高,編程相對簡單,但只適用於解決數據並行問題;消息傳遞編程模型的編程級別較低,編程相對復雜,但卻有著更加廣泛的應用范圍。     數據並行指的是將相同的操作同時作用於不同的數據,從而提高問題求解速度。數據並行很早就被應用於向量計算機。長期的實踐表明數據並行可以高效地解決大部分科學與工程計算問題。數據並行模型是一種較高層次上的並行計算模型,它提供給程序員一個全局的地址空間。通常這類模型所采用的語言本身就提供有並行執行的語義,因而程序員只需要簡單地指明執行什麼樣的並行操作和並行操作的對象,就實現了數據並行的編程。例如,對於矩陣運算,要使矩陣B和矩陣C中的對應元素相加後賦給矩陣A,則通過語句:     A = B + C         這樣就能夠完成相應的功能。正因如此,數據並行的表達是相當簡單和簡潔的,它不需要程序員關心並行系統是如何對該操作進行並行處理的。     數據並行模型雖然可以解決許多科學與工程計算問題,但對於非數值計算類問題,如果仍通過數據並行的方式來進行,則難以取得較高的效率。目前,數據並行模型面臨的主要問題是如何實現高效的編譯。只有具備了高效的編譯器後,數據並行程序才可以在共享內存和分布式內存的並行計算機上取得高效率,才可能提高並行程序設計的效率和可移植性,從而進一步推廣數據並行程序設計技術。     在消息傳遞模型中,各個並行執行的任務之間通過傳遞消息來交換信息、協調步伐、控制執行。消息傳遞一般是基於分布式內存的,但同樣也適應於共享內存的並行計算機。消息傳遞模型為程序員提供了更加靈活的控制手段和表達形式,一些用數據並行模型很難表達的並行算法,采用消息傳遞模型則可以很容易地實現。機動靈活和控制手段的多樣化,是消息傳遞模型能提供很高執行效率的重要原因。     消息傳遞模型為程序員提供了盡可能大的靈活性,但同時也將各個並行任務之間復雜的信息交換及協調控制交給了程序員,從而在一定程度上加重了程序員的負擔。盡管如此,消息傳遞模型的基本通信模式仍然是簡單和清楚的,目前大量並行程序采用的都是消息傳遞並行編程模型。       並行編程語言       由於消息傳遞並行編程模型的廣泛應用,目前已經出現了許多基於該模型的並行編程語言,其中最流行的是PVM(Parallel Virtual Machine)和MPI(Message Process Interface)。第一個將工作站集群作為並行計算平台並被廣泛接受的並行編程語言是PVM。它由美國的Oak Ridge國家實驗室、Tennessean大學、Emorg大學、CMU大學等聯合開發而成,能夠將異構的Unix計算機通過異構網絡連接成一個“虛擬”的並行計算系統,為其上運行的應用程序提供分布式並行計算環境。     PVM是一種基於局域網的並行計算環境。它通過將多個異構的計算機有機地組織起來,形成一個易於管理、易於編程、並且具有很好的可擴展性的並行計算環境。目前PVM支持C和Fortran語言。程序員首先參照消息傳遞模型編寫好並行程序,然後將編譯後的程序以任務為單位在網絡中特定類型的計算機上運行。PVM能夠在虛擬機中自動加載任務並運行,並且還提供了任務間相互通信和同步的手段。由於所有的計算任務都被分配到合適的計算節點上,多個節點並行運算,從而實現了任務一級的並行。     PVM為利用現有計算資源進行並行程序的開發與研究提供了一種有效的解決方案。由於PVM免費、開放和易於使用的特性,使得它成為一個被廣泛接受的並行程序開發環境,目前幾乎所有的並行計算系統都支持PVM。     MPI是為開發基於消息傳遞模型的並行程序而制定的工業標准,其目的是為了提高並行程序的可移植性和易用性。參與MPI標准制定的人員來自歐美40多個組織,大部分主要的並行計算機制造商、大學研究所、政府實驗室、工業組織等都投入到MPI標准化工作。有了統一的並行編程語言標准,並行計算環境下的應用軟件及軟件工具就都能夠實現透明的移植,各個廠商就可以依據標准提供獨具特色和優勢的軟件實現和軟件支持,從而提高了並行處理的能力。     MPI是一種基於消息傳遞模型的並行編程接口,目前已經發展成為消息傳遞模型的代表和事實上的工業標准,而不是一門具體的語言。迄今為止,所有的並行計算機制造商都提供對MPI的支持,因而從理論上說任何一個正確的MPI程序可以不加修改地在所有並行計算機上運行。     MPI只是一個並行編程語言標准,要編寫基於MPI的並行程序,還必須借助某一MPI具體實現。MPICH是Linux平台下最重要的一種MPI實現,是一個與MPI規范同步發展的版本。每當MPI標准推出新的版本時,MPICH就會有相應的實現版本。LAM(Local Area Multicomputer)是Linux平台下另一免費的MPI實現。它由Ohio州立大學開發,主要用於異構的網格計算並行系統。   




 

 



Copyright © Linux教程網 All Rights Reserved