Saturday, 17 September 2011


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 မ်ား က ေဆာင္ရြက္လိုက္ျခင္းပဲ ျဖစ္ပါတယ္ ။
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKdZyYD4NTe8QXT4qYSoKU7KydrhhMDh1hFt1NDPNvXBy8v28cuBEHu_2M_7KOjRQaAF5KLDVhfO_kiBqVgA_zSGnDV0D9uXIal8t0LoGqKoJSoUH3P3F6n9OiqJcbzMCZ6DvHxp9W_Yw/s640/parallelProblem.gif
 အဲလိုတြက္ခ်က္လိုက္ျခင္းအားျဖင့္ ကၽြန္ေတာ္တို႔ ၾကီးမားေသာ 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 ကိုပဲ မွ်ေ၀ အသံုးျပဳၾကတာပါ ။
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHxdUUMjqcU2ML0GhccUrokWv_GrdGGoX4-fKE4ldK20IZsrOHxJPUpj7QKne19-96iAThNyA67o7Un0vXZpSi3t2N_05QJ25ktk4d_tJqY85-S1JWsz30hGp9KMn2h4al2geJH-NEpS0/s640/shared_mem.gif

Distributed memory ထဲမွာေတာ့ memory ေျမာက္ျမားစြာ ရွိပါတယ္ ။ CPU တစ္ခုဟာ သူ႔ရဲ့ ကိုယ္ပိုင္ memory တစ္ခု ရွိပါတယ္ ။ အဲလို ကိုယ္ပိုင္ memory တစ္ခုစီရွိတဲ့ CPU မ်ားကို ေပါင္းစပ္ျပီး parallel တြက္ခ်က္ျခင္း ျဖစ္ပါတယ္ ။ ဥပမာ ေျပာရရင္ ေသးငယ္တဲ့ ကြန္ပ်ဴတာ နက္၀က္ေလးတစ္ခုမွာ ကြန္ပ်ဴတာ ၄ လံုးရွိတယ္ ဆိုၾကပါစို႔ ။ ကြန္ပ်ဴတာ တစ္လံုးခ်င္းစီမွာ သူ႔ရဲ့ ကိုယ္ ပိုင္ CPU နဲ႔ ကိုယ္ပိုင္ memory တစ္ခုစီ ရွိၾကပါတယ္ ။ သူတို႔ဟာ shared memory လို memory တစ္ခုထဲကို မွ်ေ၀ အသံုးျပဳေနတာ မဟုတ္ၾကပါဘူး ။ ကိုယ္ပိုင္ memory ေတြ နဲ႔လုပ္ေဆာင္ေနၾကပါတယ္ ။ အဲဒီ နက္၀က္အတြင္းမွာ ရွိတဲ့ ကြန္ပ်ဴတာ ၄ လံုးကို ဆက္သြယ္အသံုးျပဳျပီး parallel computing ျပဳလုပ္လို႔ရပါတယ္ ။
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiSUCUrkHA2bRIfO87nASmTtKkuXMjni_un4fVE3R-xSI8Aj7SCSZbm69qA-LswmDgI8ilT_eYsDSWjMRFpLTDGUjjcfYCYxJO9o8dUNJpgXljisRMxUBtXBGvnUkgv8dqOc3rMS4yKVU/s1600/distmem.gif
MPI ဟာ distributed memory အမ်ိဳးအစား မွာ အသံုးျပဳ တဲ့ parallel programming ျဖစ္ပါတယ္ ။ MPI ဟာ နက္၀က္တစ္ခု အတြင္းမွာ ခ်ိတ္ဆက္ထားတဲ့ ကြန္ပ်ဴတာ ေတြ ရဲ့ memory မ်ားအၾကား data (သို႔)message မ်ားရဲ့ သြားလာ ျဖတ္သန္းမႈ႕ေတြကို ကိုင္တြက္ေျဖရွင္း ေပးေနသူျဖစ္ပါတယ္ ။ memory တစ္ခုမွတစ္ခု သို႔ message မ်ား ပို႔ေဆာင္ရယူဖို႔ MPI ကို အသံုးျပဳရပါတယ္ ။

0 comments:

Post a Comment

TIME AND TIDE WAIT FOR NO MEN

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More