自從失戀以來,很久沒有寫隨筆,多謝大家對我鼓勵(lì),總覺得要寫一點(diǎn)什么的,苦于學(xué)校壓力和外面工作需要,時(shí)間甚少。這里先發(fā)關(guān)于上學(xué)期一門課程開發(fā)入門文章,是我自己寫的。隨后將推出一系列軟件設(shè)計(jì)的文章,因?yàn)槟壳案鷮O輝老師學(xué)技術(shù),將拿出來和大家分享,也算是技術(shù)推廣吧!
系統(tǒng)環(huán)境配置
Win2K Adv Svr + VC6
MPI開發(fā)包下載
網(wǎng)上搜索下載MPICH2地址http://www-unix.mcs.anl.gov/mpi/mpich2/
MPI開發(fā)包安裝
?????? 下載完畢,開始安裝MPICH2開發(fā)包,提示需要.NET 1.1 框架。鑒于本人對VS.NET 2003愛好,直接安裝了整個(gè)開發(fā)環(huán)境,也可以只安裝.NET框架。可以到微軟官方網(wǎng)站下載安裝包(http://msdn.microsoft.com/netframework/downloads/framework1_1/)。安裝.NET框架后便可以安裝MPICH2開發(fā)包。安裝后可以看到MPICH2目錄層次:

環(huán)境配置
?????? “我的電腦”path中設(shè)置MPICH2的bin目錄(%MPICH2%\bin)以便運(yùn)行mpiexec程序。我的具體設(shè)置如下:

?????? VC6開發(fā)環(huán)境中包含MPICH2開發(fā)包的include目錄和lib目錄。具體步驟:打開VC6,選擇”Tools->Options”,在彈出的“Options”對話框中選擇Directories選項(xiàng)卡,分別設(shè)置如下圖:

(設(shè)置Include目錄%MPICH2%/include)

(設(shè)置Lib目錄%MPICH2%/LIB)
?????? MPICH2環(huán)境配置。運(yùn)行%MPICH2%/LIB下wmpiregister,在注冊界面輸入本機(jī)器用戶名和密碼以便mpiexec運(yùn)行程序。

開發(fā)第一個(gè)程序“Hello World”
?????? 經(jīng)過上面的步驟,MPICH2開發(fā)環(huán)境已經(jīng)建立好,下面便可以步入MPICH2的大殿了。開始最簡單也是最經(jīng)典程序“Hello World”,在過程中倒是遇到不少麻煩。
?????? 打開VC6,建立一個(gè)控制臺應(yīng)用程序,如下圖:


?????? 依照課本,包含頭文件且把代碼敲入main函數(shù)中。
?????? #include "mpi.h"
#include <cstdio>
?
?
int main(int argc, char* argv[])
{
??????
?????? MPI_Init(&argc, &argv);
?????? printf("Hello World!\n");
?????? MPI_Finalize();
?????? return 0;
}
?????? 編譯程序,發(fā)現(xiàn)出現(xiàn)很多編譯錯(cuò)誤,一時(shí)間不知道怎么辦好。在細(xì)看錯(cuò)誤,都是一些函數(shù)重載錯(cuò)誤。原本想修改代碼,但是沒有全部源代碼。再進(jìn)一步,發(fā)現(xiàn)全部是mpicxx.h文件導(dǎo)致的錯(cuò)誤,于是想是否MPI_Init等函數(shù)與此文件有關(guān)。通過搜索包含文字,發(fā)現(xiàn)MPI_Init等函數(shù)只在mpi.h中定義,于是想辦法不包含mpicxx.h文件以避開問題。在mpi.h中發(fā)現(xiàn)代碼:
#if !defined(MPICH_SKIP_MPICXX)
#include "mpicxx.h"
#endif
#endif
這下有辦法,在程序中定義宏MPICH_SKIP_MPICXX,然后重新編譯程序(注意在包含mpi.h前定義)。哈哈,果然避開了mpicxx.h文件,有出現(xiàn)幾個(gè)為定義錯(cuò)誤,包含Lib文件就OK!如下圖:

?????? 有個(gè)建議,既然包含頭文件必須連接庫的話,可以在頭文件中指定庫。本人在開發(fā)過程中一直這樣做,感覺很好。這樣可以避免入門者不會(huì)設(shè)定庫。
?????? 下面是運(yùn)行。運(yùn)行命令行,輸入:
E:\MyProject\MPIPractice\HelloWorld\Debug>mpiexec -np 4 helloworld
輸出結(jié)果:
Hello World!
Hello World!
Hello World!
Hello World!
這樣便完成第一個(gè)MPI程序,下面的任務(wù)就是依據(jù)并行算法思想解決復(fù)雜問題,留帶大家自己解決。
總結(jié)
?????? 耗費(fèi)一下午重新安裝系統(tǒng)和各種軟件,大約一個(gè)小時(shí)編制及調(diào)試“Hello World”程序,盡管簡單,但是畢竟對于MPI編程入門,感覺良好。耗費(fèi)一小時(shí)書寫文檔,總結(jié)問題,以便其他同學(xué)遇到麻煩好解決,希望互相學(xué)習(xí)進(jìn)步。
?
萬連文
2005/10/19晚于寢室
posted on 2006-06-12 17:50
萬連文 閱讀(19187)
評論(42) 編輯 收藏 引用 所屬分類:
亂七八糟