理解VS2003代碼相關(guān)技巧
我在外培訓(xùn)時(shí)課堂里用的是VS2003代碼編制,老師做的例子讓我們拷回去,我自家電腦里由于還沒(méi)有安裝VS2003版本這個(gè)開(kāi)發(fā)工具,所以無(wú)法打開(kāi)看,我去買軟件看到現(xiàn)在又有2006版的了,如果將2006版的安裝后,能不能打開(kāi)老師在課堂用VS2003版本做的例子?能不能繼續(xù)使用?
MPICH2在WinXP下的配置和使用
一、預(yù)備工作
0.在自己電腦上建立一個(gè)用于并行計(jì)算的帳戶并設(shè)置密碼。
二、下載
1. 去官方網(wǎng)站http://www.mcs.anl.gov/research/projects/mpich2/下載自己電腦的相應(yīng)版本。
三、安裝
2. 用具有管理權(quán)限的帳戶登陸計(jì)算機(jī)。
3. 執(zhí)行mpich2-1.0.7-win32-ia32.msi,選擇所有缺省安裝。
這里假設(shè)文件安裝在D:\Program Files\MPICH2\
4. 在每臺(tái)計(jì)算機(jī)上均執(zhí)行上述過(guò)程2、3。
四、配置
5. 運(yùn)行配置工具
開(kāi)始->所有程序->MPICH2->wmpiregister.exe,利用先前建立的計(jì)算機(jī)帳戶名和密碼注冊(cè)。
6. 開(kāi)始->所有程序->MPICH2->wmpiconfig.exe,搜索并加入已經(jīng)安裝MPICH2的主機(jī),可以用的主機(jī)名在搜索完后會(huì)顯示綠色。
7.點(diǎn)擊 [Apply] 保存
8 點(diǎn)擊 [OK] 退出#t#
五、測(cè)試
9. 打開(kāi)MPICH2的例子文件:D:\Program Files\MPICH2\examples\examples.sln
10. 按照文章前半部分的方法,編譯調(diào)試該cpi和cxxpi項(xiàng)目。
11. D:\Program Files\MPICH2\examples\Release\cpi.exe和cxxpi.exe 到每一臺(tái)機(jī)器某一同樣路徑目錄。
如:C:\Temp\cpi.exe和cxxpi.exe
12. 打開(kāi)命令窗口,改變當(dāng)前路徑到 c:\temp 下(與前相同)
13. 執(zhí)行命令
D:\Program Files\MPICH2\bin\mpiexec.exe -hosts 2 hosta 2 hostb 1 -noprompt C:\Temp\cpi.exe
D:\Program Files\MPICH2\bin\mpiexec.exe -hosts 2 hosta 2 hostb 1 -noprompt C:\Temp\cxxpi.exe
-hosts 2表示有兩臺(tái)主機(jī)。
hosta 2 hostb 1表示主機(jī)hosta開(kāi)2個(gè)進(jìn)程,主機(jī)hostb開(kāi)1個(gè)進(jìn)程。
注意,多機(jī)并行計(jì)算時(shí),進(jìn)程很容易被防火墻擋住,所以計(jì)算時(shí)最好關(guān)閉防火墻。而多核電腦的單機(jī)多進(jìn)程并行計(jì)算則不受防火墻影響。當(dāng)然直接選擇開(kāi)始->所有程序->MPICH2->wmpiexec.exe進(jìn)入圖形界面運(yùn)行效果一樣,也更直觀容易理解了。
附上最簡(jiǎn)單的測(cè)試代碼如下:
- #include "mpi.h"
- #include <cstdio>
- #include <math.h>
- int main(int argc, char* argv[])
- {
- int myid,numprocs;
- int namelen;
- char processor_name[MPI_MAX_PROCESSOR_NAME];
- MPI_Init(&argc,&argv);/**//*程序初始化*/
- MPI_Comm_rank(MPI_COMM_WORLD,&myid);/**//*得到當(dāng)前進(jìn)程號(hào)*/
- MPI_Comm_size(MPI_COMM_WORLD,&numprocs);/**//*得到總的進(jìn)程數(shù)*/
- MPI_Get_processor_name(processor_name,&namelen);/**//*得到機(jī)器名*/
- fprintf(stderr," Process %d of %d SAY HELLO TO MPI on %s\n",
- myid, numprocs, processor_name);
- MPI_Finalize();/**//*結(jié)束*/
- return 0;
- }