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 සමඟ නැවත හමුවෙමු…………..
සුපිරියි
ReplyDelete