CUDA Programming සිංහලෙන් (Parallel Programing ආරම්භය)






CPU සහ GPU


CPU

අපි වෙනදා ලියන program run වුනේ මෙතන. Instruction එකින් එක කුමක්හෝ පිලිවලකට  මේකේ තියන ALU එක මගින් execute කරනවා. Dual core හෝ quad core නම් ටිකක් හොඳයි, core ටික වැඩ බෙදාගෙන කරනවා. ඒත් වැඩිම වුනොත් cores 8ක් අපි පාවිච්චි කරන පරිගනක වල තියෙයි.



GPU – Graphic Processing Unit

මේක අපි ගොඩක්ම පාවිච්චි කරන්නේ game ගහන්න. ඒත් දැන් අපිට පුලුවන් මේක පාවිච්ච් කරලා parallel programs ලියන්න. මේකේ වෙනස තමයි මේකේ ALU ගොඩක් තියනවා. ඒවාට thread ගොඩක් එකපාර process කරන්න පුලුවන්. ඒ කියන්නේ වැඩ ගොඩක් parallel කරන්න පුලුවන්.




Parallel programming සහ Serial programming

Serial programming

අපි සාමාන්‍යයෙන් හදන්නේ මේ වගේ program. අපි හිතමුකෝ අපිට array එකක් දිලා තියනවා intiger 10 ක් තියන. ඒ හැම ඉල්ලක්කමක්ම 2 න් වැඩි කරලා ඒ array එකටම දාන ඕනේ.

arrrayToMul[2,4,7,9,3,4,7,3,6,4] මේ array එකම  arrrayToMul[4,8,14,18,6,8,14,6,12,8] කරන්න ඕනෙ.

අපි සාමාන්‍යයෙන් කරන්නේ මේක loop එකකට දාලා එකින් එක වැඩි කරගෙන යනවා. මේ එකක් 2න් වැඩි කරලා array එකේ ඒ index එකටම දාන 50 ms යනවා කියල හිතන්න,
මේ වැඩේ කරන්න යන සම්පූර්ණ කාලය (1 processor ,1 core) = 50 ms * 10 =500 ms


Parallel programming

මෙතනදී එකින් එක එක දිගට කරන්නේ නෑ. GPU එකේ ALU ගොඩක් තියනවා. අපි කරන්නේ මේ එක ඉලක්කමක් එක ALU එකකට වැඩි කරන්න දෙනවා. විශේෂත්වය තමයි මේ ALU වලට එකපාරම මේ ඔක්කොම වැඩ ටික කරලා දාන්න පුලුවන්.

මේ එකක් 2න් වැඩි කරලා array එකේ ඒ index එකටම දාන 50 ms යනවා කියල හිතන්න,

මේ වැඩේ කරන්න යන සම්පූර්ණ කාලය = 50 ms


මේ වැඩේ නිකන්ම වෙන්නේ නැ. අපි ඒ විදියට code ලියන්න ඕනේ. සමහර serial programs parallel විදියට ලියන්න පුලුවන්. සමහර ඒවා එහෙම ලියලා වැඩක් නෑ. සමහරවිට අපි හිතන තරම් ලොකු speed එකක් ගන්න බෑ. ඒවා ගැන ඉදිරි post වලදී කතා කරමු. දැන් මේක කොච්චර වැදගත්ද කියලා තේරනවා ඇති නේද?


CUDA programming සමඟ නැවත හමුවෙමු…………..




1 comment: