ចាប់ផ្តើមជាមួយ Intel Trace Analyzer និងអ្នកប្រមូល

ចាប់ផ្តើមជាមួយផលិតផល Intel-Trace-Analyzer-and-Collector-product

ចាប់ផ្តើមជាមួយ Intel® Trace Analyzer និងអ្នកប្រមូល

ប្រើឯកសារចាប់ផ្តើមនេះ និងដានដែលបានប្រមូលជាមុន file ដើម្បីដើរតាមរយៈការវិភាគដំណើរការ MPI ជាមូលដ្ឋានជាមួយ Intel® Trace Analyzer and Collector ។
Intel Trace Analyzer and Collector ជួយស្វែងរកប្រសិទ្ធភាពនៃការប្រើប្រាស់ Message passing interface (MPI) និងកំណត់អត្តសញ្ញាណ hotspots ទំនាក់ទំនង ភាពរាំងស្ទះនៃការធ្វើសមកាលកម្ម និងការផ្ទុកតុល្យភាព។ សម្រាប់ព័ត៌មានបន្ថែមអំពីផលិតផល សូមមើលទំព័រផលិតផល Intel Trace Analyzer and Collector។

ទាញយក Intel Trace Analyzer and Collector

  • ជាផ្នែកមួយនៃ Intel® oneAPI HPC Toolkit
  • ជាឧបករណ៍ឯករាជ្យ

តម្រូវការជាមុន

  • មុនពេលដំណើរការ Intel Trace Analyzer and Collector សូមប្រាកដថាអ្នកបានដំឡើង Intel® MPI Library និង Intel® oneAPI DPC++/C++ Compiler ឬ Intel® Fortran Compiler ចុងក្រោយបង្អស់។
  • វាកំណត់អថេរបរិស្ថានដែលត្រូវការសម្រាប់អ្នកចងក្រង បណ្ណាល័យ Intel MPI និង Intel Trace Analyzer and Collector ហើយអ្នកត្រៀមខ្លួនដើម្បីតាមដានកម្មវិធីរបស់អ្នក។
  • សម្រាប់ព័ត៌មានបន្ថែម សូមមើល៖ Intel® oneAPI HPC Toolkit System Requirements ។

ស្វែងយល់ពីលំហូរការងារ

  1. តាមដានកម្មវិធីរបស់អ្នក។
  2. វិភាគមុខងារ MPI សកម្មបំផុត។
  3. កំណត់ទំនាក់ទំនងដែលមានបញ្ហា
  4. កែលម្អដំណើរការកម្មវិធីរបស់អ្នកដោយជំនួសមុខងារដែលបង្កបញ្ហា

តាមដានកម្មវិធី MPI របស់អ្នក។

បង្កើតដាន file ដើម្បីប្រមូលកំណត់ហេតុព្រឹត្តិការណ៍សម្រាប់ការវិភាគឥរិយាបថកម្មវិធីខាងក្រោម។

  1. រៀបចំបរិយាកាសសម្រាប់ការបើកដំណើរការ Intel® Trace Analyzer and Collector ដោយដំណើរការស្គ្រីប setvars ពីនាយកដំឡើង oneAPI
    ចំណាំ
    តាមលំនាំដើម Intel Trace Analyzer and Collector ត្រូវបានដំឡើងទៅ /opt/intel/oneapi/itac សម្រាប់ Linux* OS និងទៅកម្មវិធី Files (x86)\Intel\oneAPI\itac\latest សម្រាប់ Windows* OS ។
    នៅលើលីនុច៖
    ប្រភព $ /opt/intel/oneapi/setvars.sh
    នៅលើ Windows៖
    "C:\កម្មវិធី Files (x86)\Intel\oneAPI\setvars.bat”
  2. ដំណើរការកម្មវិធី MPI របស់អ្នក ហើយបង្កើតដានជាមួយនឹងជម្រើស -trace។
    នៅលើលីនុច៖
    $mpirun -trace -n 4 ./poisson_sendrecv.single
    នៅលើ Windows៖
    ចងក្រងកម្មវិធី និងប្រមូលដាន។
    សម្រាប់ Intel oneAPI DPC ++/C++ Compiler សូមដំណើរការ៖
    > mpiicc -trace poisson_sendrecv.single.c
    សម្រាប់ Intel Fortran Compiler សូមដំណើរការ៖
    > mpiifort -trace poisson_sendrecv.single.f
    អតីតample បង្កើត trace (stf*) for asample poisson_sendrcv.single កម្មវិធី MPI
  3. បើក .stf ដែលបានបង្កើត file ជាមួយ Intel Trace Analyzer ជាមួយ Intel Trace Analyzer and Collector ។
    នៅលើលីនុច៖
    $ traceanalyzer ./ poisson_sendrecv.single.stf
    នៅលើ Windows៖
    traceanalyzer poisson_sendrecv.single.stf

ចំណាំ
សម្រាប់គោលបំណងសាកល្បង អ្នកអាចទាញយកដានដែលបានប្រមូលជាមុន file poisson_sendrecv.single.stf សម្រាប់ poisson ដែលប្រើក្នុងឯកសារនេះ ហើយបើកវាជាមួយ Intel Trace Analyzer and Collector ។
.stf file បើកនៅក្នុងទំព័រសង្ខេប viewដែលតំណាងឱ្យព័ត៌មានទូទៅអំពីដំណើរការកម្មវិធីរបស់អ្នក៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-1ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-2ចំណាំ សម្រាប់ព័ត៌មានបន្ថែមអំពីមុខងារ Intel Trace Analyzer និង Collector សូមមើល ស្វែងយល់បន្ថែម។

វិភាគមុខងារ MPI សកម្មបំផុត។

វិភាគឥរិយាបថកម្មវិធី MPI ស្វែងរកការរាំងស្ទះ និងកំណត់អត្តសញ្ញាណសៀរៀល ដើម្បីស្វែងរកវិធីកែលម្អការអនុវត្តកម្មវិធី។

  1. ពីទំព័រសង្ខេបបើកបន្ទាត់ពេលវេលាព្រឹត្តិការណ៍ view ដោយចុច បន្ត > គំនូសតាង > ការកំណត់ពេលវេលាព្រឹត្តិការណ៍ សម្រាប់ការវិភាគស៊ីជម្រៅនៃមុខងារ MPI កំពូល។
    តារាងបង្ហាញសកម្មភាពដំណើរការនីមួយៗតាមពេលវេលា។
    ការងារ​កម្មវិធី​គឺ​ជា​ការ​ដដែលៗ ដែល​ការ​ធ្វើ​ឡើងវិញ​នីមួយៗ​មាន​ផ្នែក​គណនា និង​ទំនាក់ទំនង MPI។
  2. កំណត់អត្តសញ្ញាណដដែលៗ ដើម្បីផ្តោតលើ និងពង្រីកវាដោយអូសកណ្ដុររបស់អ្នកតាមចន្លោះពេលដែលត្រូវការ៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-3ដាន view បង្ហាញផ្នែកនៅក្នុងដានដែលអ្នកបានជ្រើសរើស។ តារាងតារាងពេលវេលាព្រឹត្តិការណ៍បង្ហាញព្រឹត្តិការណ៍ដែលសកម្មកំឡុងពេលធ្វើម្តងទៀតដែលបានជ្រើសរើស។
    • របារផ្ដេកតំណាងឱ្យដំណើរការជាមួយនឹងមុខងារដែលហៅថានៅក្នុងដំណើរការទាំងនេះ។
    • បន្ទាត់ខ្មៅបង្ហាញពីសារដែលបានផ្ញើរវាងដំណើរការ។ ខ្សែទាំងនេះភ្ជាប់ដំណើរការបញ្ជូន និងទទួល។
    • បន្ទាត់ពណ៌ខៀវតំណាងឱ្យប្រតិបត្តិការសមូហភាព ដូចជាការផ្សាយ ឬកាត់បន្ថយប្រតិបត្តិការ។
  3. ប្តូរទៅ Flat Profile ផ្ទាំង (A) ដើម្បីមើលឱ្យកាន់តែដិតដល់នូវមុខងារដែលកំពុងប្រតិបត្តិនៅក្នុងពេលវេលាដែលអ្នក (បានជ្រើសរើសក្នុងតារាងពេលវេលាព្រឹត្តិការណ៍។ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-4
  4. Ungroup មុខងារ MPI ដើម្បីវិភាគសកម្មភាពដំណើរការ MPI នៅក្នុងកម្មវិធីរបស់អ្នក។
    ដើម្បីធ្វើដូចនេះចុចកណ្ដុរស្ដាំលើដំណើរការទាំងអស់> ក្រុម MPI (B) នៅក្នុង Flat Profile ហើយជ្រើសរើស UngroupMPI ។ ប្រតិបត្តិការនេះបង្ហាញការហៅ MPI នីមួយៗ។
  5. វិភាគដំណើរការទំនាក់ទំនងជាមួយប្រទេសជិតខាងផ្ទាល់របស់ពួកគេដោយប្រើ MPI_Sendrecv នៅពេលចាប់ផ្តើមនៃការធ្វើម្តងទៀត។ សម្រាប់អតីតampលេ៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-5
    • ក. នៅក្នុង sampដូច្នេះ ការផ្លាស់ប្តូរទិន្នន័យ MPI_Sendrecv មានការជាប់គាំង៖ ដំណើរការមិនផ្លាស់ប្តូរទិន្នន័យជាមួយប្រទេសជិតខាងរបស់វាទេ រហូតដល់ការផ្លាស់ប្តូរជាមួយឧបករណ៍មុនត្រូវបានបញ្ចប់។ កាលវិភាគព្រឹត្តិការណ៍ view បង្ហាញការស្ទះនេះជាជណ្តើរ។
    • ខ. MPI_Allreduce នៅចុងបញ្ចប់នៃការធ្វើម្តងទៀតធ្វើសមកាលកម្មដំណើរការទាំងអស់ឡើងវិញ។ នោះហើយជាមូលហេតុដែលប្លុកនេះមានរូបរាងជណ្តើរបញ្ច្រាស។
  6. កំណត់អត្តសញ្ញាណសៀរៀលដោយប្រើ Function Profile និង Message Profile views.
    • ក. បើកតារាងក្នុងពេលតែមួយ៖
      នៅក្នុង Function Profile គំនូសតាង បើកផ្ទាំងផ្ទុកតុល្យភាព។
    • ចូលទៅកាន់ម៉ឺនុយគំនូសតាង ដើម្បីបើកសារគាំទ្រfile.
    • ខ. នៅក្នុងផ្ទាំង Load Balance ពង្រីក MPI_Sendrecv និង MPI_Allreduce ។ Load Balancing បង្ហាញថាពេលវេលាដែលបានចំណាយក្នុង MPI_Sendrecv កើនឡើងជាមួយនឹងចំនួនដំណើរការ ខណៈពេលដែលពេលវេលាសម្រាប់ MPI_Allreduce ថយចុះ។
    • គ. ពិនិត្យមើលសារ Profile គំនូសតាងចុះក្រោមនៅជ្រុងខាងស្តាំ។
      ការសរសេរកូដពណ៌នៃប្លុកបង្ហាញថាសារដែលធ្វើដំណើរពីឋានៈខ្ពស់ទៅឋានៈទាបត្រូវការពេលវេលាច្រើនជាងសមាមាត្រ ខណៈដែលសារដែលធ្វើដំណើរពីចំណាត់ថ្នាក់ទាបទៅឋានៈខ្ពស់បង្ហាញពីប្រភេទនៃគំរូសេសខ្សោយ៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-6

លទ្ធផលនៃការវិភាគប្រៀបធៀបបង្ហាញថាមិនមានគំរូផ្លាស់ប្តូរស្មុគស្មាញនៅក្នុងកម្មវិធីទេ ការផ្លាស់ប្តូរត្រូវបានអនុវត្តតែជាមួយដំណើរការជិតខាងប៉ុណ្ណោះ។ ព័ត៌មាននឹងមានសារៈសំខាន់សម្រាប់កែលម្អការអនុវត្តកម្មវិធីរបស់អ្នកដោយការផ្លាស់ប្តូរជំហានទំនាក់ទំនង ដើម្បីបង្កើនប្រសិទ្ធភាពគំរូទំនាក់ទំនងនៃកម្មវិធី។

កំណត់ទំនាក់ទំនងគ្មានតុល្យភាព

មើលកម្មវិធីរបស់អ្នកក្រោមកាលៈទេសៈដ៏ល្អ ហើយប្រៀបធៀបដានដើម file ជាមួយនឹងឧត្តមគតិមួយដើម្បីញែកអន្តរកម្មដែលមានបញ្ហា។

  1. បង្កើតឧត្តមគតិ file:
    • ក. ជ្រើសរើស Advanced > Idealization ឬចុចលើចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-7 (Idealization) ប៊ូតុងរបារឧបករណ៍។
    • ខ. ពិនិត្យមើលប៉ារ៉ាម៉ែត្រនៃឧត្តមគតិនៅក្នុងប្រអប់ Idealization (ដានដ៏ល្អ file ឈ្មោះ​និង​ពេល​វេលា​សម្រាប់​ការ​បម្លែង​) ។
    • គ. ចុច ចាប់ផ្តើម ដើម្បីកំណត់ដានរបស់អ្នក។
  2. ប្រៀបធៀប​ដាន​ដើម​ជាមួយ​នឹង​ដាន​ដែល​មាន​ឧត្តមគតិ៖
    • ក. ជ្រើសរើស កម្រិតខ្ពស់ > ដ្យាក្រាមអតុល្យភាព ឬចុចលើ ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-8(ដ្យាក្រាមអតុល្យភាព) ប៊ូតុងរបារឧបករណ៍។
    • ខ. ក្នុងប្រអប់អតុល្យភាពដ្យាក្រាម ចុចបើកមួយទៀត File ប៊ូតុង រុករក​ទៅ​កាន់​ដាន​ដែល​បាន​កំណត់ ហើយ​ជ្រើសរើស​វា។
    • គ. នៅក្នុងបង្អួចដ្យាក្រាមអតុល្យភាព ចុចប៊ូតុង របៀបសរុប ហើយជ្រើសរើសរបៀបបំបែក។

ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-9

អ្នកអាចមើលឃើញថា MPI_Sendrecv គឺជាមុខងារដែលប្រើពេលច្រើនបំផុត។ ទម្ងន់អតុល្យភាពត្រូវបានបង្ហាញនៅក្នុង
ពណ៌ស្រាល និងមានប្រហែល 10% សម្រាប់មុខងារ MPI_Sendrecv ។ នេះគឺជាពេលវេលាដែលដំណើរការចំណាយពេលរង់ចាំគ្នាទៅវិញទៅមក។

កែលម្អការអនុវត្តកម្មវិធីរបស់អ្នកដោយការផ្លាស់ប្តូរទំនាក់ទំនង

  1. កែលម្អការអនុវត្តកម្មវិធី MPI ដោយផ្លាស់ប្តូរការទប់ស្កាត់ទៅជាទំនាក់ទំនងដែលមិនរារាំង។
    នៅក្នុងលេខកូដរបស់អ្នកជំនួសស៊េរី MPI_Sendrcv ជាមួយនឹងការទំនាក់ទំនងដែលមិនទប់ស្កាត់៖ MPI_Isend និង MPI_Irecv ។ សម្រាប់អតីតampលេ៖ អត្ថបទកូដដើម៖
    // ការផ្លាស់ប្តូរព្រំដែន
    ការផ្លាស់ប្តូរទុកជាមោឃៈ(para* p, grid* gr){
    int i,j;
    MPI_ស្ថានភាពស្ថានភាព_100, ស្ថានភាព_200, ស្ថានភាព_300, ស្ថានភាព_400;
    // បញ្ជូនចុះក្រោមជួរទីមួយ
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD,
    &status_100);
    // ផ្ញើជួរចុងក្រោយ
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->up, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->down, 200, MPI_COMM_WORLD, &status_200);
    ប្រើការប្រៀបធៀប Intel Trace Analyzer view ដើម្បីប្រៀបធៀបកម្មវិធីដែលមានសៀរៀលជាមួយនឹងការកែប្រែ
    // ចម្លងជួរឈរខាងឆ្វេងទៅអារេ tmp
    ប្រសិនបើ(gr->ឆ្វេង != MPI_PROC_NULL){
    gr->x_new[i][gr->lcol+1] = right_col[i]; right_col[i] = gr->x_new[i][gr->lcol];
    // ផ្ញើទៅខាងស្ដាំ
    MPI_Send(right_col, gr->lrow+2, MPI_DOUBLE, gr->right, 400, MPI_COMM_WORLD); }
    ប្រសិនបើ(gr->ឆ្វេង != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->left, 400, MPI_COMM_WORLD, &status_400); សម្រាប់(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    អត្ថបទ​កូដ​ដែល​បាន​ធ្វើ​បច្ចុប្បន្នភាព
    MPI_Request req[7];
    // បញ្ជូនចុះក្រោមជួរទីមួយ
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->down, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->up, 100, MPI_COMM_WORLD, &req[1]);
    ....
    MPI_Waitall(7, req, MPI_STATUSES_IGNORE);
    នៅពេលដែលបានកែតំរូវការម្តងហើយម្តងទៀតនៃកម្មវិធីដែលបានកែសម្រួលនឹងមើលទៅដូចជាអតីតខាងក្រោមampលេ៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-10
  2. ប្រើការប្រៀបធៀប Intel Trace Analyzer view ដើម្បីប្រៀបធៀបកម្មវិធីដែលមានសៀរៀលជាមួយនឹងកម្មវិធីដែលបានកែប្រែ។ ប្រៀបធៀបដានពីរដោយមានជំនួយពីការប្រៀបធៀប View, ទៅ View > ប្រៀបធៀប។ ការប្រៀបធៀប View មើលទៅស្រដៀងនឹង៖ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-11នៅក្នុងការប្រៀបធៀប Viewអ្នកអាចមើលឃើញថាការប្រើទំនាក់ទំនងដែលមិនរារាំងជួយលុបសៀរៀល និងកាត់បន្ថយពេលវេលានៃការទំនាក់ទំនងនៃដំណើរការ។
    ចំណាំ សម្រាប់ព័ត៌មានបន្ថែមអំពីដំណើរការកម្រិតថ្នាំងនៃកម្មវិធីរបស់អ្នក សូមមើលឯកសារសម្រាប់ឧបករណ៍រៀងៗខ្លួន៖ Intel® VTune™ Profiler MPI Code Analysis និងវិភាគកម្មវិធី Intel® MPI ដោយប្រើ Intel® Advisor ។

ស្វែងយល់បន្ថែម

រុករកធនធានខាងក្រោមសម្រាប់ព័ត៌មានបន្ថែមអំពី Intel Trace Analyzer and Collector ។ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-12ចាប់ផ្តើមជាមួយ Intel-Trace-Analyzer-and-Collector-fig-13

សេចក្តីជូនដំណឹង និងការបដិសេធ

  • បច្ចេកវិទ្យារបស់ Intel ប្រហែលជា តម្រូវឲ្យ មានផ្នែករឹង, សូហ្វវែរឬសេវាកម្មដែលអាចដំណើរការបាន។
  • គ្មានផលិតផល ឬសមាសធាតុណាមួយអាចធានាបានដាច់ខាត។
  • ការចំណាយ និងលទ្ធផលរបស់អ្នកអាចប្រែប្រួល។
  • © សាជីវកម្ម Intel ។ Intel, និមិត្តសញ្ញា Intel និងសញ្ញា Intel ផ្សេងទៀតគឺជាពាណិជ្ជសញ្ញារបស់ Intel Corporation ឬក្រុមហ៊ុនបុត្រសម្ព័ន្ធរបស់ខ្លួន។ ឈ្មោះ និងម៉ាកផ្សេងទៀតអាចត្រូវបានអះអាងថាជាកម្មសិទ្ធិរបស់អ្នកដទៃ។
  • គ្មានអាជ្ញាប័ណ្ណ (បញ្ជាក់ ឬបង្កប់ន័យដោយបិទបាំង ឬបើមិនដូច្នេះទេ) ចំពោះកម្មសិទ្ធិបញ្ញាណាមួយត្រូវបានផ្តល់ដោយឯកសារនេះ។
  • ផលិតផលដែលបានពិពណ៌នាអាចមានពិការភាពក្នុងការរចនា ឬកំហុសដែលគេស្គាល់ថាជា errata ដែលអាចបណ្តាលឱ្យផលិតផលខុសពីលក្ខណៈបច្ចេកទេសដែលបានបោះពុម្ពផ្សាយ។ កំហុសកំណត់លក្ខណៈបច្ចុប្បន្នអាចរកបានតាមការស្នើសុំ។
  • Intel បដិសេធរាល់ការធានាដោយប្រយោល និងដោយប្រយោល រួមទាំងដោយគ្មានដែនកំណត់ ការធានាដោយបង្កប់ន័យនៃភាពអាចធ្វើពាណិជ្ជកម្ម ភាពរឹងមាំសម្រាប់គោលបំណងជាក់លាក់មួយ និងការមិនរំលោភបំពាន ព្រមទាំងការធានាណាមួយដែលកើតឡើងពីដំណើរការដំណើរការ វគ្គនៃការជួញដូរ ឬការប្រើប្រាស់ក្នុងពាណិជ្ជកម្ម។

ឯកសារ/ធនធាន

intel ចាប់ផ្តើមជាមួយ Intel Trace Analyzer និងអ្នកប្រមូល [pdf] ការណែនាំអ្នកប្រើប្រាស់
ចាប់ផ្តើមជាមួយ Intel Trace Analyzer and Collector ចាប់ផ្តើមជាមួយ Intel, Trace Analyzer and Collector, Collector

ឯកសារយោង

ទុកមតិយោបល់

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានផ្សព្វផ្សាយទេ។ វាលដែលត្រូវការត្រូវបានសម្គាល់ *