การใช้งาน MPI บน Microsoft Visual Studio 2008
วิธีนี้ใช้ได้กับโปรแกรม Microsoft Visual Studio 2008 เพื่อเอาไว้ทดสอบการเขียนโปรแกรม MPI บนวินโดวส์
1. ก่อนอื่นทำการดาวน์โหลด HPC Pack 2008 SDK จากลิงค์ http://www.microsoft.com/downloads/details.aspx?FamilyID=12887DA1-9410-4A59-B903-693116BFD30E&displaylang=en และติดตั้งโปรแกรม
2. เปิดโปรแกรม Microsoft Visual Studio 2008 สร้างโปรเจคใหม่ โดยเลือกที่ Visual C++ >> Win32 และเลือกรูปแบบโปรเจคเป็น Win32 Console Application ใส่ชื่อของโปรเจคที่ต้องการที่ช่อง Name ด้านล่าง
3. เมื่อเลือกที่ Win32 Console Application แล้วกด OK จะปรากฏหน้าต่างใหม่ขี้น ให้กดปุ่ม Next > และเลือกเช็ค Precompiled header ออก แล้วจึงกด Finish
4. หลังจากสร้างโปรเจคเสร็จแล้ว ให้คลิกขวาที่โปรเจคและเลือกที่ Properties เลือกเมนูในส่วนของ Configuration Properties >> C/C++ >> General และเพิ่มพาธของที่อยู่เฮดเดอร์ไฟล์ โดยปกติแล้วจะอยู่ที่ C:\Program Files\Microsoft HPC Pack 2008 SDK\Include ในช่อง Additional Include Directories
5. เลือกเมนู Configuration Properties >> Linker >> General และใส่พาธของที่อยู่ไลบรารี ซึ่งปกติจะอยู่ที่ C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\i386 ในช่อง Additional Library Directories
6. เลือกเมนู Configuration Properties >> Linker >> Input และพิมพ์ msmpi.lib ในช่อง Additional Dependencies
7. เลือกเมนู Configuration Properties >> Linker > System และในช่อง SubSystem ให้เลือกเป็น Console(/SUBSYSTEM:CONSOLE)
8. ทดสอบโปรแกรมโดยพิมพ์โค้ดดังต่อไปนี้
#include <stdio.h> #include <mpi.h> int main(int argc, char* argv[]) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if(rank==0){ printf("Hello Kitty form root\n"); } else{ printf("Hello Kitty from rank %d\n", rank); } MPI_Finalize(); return 0; }
9. Build โปรแกรมด้วย Build >> Build Solution แล้วรันโปรแกรมด้วยการออกคำสั่ง mpiexec -n 10 programname.exe (อยู่ในโฟลเดอร์ Debug หลังจาก build เสร็จ) จะได้ผลลัพท์ดังนี้
ข้อควรระวัง : ทุกครั้งที่ใช้ฟังก์ชัน printf() ต้องเพิ่มคำสั่ง fflush (stdout); ตามไปด้วยเสมอ (เป็นบัคที่มาจากการ Implement MPI ของ Microsoft)
แหล่งข้อมูลเพิ่มเติม
http://blogs.msdn.com/risman/archive/2009/01/04/ms-mpi-with-visual-studio-2008.aspx
http://www.cs.utah.edu/~delisi/vsmpi/
http://www.oerc.ox.ac.uk/resources/wcc/support/documentation/sub-documentation/mpi