CPU එකක් එකවර බහු අගයන් මත ක්රියා කරන SIMD (Single Instruction, Multiple Data) තාක්ෂණය, පසුගිය කාලයේ අතිකොටික් වශයෙන් පෙනී ඇත. බොහෝ මෘදුකාංග ඉංජිනේරුවරුන් එය අධික සංකීර්ණයක් ලෙස හිතා, සාමාන්ය වැඩකටයුතු සඳහා අවශ්ය නොවන බවට කියා සිටී. නමුත් එය තේරුම් ගත හැකි, සරල මූලික රටාවක් පරිදි අනුගමනය කළ හැකි බව මේ ලිපියෙන් පෙන්වයි.
SIMD මඟින් CPU එකට එක් උපදෙස් එකක් තුළ බයිට්, වචන, හෝ 32‑බිට් වගුවක් වැනි බහු අගයන් සමාන වේගයෙන් සැකසීමට හැකියාව ලැබේ. උදාහරණයක් ලෙස, බයිට් 4ක්, 8ක්, 16ක් වැනි කණ්ඩායම්වලට එකවර පරීක්ෂා කිරීමේ හැකියාව ඇත. මෙය සාමාන්ය for‑loop එකක් වඩා 4x, 8x හෝ තවත් ඉහල වේගයක් ලබා දේ, නමුත් එය ප්රයෝජනවත් වීමට දත්ත ප්රමාණය සුදුසු ලෙස විශාල විය යුතුය.
SIMD කේතය ලියීමේ සාමාන්ය රටාව පහත පියවර පහකින් ගොඩනගා ඇත:
- අවශ්ය ස්ථිර අගයන් ප්රචාරණය (broadcast) කර, vector accumulator ආරම්භ කිරීම.
- ආදානයේ පූර්ණ vector‑width කණ්ඩායමක් මත පරිභෝජනය කිරීම.
- සමස්ත lane‑වලට සමාන ගණිත හෝ සසඳුම් කිරීම.
- අවශ්ය නම් vector ප්රතිඵලය අඩු කිරීම (reduce) හෝ ගබඩා කිරීම.
- පූර්ණ vector‑කට නොගැළපෙන ඉතිරි දත්ත සඳහා scalar tail loop එකක් භාවිත කිරීම.
මෙම පියවර හඳුනා ගැනීමෙන් පසු, ඔබේ සාමාන්ය for‑loop එක SIMD‑compatible කේතයක් බවට පත් කර ගැනීම ඉතා සරල වේ. ප්රායෝගික උදාහරණයක් ලෙස Ghostty යෙදුමේ Unicode codepoint පරීක්ෂා කිරීමේ loop එක SIMD‑වලින් කෙටි කර ඇත. එය scalar ආකාරයෙන් එක්‑එක් අගයක් පරීක්ෂා කරන අතර SIMD‑වලින් එක් vector‑width කණ්ඩායමක් සමාන වේගයෙන් පරීක්ෂා කරයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ මෘදුකාංග සංවර්ධකයින්, විශ්වවිද්යාල සිසුන්, සහ තාක්ෂණික ව්යාපාර සඳහා SIMD ඉගෙන ගැනීම අතිශය වැදගත් වේ. එය පහත ප්රතිලාභ ලබා දේ:
- දත්ත‑සමීකරණ (data‑processing) වැඩසටහන්වල වේගය වැඩි කිරීම, එමඟින් සේවාදායක පරිශීලක අත්දැකීම උත්තරීතර වේ.
- ගැලපෙන ලයිබ්රරී (simdjson, simdutf) භාවිතයෙන් JSON, UTF‑8 පරිවර්තන කාර්යයන් ඉක්මනින් කර ගැනීම, මොබයිල් යෙදුම් හා IoT උපාංග වලට ඉතා ප්රයෝජනවත්.
- සිංහල භාෂා සැකසීම, OCR, සහ ස්පීච් ප්රොසෙසින් වැනි දේශීය අයදුම්පත් සඳහා vectorized algorithm ගොඩනැගීමේ හැකියාව.
ඉදිරියේදී වැඩි පරිමාණයේ programming language එකක් SIMD‑වලට native සහාය දක්වන විට, ශ්රී ලංකාවේ තාක්ෂණික ආර්ථිකය තවත් ඉදිරියට ගෙන යාමට මෙය මූලික පියවරක් වේ.
අවසන් වශයෙන්, SIMD නවකයන්ට අමාරු නොවන, පූර්ව ලුහුබැඳීමෙන් පසු for‑loop එකක් වගේම ලියිය හැකි තාක්ෂණයක් බව තේරුම් ගත යුතුයි. ඔබේ කේතයේ කුඩා වෙනස්කම්, වැඩි ප්රතිදානයක් බවට පත්වේ.