Ads 468x60px

This is okadfadfadfadsfadf

Tuesday, February 8, 2011

MPI program တစ္ပုဒ္ cluster ေပၚတြင္အလုပ္လုပ္ပံု

serial program တစ္ပုဒ္ကို run မယ္ဆိုရင္ program ထဲမွာ ပါတဲ့ instruction ေတြကို အစီအစဥ္အတိုင္း တစ္ခါ ထဲ run လိုက္တာနဲ႔ အေျဖထြက္ပါတယ္ ။ parallel computing ရဲ့သေဘာတရားအရ ပုဒ္စ ၦာကို တစ္ခုနဲ႔တစ္ခု မွီခို အားထားမွဳ႔မရွိတဲ့ အပိုင္းေတြ ခြဲ၍ တြက္ခ်က္ေသာ္လည္း parallel program တစ္ပုဒ္ကို run ရင္ေတာ့ အဲဒီလို အစိတ္စိတ္ပိုင္းျပီးေတာ့ အပိုင္းလိုက္ run တာမဟုတ္ပါဘူး။ ေရးထားတဲ့ program တစ္ပုဒ္ကိုပဲ process အားလံုးက တျပိဳင္နက္ထဲ run ၾကတာပါ ။ တစ္ပုဒ္ထဲကိုပဲ တစ္ျပိဳင္ထဲအတူတူ run ေပးမဲ့ ရရွိလာတဲ့အေျဖကေတာ့မတူပါဘူး ။ ဆိုလိုတာက MPI ရဲ့ communicator တစ္ခုေအာက္မွာ ရွိတဲ့ process တိုင္းရဲ့ ranks နံပါတ္ေတြက မတူညီၾကပါဘူး ။ process ေတြရဲ့ rank နံပါတ္လိုက္ျပီ program တစ္ပုဒ္ကို တျပိဳင္ထဲ အတူတူ run ေသာ္လည္း ရရွိတဲ့အေျဖေတြ ကြဲျပားၾကပါတယ္ ။ အဲဒီလို process တိုင္းမွာ run ျပိးမွ ရရွိလာတဲ့ မတူညီတဲ့အေျဖ ေတြကို MPI ရဲ့ routine ေတြအကူအညီ နဲ႔ ေပါင္းျပီး လိုခ်င္တဲ့ အေျဖေတြ ၊ ေဆာင္ရြက္ ခ်က္ေတြကို ထုတ္ယူတာ ျဖစ္ပါတယ္ ။ပိုမို သေဘာေပါက္ေစရန္ parallel computing model ေတြအမ်ားၾကီး ရွိတဲ့အထဲမွ SPMD(single program multiple data) model နဲ႔ေရးသားထားတဲ့ ရိုးရွင္းတဲ့ ပရိုဂရမ္တစ္ပုဒ္ ကိုေလ့လာၾကည့္ပါမယ္ ။

Saturday, February 5, 2011

MPI program တည္ေဆာက္ပံု

MPI ဟာ တျခား ကြန္ပ်ဴတာ ဘာသာစကားမ်ားကို မွီခိုရေသာ program အျဖစ္ သိရွိျပီးျဖစ္ပါတယ္ ။ အဲဒါေၾကာင့္ MPI အတြက္အသင့္ေတာ္ဆံုး ျဖစ္တဲ့ C \C++ programming ကို အသံုးျပဳေရးသားပါတယ္ ။ အဲဒီလိုေရးသားရာမွာ C program ရဲ့ format အတိုင္းေရးသားျပီ program အတြင္းမွာ MPI ကို အသံုးျပဳနိုင္ဖို႔အတြက္ MPI ရဲ့ header file (#include "mpi.h") ကို ေၾကညာေပးခဲ့ရပါမယ္ ။ ဒါမွသာ C program အတြင္း MPI ရဲ့ routine ေတြကိုေခၚယူ အသံုးျပဳရမွာ ျဖစ္ပါတယ္ ။ MPI program ရဲ့ တည္ေဆာက္ပံုကေတာ့ ေအာက္ပါအတိုင္းျဖစ္ပါတယ္ ...

တည္ေဆာက္ပံုအတိုင္း ပထမဦးစြာ MPI ရဲ့ header file နဲ႔ C program ရဲ့လိုအပ္တဲ့ header file ကို ေၾကညာပါမယ္ ။ ျပီးေနာက္လိုအပ္တဲ့ ေၾကညာခ်က္ေတြ၊ သတ္မွတ္ခ်က္ေတြကို ေရးသားပါတယ္ ။ အဲေနာက္မွာေတာ့ program ရဲ့ serial ပိုင္းကို စတင္ေရးသားပါတယ္ ။ ထို႔ေနာက္ parallel ပိုင္းအားစတင္ေရးသားရန္ MPI အား စတင္တဲ့ routine အားေခၚယူအသံုးျပဳျပီး parallel အပိုင္းအားစတင္းေရးသားပါတယ္ ။ ထို႔ေနာက္ လုပ္ငန္းေဆာင္တာ မ်ားနဲ႔ message မ်ား ေပးပို႔လက္ခံေဆာင္ရြက္ဖို႔ တျခားလိုအပ္ေသာ MPI routine မ်ားကို ေခၚယူအသံုးျပဳ ေရးသားပါတယ္ ။ အဲဒီလို parallel အပိုင္းအား အျပီး ေရးသားျပိးတဲ့ေနာက္မွာ ကၽြန္ေတာ္တို႔ စတင္ခဲ့တဲ့ MPI အား ရပ္တန္႔ေစရပါမယ္ ။ ဒါမွသာ MPI ဟာဆက္လက္မေဆာင္ရြက္ေတာ့ပဲ ရပ္တန္႔သြားမွာျဖစ္ပါတယ္ ။ MPI ရဲ့ အဆံုးသတ္ျခင္းဟာ parallel ပုိင္းရဲ့အဆံုးသတ္ျခင္းလဲျဖစ္ပါတယ္ ။ အဲလို MPI အားရပ္တန္႔ ဖို႔ MPI ရဲ့ routine ကိုေခၚယူသံုးစြဲျပီးရပ္တန္႔ရပါတယ္ ။ အဲဒီေနာက္မွာေတာ့ C program ရဲ့က်န္ရွိေနေသးတဲ့ serial အပိုင္းအားဆက္လက္ေရးသားျပီ program ကို အဆံုးသတ္ရပါတယ္ ။

အဲဒီလို MPI program တစ္ပုဒ္ေရးသားရာမွာ MPI အား စတင္ျခင္းနဲ႔ အဆံုးသတ္ျခင္းကို အျမဲတမ္းထည့္သြင္းေရးသားေပးရမွာျဖစ္ပါတယ္။ ဒါမွသာ MPI အားစတင္ သံုးစြဲလို႔ရျပီး ၊ သံုးစြဲျခင္းကိုလဲ အဆံုးသတ္လို႔ရမွာျဖစ္ပါတယ္ ။ ေျပာရရင္ေတာ့ MPI ပတ္၀န္းက်င္းနဲ႔ စတင္ျခင္း နဲ႔ MPI ပတ္၀န္းက်င္းအား အဆံုးသတ္ျခင္းအား MPI Environment routines မ်ားကို ေခၚယူ၍ ေဆာင္ရြက္ရပါတယ္ ။ စတင္ ျပိးတဲ့ေနာက္ အဆံုးမသတ္ခင္ထိ MPI ရဲ့ တျခား routine မ်ားကို ေခၚယူ သံုးစြဲပါတယ္ ။ မျဖစ္မေန ထည့္သြင္းေရးသားရမဲ့ MPI စတင္တဲ့ routine ကေတာ့ MPI_Init(&argc,&argv) ျဖစ္ျပီး အဆံုးသတ္တဲ့ routine ကေတာ့ MPI_Finalize() ပဲျဖစ္ပါတယ္ ။

ကၽြန္ေတာ္ routine မ်ားရဲ့ အမ်ိဳးအစားလိုက္ routine မ်ားအေၾကာင္းကို ဆက္လက္ေရးသားျပီ ၊ေရးသားရင္ ဥပမာ program မ်ားကို ေရးသားေဖၚျပသြားပါမယ္ ။ 

MPI မိတ္ဆက္

ကၽြန္ေတာ္တို႔ MPI program တစ္ပုဒ္ကို စတင္မေရးသားမွီ parallel computing ကိုလုပ္ေဆာင္မဲ့ ကြန္ပ်ဴတာ နက္၀က္ အေပၚ MPI အေနျဖင့္ ဘယ္လို ေခၚေ၀ၚ သံုးစြဲ သလဲဆိုတာကို စတင္ေျပာျပပါမယ္ ။ ကြန္ပ်ဴတာ နက္၀က္ အတြင္း မွာရွိတဲ့ ကြန္ပ်ဴတာ မ်ားကို ခ်ိတ္ဆက္ ေပးနိုင္ဖို႔ ခ်ိတ္ဆက္ေပးနိုင္သူ (communicators) ကို အသံုးျပဳျပီး ဘယ္ကြန္ပ်ဴတာေတြကေတာ့ ဘယ္အုပ္စုထဲမွာ ပါတယ္ဆို တာကို သိေအာင္ အုပ္စု ဖြဲ႔ (group)ေပးရပါတယ္ ။ ခ်ိတ္ဆက္ေပးသူမ်ား အေၾကာင္းနဲ႔ အုပ္စုဖြဲ႔ျခင္းအေၾကာင္းကို ေနာက္ပိုင္းတြင္ ပိုမိုျပည့္စံုေအာင္ ေဖာ္ျပပါမယ္ ။

ခ်ိတ္ဆက္ ထားတဲ့ နက္၀က္ တစ္ခု လံုးကို အခ်င္းခ်င္းဆက္သြယ္ေဆာင္ရြက္နိုင္ဖို႔ ဆက္သြယ္ေပးသူအျဖစ္ MPI_COMM_WORLD ကို အသံုးျပဳပါတယ္ ။ ဆက္သြယ္ေပးသူ (MPI_COMM_WORLD) ကို MPI ေတြ ရဲ့ function ေတြကိုေခၚသံုးတဲ့ေနရာမွာ လိုအပ္တဲ့အရာေတြတခါထဲထည့္ေပးလိုက္သလိုမ်ဳိး argument အျဖစ္ ထည့္ေပးရပါတယ္ ။  နက္၀က္အတြင္း မွာ ရွိတဲ့ CPU တိုင္းကို process လို႔လဲေခၚပါတယ္ ။ MPI_COMM_WORLD ကိုေတာ့ နက္၀က္အတြင္း process အခ်င္းခ်င္းဆက္သြယ္ခ်ိတ္ဆက္လို႔ရေအာင္ ဆက္သြယ္ေပးသူအျဖစ္အသံုးျပဳပါတယ္ ။ ၎ ကို အသံုးျပဳမွသာ နက္၀က္အတြင္းမွာရွိတဲ့ process တိုင္းရဲ့ memory မွာ message ေတြ ေပးပို႔လက္ခံ နိုင္မွာျဖစ္ပါတယ္ ။ အခ်င္းခ်င္း ခ်ိတ္ဆက္ထားတဲ့ process ေလးေတြရဲ့ ေခါင္းေဆာင္ဆုိလဲမမွားပါဘူး ။ ျပီးေတာ့ MPI_COMM_WORLD ဆိုတဲ့ ဆက္သြယ္ေပးသူရဲ့အတြင္းမွာ ရွိတဲ့ process ေလးေတြကိုလဲ တစ္ခုနဲ႔တစ္ခု ေရာေထြးျပီးမမွားရေလေအာင္ process ေလးေတြကို တစ္ခုခ်င္းစီအလိုက္ နံပါတ္ေလး ေတြနဲ႔ သက္မွတ္ေပးထားပါတယ္ ။ နံပါတ္ေပးရမွာ '0' က စျပီ ဆက္သြယ္ေပးသူရဲ့အတြင္းမွာရွိသေလာက္ process တိုင္းကိုနံပါတ္အစဥ္တိုင္းေပးပါတယ္ ။ MPI ဟာ MPI_COMM_WORLD ရဲ့လက္ေအာက္မွာရိွတဲ့ process ေလးေတြကိုေတာ့ rank လို႔သတ္မွတ္ပါတယ္ ။ rank 0 , rank 1 ... အေနျဖင့္သတ္မွတ္ပါတယ္ ။ program ထဲမွာ rank ေတြ ရဲ့ နံပါတ္ေတြနဲ႔ ထိန္းခ်ဳပ္ ေဆာင္ရြက္နိုင္ပါတယ္ ။ ဥပမာ rank နံပါတ္ 0 ျဖစ္ရင္ ဟိုဟာလုပ္ ၊ 1 ျဖစ္ရင္ ဒီဟာလုပ္ဆိုျပီေတာ့ ခိုင္းေစလို႔ရပါတယ္ ။ ျပီးေတာ့ messsage ေတြကို ပို႔ေဆာင္ရယူတဲ့ အခါ နံပါတ္ေတြ ကို အသံုးျပဳျပီး ယူရမဲ့ေနရာ ပို႔ေဆာင္ရမဲ့ေနရာကိုသတ္မွတ္လို႔ရပါတယ္ ။ တခါတေလ rank ေတြကို "task ID" လို႔လဲေခၚျပန္ပါေသးတယ္ ။


ကၽြန္ေတာ္တို႔ C/C++ မွာဆိုရင္ header file တစ္ခုအတြင္းမွာ အလြယ္တကူ အသင့္ယူသံုးနိုင္ေသာ function ေပါင္း မ်ားစြာရွိပါတယ္ ။ ဤနည္းတူပဲ MPI မွာ လဲ သူ႔ရဲ့ header file အတြင္းမွာ အသင့္ယူသံုးနိုင္ေသာ function ေပါင္း မ်ားစြာပါရွိပါတယ္ ။ အဲဒီ function ေတြကို  C/C++ တို႔မွာလို function လို႔မေခၚပဲ routine ေတြလို႔ေခၚပါတယ္ ။ MPI မွာ အသင့္ယူသံုးနိုင္ေသာ routine မ်ားရွိတဲ့အျပင္ အဲဒီ routine ေတြကို အသံုးျပဳတဲ့ေနရာအေပၚမူတည္ျပီး အမ်ိဳးအစားေတြခြဲျခားထားပါတယ္ ။ အမ်ိဳးအစားေတြကေတာ့
(1) Environment Management Routines
(2) Point to Point Communication Routines
(3) Collective Communication Routines
(4) Derived Data Types
(5) Group and Communicator Management Routines
(6) Virtual Topologies
တို႔ပဲျဖစ္ပါတယ္ ။

Parallel computing ေခၚ ျပိဳင္တူတြက္ခ်က္ျခင္း

MPI အေၾကာင္း ေလ့လာသူမ်ားဟာ parallel computing အေၾကာင္းကို သိထားသင့္ပါတယ္ ။ ဒီ post ထဲမွာ parallel computing အေၾကာင္းကို နဲနဲ ေျပာျပပါမယ္ ။ ကၽြန္ေတာ္တို႔ ပံုမွန္ေရးသားေနၾကတဲ့ program မ်ားဟာ serial computing ေတြပါ ။ serial computing ဆိုတာ program ထဲမွာေရးထားတဲ့ instructions ေတြကို CPU က ေဆာင္ရြက္တဲ့ေနရာမွာ တၾကိမ္မွာ ခိုင္းေစခ်က္ instruction တစ္ခုကိုပဲ လုပ္ေဆာင္တာကို ေခၚတာျဖစ္ပါတယ္ ။ ျပီးေတာ့ အဲဒီ instructions ေတြဟာလဲ တစ္ခုနဲ႔တစ္ခု မွီခိုေနပါတယ္ ။ ဆိုလိုတာက ေရွ႕ instruction မွတြက္ခ်က္လို႔ရတဲ့ အေျဖေတြ ကို ေနာက္ instruction ေတြက ယူသံုးထားလို႔ျဖစ္ပါတယ္ ။

ဒီလိုဆိုရင္ parallel computing က ဘာလဲ? parallel computing ဆိုတာ program သို႔မဟုတ္ problem တစ္ခု ကို တစ္ခုေပၚတစ္ခု မွီခိုမွဳ မရွိေသာ အစိတ္အပိုင္း မ်ားအျဖစ္ ပိုင္းျခားလိုက္ပါတယ္ ။  ျပီးမွ အဲဒီ အစိတ္အပိုင္းမ်ားကို တခ်ိန္ထဲတျပိဳင္ထဲမွာ CUP မ်ား က ေဆာင္ရြက္လိုက္ျခင္းပဲ ျဖစ္ပါတယ္ ။
 အဲလိုတြက္ခ်က္လိုက္ျခင္းအားျဖင့္ ကၽြန္ေတာ္တို႔ ၾကီးမားေသာ program တစ္ပုဒ္ကို အခ်ိန္တိုအတြင္းမွာ လွ်င္ျမန္စြာ တြက္ခ်က္နိုင္ပါတယ္ ။ ဘာျဖစ္လို႔ parallel computing ကိုအသံုးျပဳရသလဲဆိုေတာ့
(၁) အခ်ိန္နဲ႔ေငြကုန္သက္သာေစနိုင္ျခင္း
(၂) ၾကီးမားေသာ ျပႆနာ တစ္ခု အား ကိုင္တြယ္ေျဖရွင္းနိုင္ျခင္း
(၃) serial သေဘာအရ တၾကိမ္မွာ တစ္ခါသာ ျပဳလုပ္နိုင္ေသာ္လည္း parallel သေဘာအရ တစ္ခ်ိန္ထဲမွာ ေျမာက္မ်ားစြာ ကိုင္တြယ္ေျဖရွင္းနိုင္ျခင္း
(၄) ၾကီးမားေသာ parallel network အတြင္း  မ်ားစြာေသာ resource မ်ားရရွိနိုင္ျခင္း
(၅) serial computing ကိုကန္႔သတ္နိုင္ျခင္းတို႔ပဲျဖစ္ပါတယ္ ။

ကၽြန္ေတာ္တို႔ ရိုးရိုး sreial program တစ္ပုဒ္ကို parallel အျဖစ္ေျပာင္းလဲေရးရာမွာ အကုန္လံုးကို parallel အျဖစ္ေျပာင္းေရးလို႔မရပါဘူး ။ ျပႆနာတိုင္းမွာ serial ပဲလုပ္ေဆာင္နိုင္တဲ့အပိုင္းရွိသလို parallel လုပ္ေဆာင္နိုင္တဲ့အပိုင္းဆိုတာရွိပါတယ္ ။ အဲဒါေၾကာင့္ parallel ေရးရာမွာ serial ပဲလုပ္လို႔ရတဲ့ေနရာမွာ serial အျဖစ္ေရးျပီး က်န္တဲ့အပိုင္းေတြသာ parallel အျဖစ္ေျပာင္းလဲေရးသားပါတယ္ ။ အဲဒီလို serial ေကာ parallel ေကာ နွစ္ခုလံုးေပါင္းေရးျပီ အားသာခ်က္မ်ားရရွိေအာင္ ေရးသားတဲ့ သီအိုရီမ်ားစြာရွိပါတယ္ ။ parallel computing မွာလဲ နည္းနိႆရေပါင္းမ်ားစြာရွိပါတယ္ ။ အခုေတာ့ parallel computing ရဲ့ အေရးၾကီးေသာ သီအိုရီမ်ားသာ ေျပာျပသြားပါမယ္ ။

အခု parallel computer ေတြမွာ သံုးတဲ့ memory တည္ေဆာက္ပံုအေၾကာင္းကို ေျပာျပပါမယ္ ။ တည္ေဆာက္ပံု ၂ မ်ိဳးရွိပါတယ္ ...
(၁) shared Memory နဲ႔
(၂) Distributed Memory တို႔ပဲျဖစ္ပါတယ္ ။
memory တည္ေဆာက္ပံုေပၚမွာ မူတည္ျပီး parallel programming ေတြလဲကြဲျပားၾကပါတယ္ ။ MPI ကေတာ့ distributed memory ေပၚမွာ အသံုးျပဳတဲ့ programming ျဖစ္ပါတယ္ ။

shared memory ဆိုတာ ဘာလဲ ? shared memory ဆို တာ CPU ေျမာက္မ်ားစြာကေန memory တစ္ခုထဲကို အသံုးျပဳျခင္းပဲျဖစ္ပါတယ္ ။ ဆိုလိုတာက ပင္မ memory တစ္ခုထဲကို ပဲ CPU မ်ားစြာကေန share လုပ္ျပီးအသံုးျပဳျခင္းပဲျဖစ္ပါတယ္ ။ အနီးစပ္ဆုံး ဥပမာ ေပးရရင္ ကၽြန္ေတာ္တို႔ သံုးေနတဲ့ ကြန္ပ်ဴတာ မွာဆိုရင္ CPU က core 2 ဆိုရင္ CUP 2 ပါတဲ့ သေဘာပါ ။ ကြန္ပ်ဴတာ တစ္လံုးမွာ CPU က ၂ လံုးပါေသာ္လည္း memory ကို အသံုးျပဳတဲ့ ေနရာမွာေတာ့ တစ္ခုထဲပဲရွိပါတယ္ ။ အဲဒီ memory ကိုပဲ မွ်ေ၀ အသံုးျပဳၾကတာပါ ။

Distributed memory ထဲမွာေတာ့ memory ေျမာက္ျမားစြာ ရွိပါတယ္ ။ CPU တစ္ခုဟာ သူ႔ရဲ့ ကိုယ္ပိုင္ memory တစ္ခု ရွိပါတယ္ ။ အဲလို ကိုယ္ပိုင္ memory တစ္ခုစီရွိတဲ့ CPU မ်ားကို ေပါင္းစပ္ျပီး parallel တြက္ခ်က္ျခင္း ျဖစ္ပါတယ္ ။ ဥပမာ ေျပာရရင္ ေသးငယ္တဲ့ ကြန္ပ်ဴတာ နက္၀က္ေလးတစ္ခုမွာ ကြန္ပ်ဴတာ ၄ လံုးရွိတယ္ ဆိုၾကပါစို႔ ။ ကြန္ပ်ဴတာ တစ္လံုးခ်င္းစီမွာ သူ႔ရဲ့ ကိုယ္ ပိုင္ CPU နဲ႔ ကိုယ္ပိုင္ memory တစ္ခုစီ ရွိၾကပါတယ္ ။ သူတို႔ဟာ shared memory လို memory တစ္ခုထဲကို မွ်ေ၀ အသံုးျပဳေနတာ မဟုတ္ၾကပါဘူး ။ ကိုယ္ပိုင္ memory ေတြ နဲ႔လုပ္ေဆာင္ေနၾကပါတယ္ ။ အဲဒီ နက္၀က္အတြင္းမွာ ရွိတဲ့ ကြန္ပ်ဴတာ ၄ လံုးကို ဆက္သြယ္အသံုးျပဳျပီး parallel computing ျပဳလုပ္လို႔ရပါတယ္ ။
MPI ဟာ distributed memory အမ်ိဳးအစား မွာ အသံုးျပဳ တဲ့ parallel programming ျဖစ္ပါတယ္ ။ MPI ဟာ နက္၀က္တစ္ခု အတြင္းမွာ ခ်ိတ္ဆက္ထားတဲ့ ကြန္ပ်ဴတာ ေတြ ရဲ့ memory မ်ားအၾကား data (သို႔)message မ်ားရဲ့ သြားလာ ျဖတ္သန္းမႈ႕ေတြကို ကိုင္တြက္ေျဖရွင္း ေပးေနသူျဖစ္ပါတယ္ ။ memory တစ္ခုမွတစ္ခု သို႔ message မ်ား ပို႔ေဆာင္ရယူဖို႔ MPI ကို အသံုးျပဳရပါတယ္ ။

parallel computing အေၾကာင္းေျမာက္ျမားစြာ က်န္ပါေသးတယ္ ။ ေနာက္ ပိုင္းမွ ပဲထပ္မံေရးသားပါေတာ့မယ္ ။

Tuesday, February 1, 2011

MPI ဆုိတာဘာလဲ ?

MPI ဆိုသည္မွာ တျခားတစ္ဘက္မွ message မ်ားရယူျခင္း နွင့္တျခားတစ္ဖက္သို႔ message မ်ားပို႔ေဆာင္ျခင္းမ်ားကို ေဆာင္ရြက္ေပးနိုင္တဲ့ ၾကားခံေဆာင္ရြက္ေပးသူ ပဲျဖစ္ပါတယ္ ။ MPI ကို မ်ားေသာအားျဖင့္ (computer cluster)ကြန္ပ်ဴတာ နက္၀က္ ေတြနဲ႔ (supercomputer) အဆင့္ျမင့္ ကြန္ပ်ဴတာ ေတြမွာ ေရးတဲ့ ျပိဳင္တူတြက္ခ်က္ေရးပရိုဂရမ္(parallel program)ေတြထဲမွာ အသံုးျပဳပါတယ္ ။ MPI ကို William Gropp နဲ႔ Ewing Lusk တို႔က တီထြင္ထားတာပါ။

MPI လို႔ေခၚတဲ့ ၾကာခံေဆာင္ရြက္ေပးသူဟာ ကြန္ပ်ဴတာပရိုဂရမ္ဘာသာစကား(programming language) ေတြကို မွီခို အားထားရတဲ့ ဆက္သြယ္ေရး နည္းပညာတစ္ခုလဲျဖစ္ပါတယ္ ။ ဆိုလိုတာက parallel computer ေတြကို ခိုင္းဖို႔ parallel program ေတြကို ေရးရာမွာ MPI ကိုပဲ သီးသန္႔ ေရးျပီးခိုင္းေစလို႔မရပါဘူး ။ propramming language တစ္ခုခုျဖစ္ ေရးသားျပီ ၊ ထို ပရိုဂရမ္ထဲမွာ မွ MPI ကို ေခၚယူ သံုးစြဲလို႔ရတာပါ ။ အဲဒီလို ပရိုဂရမ္ေတြ ေရးတဲ့ေနရာမွာ programming language ေတာ္ေတာ္မ်ားမ်ားကို အသံုးျပဳလို႔ရေပမဲ့ C/C++ ကိုပဲ အသံုးျပဳေရးသား ေဖၚျပေပးသြားမွာပါ ။ ဘာလို႔ C/C++ ကို အသံုးျပဳလဲဆိုေတာ့ C/C++ ဟာ MPI နဲ႔တြဲ အသံုးျပဳရာမွာ ပိုမို ေကာင္းမြန္လို႔ျဖစ္ပါတယ္ ။

MPI ကို ျပိဳင္တူတြက္ခ်က္ေရးကြန္ပ်ဴတာမ်ား(parallel computer) ကို ေစခိုင္းေဆာင္ရြက္ေစဖို႔ အသံုးျပဳပါတယ္ ။ MPI မွာ point-to-point communication နဲ႔ collective communication နွစ္မ်ိဳးစလံုးကို အသံုးျပဳလို႔ရပါတယ္ ။ MPI ရဲ့ ရည္ရြယ္ခ်က္ကေတာ့ ျမင့္မာတဲ့ ေဆာင္ရြက္နိုင္မွဳ႕၊ တိတိက်က် တြက္ခ်က္နိုင္မွဳ႕ နဲ႔ အလြယ္တကူအသံုးျပဳနိုင္မွဳ႕တို႔ပဲျဖစ္ပါတယ္ ။ MPI ဟာ အဆင့္ျမင့္တြက္ခ်က္ေရးနည္းပညာ ပိုင္းမွာ အလြန္ေကာင္းမြန္တဲ့ model အျဖစ္ က်န္ရွိေနဆဲပါပဲ ။