បញ្ហា (The Problem)៖ ការស្រាវជ្រាវនេះដោះស្រាយបញ្ហាប្រឈមក្នុងការបង្កើនល្បឿននៃការទស្សន៍ទាយរចនាសម្ព័ន្ធ RNA (RNA secondary structure prediction) ដោយប្រើអាល់កូរីត Zuker ដែលមានភាពស្មុគស្មាញខ្ពស់ និងមានការពឹងផ្អែកទិន្នន័យមិនស្មើគ្នា (Non-uniform dependencies) ដែលធ្វើឱ្យការប្រើប្រាស់បច្ចេកទេស Tiling ធម្មតាមានការលំបាក។
វិធីសាស្ត្រ (The Methodology)៖ អ្នកស្រាវជ្រាវបានប្រើប្រាស់គំរូ Polyhedral ដើម្បីអនុវត្តយុទ្ធសាស្ត្រ Tiling ដោយស្វ័យប្រវត្តិ និងប្រៀបធៀបប្រសិទ្ធភាពនៃកូដដែលបង្កើតដោយកម្មវិធីបំប្លែងកូដ (Source-to-source compilers) ចំនួនបី នៅលើម៉ាស៊ីន Multi-core ។
លទ្ធផលសំខាន់ៗ (The Verdict)៖
| វិធីសាស្ត្រ (Method) | គុណសម្បត្តិ (Pros) | គុណវិបត្តិ (Cons) | លទ្ធផលគន្លឹះ (Key Result) |
|---|---|---|---|
| Classic Loop Implementation ការអនុវត្តកូដដើមដោយមិនមានការកែប្រែ (Classic) |
ងាយស្រួលយល់ និងអនុវត្តដោយផ្ទាល់តាមរូបមន្តគណិតវិទ្យា។ | ប្រើប្រាស់ពេលវេលាយូរខ្លាំង និងស៊ីថាមពលខ្ពស់ដោយសារបញ្ហា Data Locality មិនល្អ។ | ចំណាយពេលយូរបំផុត (១៥,៤៨៤ វិនាទី សម្រាប់ RNA ប្រវែង ៥០០០ នៅលើ AMD)។ |
| Transpose Technique បច្ចេកទេស Transpose (កែសម្រួលដោយដៃ) |
កាត់បន្ថយការអានទិន្នន័យពី Memory ដោយគ្មានប្រសិទ្ធភាព (Inefficient column reading)។ | តម្រូវឱ្យមានការសរសេរកូដឡើងវិញដោយដៃ ដែលស្មុគស្មាញជាងការប្រើឧបករណ៍ស្វ័យប្រវត្តិ។ | លឿនជាងវិធីសាស្ត្រដើមប្រហែល ១០ ដង ប៉ុន្តែនៅយឺតជាង Space-Time Tiling។ |
| PLUTO (Affine Transformation) ការប្រើប្រាស់កម្មវិធី PLUTO ដើម្បីធ្វើ Tiling |
ជាឧបករណ៍ស្វ័យប្រវត្តិដែលមានប្រជាប្រិយភាព និងងាយស្រួលប្រើសម្រាប់កូដ C/C++ ទូទៅ។ | មិនអាចធ្វើ Tiling លើរង្វិលជុំ (Loop) ទីបីនៃអាល់កូរីត Zuker បានទេ ដែលកាត់បន្ថយប្រសិទ្ធភាព។ | មានប្រសិទ្ធភាពល្អជាង Transpose លើម៉ាស៊ីន AMD ប៉ុន្តែនៅមានកម្រិត។ |
| Space-Time Tiling (DAPT Compiler) ការប្រើប្រាស់កម្មវិធី DAPT (បច្ចេកទេស Space-Time) |
បង្កើតកូដដែលមាន Data Locality ល្អបំផុត និងអាចដោះស្រាយបញ្ហាការពឹងផ្អែកមិនស្មើគ្នា (Non-uniform dependencies)។ | ជាបច្ចេកទេសកម្រិតខ្ពស់ដែលតម្រូវឱ្យប្រើប្រាស់កម្មវិធីបំប្លែងកូដជាក់លាក់ (DAPT)។ | លឿនបំផុត (៨៥០ វិនាទី សម្រាប់ RNA ប្រវែង ៥០០០) និងសន្សំសំចៃថាមពលបានច្រើនជាងគេ។ |
ការចំណាយលើធនធាន (Resource Cost)៖ ការសិក្សានេះតម្រូវឱ្យមានធនធានផ្នែករឹងកម្រិតខ្ពស់ និងចំណេះដឹងផ្នែក Programming ជ្រៅជ្រះ។
ការពិសោធន៍ត្រូវបានធ្វើឡើងដោយប្រើប្រាស់ទិន្នន័យ RNA ដែលបង្កើតដោយចៃដន្យ (Randomly generated RNA sequences) ដែលមានប្រវែងពី ១០០០ ទៅ ៥០០០។ ថ្វីត្បិតតែនេះជាស្តង់ដារសម្រាប់ការវាស់វែងល្បឿនកុំព្យូទ័រ ប៉ុន្តែវាមិនបានឆ្លុះបញ្ចាំងពីលក្ខណៈជីវសាស្ត្រជាក់ស្តែងនៃ RNA របស់មនុស្ស ឬវីរុសឡើយ។
បច្ចេកទេសនេះមានសារៈសំខាន់ខ្លាំងសម្រាប់វិស័យវិទ្យាសាស្ត្រកុំព្យូទ័រ និង Bioinformatics នៅកម្ពុជាក្នុងការបង្កើនប្រសិទ្ធភាពប្រព័ន្ធ។
ទោះបីជាការអនុវត្តផ្ទាល់លើអ្នកជំងឺមិនទាន់មានក៏ដោយ ប៉ុន្តែវាជាមូលដ្ឋានគ្រឹះដ៏សំខាន់សម្រាប់ការកសាងសមត្ថភាព High-Performance Computing (HPC) នៅកម្ពុជា។
ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖
| ពាក្យបច្ចេកទេស | ការពន្យល់ជាខេមរភាសា (Khmer Explanation) | និយមន័យសាមញ្ញ (Simple Definition) |
|---|---|---|
| RNA secondary structure prediction | ជាដំណើរការគណនាដើម្បីទស្សន៍ទាយរូបរាងដែលម៉ូលេគុល RNA នឹងបត់ខ្លួនវាបង្កើតជាគូ (Base pairs) ដោយផ្អែកលើគោលការណ៍ថាមពលអប្បបរមា (Minimum Free Energy)។ | ដូចជាការទស្សន៍ទាយថាតើខ្សែសង្វាក់មួយនឹងរមួលទៅជារាងអ្វីនៅពេលយើងទម្លាក់វាឱ្យនៅស្ងៀម។ |
| dynamic programming | ជាវិធីសាស្ត្រដោះស្រាយបញ្ហាស្មុគស្មាញដោយបំបែកវាជាផ្នែកតូចៗ ហើយរក្សាទុកចម្លើយនៃផ្នែកតូចៗទាំងនោះក្នុងតារាង ដើម្បីកុំឱ្យកុំព្យូទ័រត្រូវគណនាដដែលៗនៅពេលក្រោយ។ | ដូចជាការសរសេរចម្លើយលំហាត់ទុកក្នុងសៀវភៅ ដើម្បីកុំឱ្យចាំបាច់គិតលេខដដែលៗនៅពេលជួបលំហាត់ស្រដៀងគ្នា។ |
| polyhedral model | ជាគំរូគណិតវិទ្យាដែលតំណាងឱ្យរង្វិលជុំ (Loops) ក្នុងកូដកុំព្យូទ័រជារូបរាងធរណីមាត្រ (Polyhedra) ដើម្បីអនុញ្ញាតឱ្យកុំព្យូទ័រវិភាគ និងកែប្រែលំដាប់នៃការគណនាឱ្យមានប្រសិទ្ធភាពខ្ពស់។ | ដូចជាការរៀបចំដុំឥដ្ឋជារាងធរណីមាត្រ ដើម្បីងាយស្រួលរាប់ឬផ្លាស់ទីវា ជាជាងទុកវារាយប៉ាយគ្មានសណ្តាប់ធ្នាប់។ |
| Loop tiling | ជាបច្ចេកទេសបែងចែកការគណនាធំៗ (Iteration space) ទៅជាប្លុកតូចៗ (Tiles) ដើម្បីឱ្យទិន្នន័យដែលកំពុងប្រើប្រាស់អាចផ្ទុកនៅក្នុងអង្គចងចាំល្បឿនលឿន (CPU Cache) បាន។ | ដូចជាការញ៉ាំអាហារដោយកាត់ជាចំណិតតូចៗដាក់ក្នុងចានតូច ដើម្បីងាយស្រួលញ៉ាំនិងមិនកំពប់ ជាជាងព្យាយាមញ៉ាំទាំងមូលក្នុងពេលតែមួយ។ |
| Data locality | សំដៅលើការរៀបចំទិន្នន័យឱ្យនៅជិតនឹងអង្គគណនា (CPU) បំផុត ដើម្បីកុំឱ្យចំណាយពេលយូរក្នុងការទៅយកទិន្នន័យពីអង្គចងចាំធំ (RAM) ដែលនៅឆ្ងាយ។ | ដូចជាការដាក់ឧបករណ៍ជាងនៅក្បែរដៃនៅលើតុពេលកំពុងជួសជុល ដើម្បីកុំឱ្យដើរទៅយកនៅឃ្លាំងញឹកញាប់។ |
| Affine transformations | ជាការបំប្លែងគណិតវិទ្យាដែលប្រើដើម្បីផ្លាស់ប្តូររបៀបដែលកុំព្យូទ័រអានទិន្នន័យ ឬផ្លាស់ប្តូរលំដាប់នៃរង្វិលជុំ ដោយរក្សាទំនាក់ទំនងដើមនៃទិន្នន័យ។ | ដូចជាការបង្វិលរូបភាព ឬពង្រីករូបភាពនៅលើកុំព្យូទ័រដោយរក្សាសមាមាត្រដើមនៃរូបភាពនោះ។ |
ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖