並行程式設計 MPI開發入門

2021-06-26 19:48:00 字數 1434 閱讀 9808

win2k adv svr + vc6

「我的電腦」path中設定mpich2的bin目錄(%mpich2%\bin)以便執行mpiexec程式。我的具體設定如下:

vc6開發環境中包含mpich2開發包的include目錄和lib目錄。具體步驟:開啟vc6,選擇」tools->options」,在彈出的「options」對話方塊中選擇directories選項卡,分別設定如下圖:

(設定include目錄%mpich2%/include)

(設定lib目錄%mpich2%/lib)

mpich2環境配置。執行%mpich2%/lib下wmpiregister,在註冊介面輸入本機器使用者名稱和密碼以便mpiexec執行程式。

經過上面的步驟,mpich2開發環境已經建立好,下面便可以步入mpich2的大殿了。開始最簡單也是最經典程式「hello world」,在過程中倒是遇到不少麻煩。

開啟vc6,建立乙個控制台應用程式,如下圖:

依照課本,包含標頭檔案且把**敲入main函式中。

#include "mpi.h"

#include

int main(int argc, char* argv)

編譯程式,發現出現很多編譯錯誤,一時間不知道怎麼辦好。在細看錯誤,都是一些函式過載錯誤。原本想修改**,但是沒有全部源**。再進一步,發現全部是mpicxx.h檔案導致的錯誤,於是想是否mpi_init等函式與此檔案有關。通過搜尋包含文字,發現mpi_init等函式只在mpi.h中定義,於是想辦法不包含mpicxx.h檔案以避開問題。在mpi.h中發現**:

#if !defined(mpich_skip_mpicxx)

#include "mpicxx.h"

#endif

#endif

這下有辦法,在程式中定義巨集mpich_skip_mpicxx,然後重新編譯程式(注意在包含mpi.h前定義)。哈哈,果然避開了mpicxx.h檔案,有出現幾個為定義錯誤,包含lib檔案就ok!如下圖:

有個建議,既然包含標頭檔案必須連線庫的話,可以在標頭檔案中指定庫。本人在開發過程中一直這樣做,感覺很好。這樣可以避免入門者不會設定庫。

下面是執行。執行命令列,輸入:

e:\myproject\mpipractice\helloworld\debug>mpiexec -np 4 helloworld

輸出結果:

hello world!

hello world!

hello world!

hello world!

這樣便完成第乙個mpi程式,下面的任務就是依據並行演算法思想解決複雜問題,留帶大家自己解決。

耗費一下午重新安裝系統和各種軟體,大約乙個小時編制及除錯「hello world」程式,儘管簡單,但是畢竟對於mpi程式設計入門,感覺良好。耗費一小時書寫文件,總結問題,以便其他同學遇到麻煩好解決,希望互相學習進步。

萬連文2005/10/19晚於寢室

MPI並行程式設計

了解並熟悉mpi並行程式開發環境,學會並行程式編譯方法,並行程式作業提交方法,並行程式執行狀態觀察與分析方法,本實驗的內容主要包括學習如何編譯執行mpi程式以及通過較簡單的 helloworld.c 程式的實際執行來進一步的熟悉 實驗一,本實驗的內容主要包括學習如何編譯執行mpi程式以及通過較簡單的...

MPI與OpenMP並行程式設計

1.openmp openmp是一種用於共享記憶體並行系統的多執行緒程式設計的庫 compiler directive 特別適合於多核cpu上的並行程式開發設計。它支援的語言包括 c語言 c fortran 不過,用以上這些語言進行程式開發時,並非需要特別關注的地方,因為現如今的大多數編譯器已經支援...

MPI 並行解方程

基本演算法 逐步縮小函式值異號的範圍 最後逼近最終解 所有執行緒計算中地位相同 計算範圍與self號相應的區段值 把x較小值做為解 只支援單個解 lx做為計算範圍和終止條件 最後 由主線程顯示結果 include mpi.h include include define end 999999 def...