Archive

Posts Tagged ‘Microsoft Visual Studio’

การใช้งาน MPI บน Microsoft Visual Studio 2008

March 13, 2010 Leave a comment

วิธีนี้ใช้ได้กับโปรแกรม 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