《并行程序設計》實驗指導書之四_第1頁
《并行程序設計》實驗指導書之四_第2頁
《并行程序設計》實驗指導書之四_第3頁
《并行程序設計》實驗指導書之四_第4頁
《并行程序設計》實驗指導書之四_第5頁
已閱讀5頁,還剩2頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《并行程序設計》實驗指導書之四實驗4.1構建基于WINDOWS平臺的MPI并行集群環境實驗目的1.掌握面向IntelMPILibrary建立Windows并行集群環境的方法;2.掌握VisualStudio*.NET*集成開發環境開發MPI程序配置方法;3.掌握MPI程序設計的基本編寫、編譯與運行方法實驗要求1.熟練掌握C++語言;。2、掌握VisualStudio*.NET*集成開發環境的使用;3、掌握MPI程序設計的基本概念。實驗內容實驗步驟:一、配置電腦環境。1.基本網絡設置:關閉殺毒軟件、計算機防火墻,將小組里所有計算機連接到同一個交換機上,查看每臺計算機ip,使用ping命令測試,保證互相之間能夠ping通。2.網絡連接設置:由于需要在cluster上運行同一個程序,為了實現相互之間能連接成功,要在每臺電腦上登錄同一個管理員帳號。先到計算機管理下的本地用戶和組里創建一個賬戶haomeng,設置密碼為haomeng,(默認賬戶也可以,需要設置密碼)接下來將其設置成管理員帳號:進入控制面板\用戶帳戶和家庭安全\用戶帳戶\管理帳戶\更改帳戶,將賬戶類型修改為管理員,讓這個賬戶進入登錄狀態(并不是一定要在這個賬戶下進行實驗,只需讓其進入登錄狀態)。要注意需要保證小組內每臺電腦有相同的管理員賬戶和密碼。二、單機上編譯運行簡單的test程序1.打開test工程2.在庫中添加C:\ProgramFiles\Intel\MPI\3.1\ia32\lib;3.將C:\ProgramFiles\Intel\MPI\3.1\ia32\lib里面的.dll文件添加到C:\WINDOWS\system32中4.使用intel編譯器編譯,生成.exe文件5.執行smpd–installsmpd-starthydra_service–installhydra_service–startmpiexec–register設置電腦賬戶和密碼。6.使用mpiexec.exe-n<#ofprocesses>test.exe執行命令,執行成功的話能看到相應的HelloWorld輸出信息。//mpiexec.exe-n1test.exe7.運行mpi程序(共有窗口和命令行兩種方式,但本次實驗主要使用命令行方式運行)。Intel(R)MPI提供一個命令行工具程序mpiexec.exe,該程序幫助用戶以非常靈活的方式支持MPI應用。本節對這個工具的使用進行簡要說明。mpiexec的命令行常見格式(詳細格式可以參考mpiexec-?返回的幫助,下面格式的尖括號為解釋):格式1:mpiexec-n<#ofprocesses>myprog.exe格式2:mpiexec-host<hostname>myprog.exe格式3:mpiexec-machinefile<machinefile>myprog.exe用-n設置本地機上的進程數,myprog.exe指可執行文件(可包含路徑),若程序還有別的命令行參數,根據需要添加到該命令行后面。用-host設置程序執行的主機,如以下命令將會運行可執行文件a.exe在主機lab01上:mpiexec-hostlab01a一個machinefile是一個包含集群中所有主機名,各主機運行進程數等信息的列表,空行和以“#”開頭的行都將被忽略。通過重復主機名將會在該主機上增加一個進程,或者直接按格式:<hostname>:<numberofprocesses>.描述每個主機所包含的進程數。如以下file1和file2是等效的。file1:file2:host1host1:2host1host2:2host2host3host2host3注:上面運行命令作為參考。具體在運行的時候建議通過以下兩種方式運行:mpiexec-hosts2LAB012LAB023myporg.exe其中,hosts后的參數為主機數,后面必須跟著特定數目的主機名稱(像這里2個主機,LAB01和LAB02)。主機后面的可選參數為該主機上運行的進程數目。主機名稱可以在cmd中使用hostname命令獲得。要注意,多機運行時每臺機器上的.exe文件必須放到相同的目錄下。8.編譯并運行test程序,成功后記錄結果并進行檢查:mpiexec-n<#ofprocesses>d:\test.exe9.除了使用wmpiexec窗口程序運行mpi程序,還可以使用BuildEnvironmentforIntel(R)ClusterToolkit3.1命令行運行。要求嘗試多種命令形式,如:mpiexec-hosts4LAB012LAB022LAB032LAB043d:\test.exe//mpiexec-hosts2192.168.xx.xx2192.168.xx.xx2d:\test.exe等等。實驗4.2N體問題MPI并行程序剖析與性能分析實驗目的1.掌握MPI程序設計的基本編寫、編譯與運行方法;2.掌握Window群機環境下N體問題的并行程序設計方法;3.掌握利用加速比、運行時間、效率等測度分析并行程序性能實驗要求1.熟練掌握C++語言;。2、掌握VisualStudio*.NET*集成開發環境的使用;3、掌握MPI程序設計的基本概念。實驗原理N體問題是研究物體之間相互作用力產生的效果的問題(例如天體間通過引力相互吸引)。這個問題的目標是確定太空中通過引力相互作用的天體的位置和運動,涉及到的物理知識是牛頓定律。質量為ma和mb的兩個物體相互間的引力由下式給出:其中G是引力常數,r是物體間的距離。每個物體都會依據這個定律受其它物體的影響,所有力都會被累加(要考慮每個力的方向)。在受力的情況下,一個物體將根據牛頓第二定律加速:其中m是物體質量,F是物體所受的力,a是得到的加速度。因此所有物體都會由于這些力的作用移動到新的位置并獲得新的速度。要得到精確的數值描述,需要使用微分方程。然而,對于超過三個物體的系統的N體問題還沒有確切的近似解。使用計算機仿真時,我們使用特定時間的值,t0,t1,t2等等,時間間隔取得盡可能短以獲得最精確的解。不妨設時間間隔為△t,則對于一個質量為m的特定物體,其所受力為:新的速度為:其中vt+1為物體在時刻t+1的速度,vt為物體在時刻t的速度。如果物體以速度v移動了△t時間,則位置變化為:其中xt為物體在時刻t的位置。一旦物體移動到新的位置,所受的力就會發生變化,計算過程也要重復。在一個時間間隔△t內的速度實際上并不是一個準確的常數,因此得到的僅是一個近似解。要注意以上所涉及的力F,位置x和速度v都是向量。在進行計算時必須被分解為三個方向。N體問題的串行算法研究:總的引力N體算法可以由以下算法描述:for(t=0;t<tmax;t++){/*foreachtimeperiod*/for(i=0;i<n;i++){/*foreachbody*/F=Force_routine(i);/*computeforceonithbody*/v[i]new=v[i]+F*dt/m;/*computenewvelocityand*/x[i]new=x[i]+v[i]new*dt;/*newposition*/}for(i=0;i<n;i++){/*foreachbody*/x[i]=x[i]new;/*updatevelocityandposition*/v[i]=v[i]new;}}外層的for循環計算每一個時間步,在每個時間步內n個物體更新了速度和位置。內層的兩個for循環計算每一個物體所受到的力及其新的位置和速度。內層第一個for循環內的函數Force_routine(i)計算其它所有物體作用于第i個物體的引力之和,它的時間復雜性是O(n)。因此在這個算法中n個物體更新一次時間復雜性是O(n2)。N體問題的并行實現:這個算法使用SPMD(單程序多數據流)計算模型,每個進程將執行相同的代碼。假設有m個計算資源,每個資源上啟動一個進程,表示進程的標號是0、1、2、……m-1,每個進程分配的物體數是n0、n1、n2、……n(m-1),其中n0+n1+n2+……+n(m-1)=n。每個進程主要有兩個數組localparticles、allparticles、sendbuf、recvbuf,其中localparticles用于保存分配給本進程的物體的信息;allparticles用于保存應用程序中所有物體的信息;sendbuf用于保存發送到下一個進程的物體;recv用于保存從前一個進程接受的物體。算法描述獲取分配給本進程的物體的初始信息localparticles獲取應用程序中所有物體的信息allparticlesfor(每一個時間步){計算所有物體對分配給本進程的物體的作用力并據此更新localparticles的本進程的物體的信息將本進程信息localparticles保存到發送緩沖區sendbuffor(i=0;i<m-1;i++)//對每個進程{sendsendbufto本進程的下一個進程;用sendbuf中的信息更新allparticles中的部分信息;recvrecvbuffrom本進程的前一個進程;}使所有進程在此處同步}算法中外層for循環計算每一個時間步,在每個時間步內所有參與的進程并行執行,所有進程都結束時所有n個物體速度和位置都被更新了。在外層for的循環體內,首先計算所有物體對本地物體的作用力,據此更新關于本地物體的信息;內層for循環使得每個進程都獲得了所有物體的更新后的信息,實現了進程之間的合作,為下一次迭代做好準備;最后通過顯示設置柵欄使所有進程同步。加速比和效率加速比和效率是最傳統的并行算法評價標準,它們體現了在并行機上運用并行算法求解實際問題所能獲得的好處。并行算法的加速比定義為:Sp=Ti/TpTi表示最優串行算法在單處理機上的運行時間,Tp表示p臺處理機的計算時間。并行算法的效率定義為:Ep=Sp/PP為處理機臺數。如果按照某種條件,如保持每臺處理機的計算規模,并行算法加速比與處理機的臺數成正比,則稱該并行算法在該條件下,在該并行機上具有線性加速比實驗內容1.在VS中打開nbody工程,配置好MPI運行環境,編譯并運行項目;2.進行如下實驗并記錄數據(實驗報告中給出數據并繪圖)實驗一:單機上,數據規模為4000時,隨每機進程數變化的運行時間;進程數12345時間1.3485941.0802150.9986610.6720420.815603實驗二:相同數據規模為4000,隨每機進程數變化的運行時間每機進程數單機雙機三機四機11.3485940.6813210.6338900.44366221.0802150.3773660.3066290.23207830.9986610.4618960.3972140.30591640.6720420.5015730.4606100.468220實驗三:每機1個進程,隨數據規模變化的n-body并行程序運行時間。粒子數n單機雙機三機四機100.0000180.0002140.0022470.003273500.0003230.0043210.0049630.0007011000.0008770.0023470.0024750.0025475000.0213020.0147560.0132460.00814210000.0836580.0412250.0411720.03241520000.3325860.1954210.1475230.11472330000.7541070.4014730.3653110.22714240001.3314600.7132880.6210470.4153673.根據記錄的數據計算加速比與效率(給出數據并繪圖)實驗一:單機上,粒子數為4000,隨進程數變化加速比(Sp)統計進程數2345678910加速比1.251.352.011.652.121.962.202.312.25實驗二:粒子數為4000,隨每機進程數變化的加速比每機進程數雙機三機四機422.863.524.6532.162.513.2641.341.461.44實驗三:每機1個進程,隨數據規模變化的n-body并行程序加速比和效率n-body并行算法的加速比(Sp)統計表粒子數n雙機三機四機100.0841120.0080100.005499500.0747510.0650810.4607701000.3736680.3543430.3443265001.4436161.6081832.61631010002.0293022.0319142.58084220001.7018942.2544682.89903530001.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論