เริ่มต้นใช้งาน Intel Trace Analyzer และ Collector

เริ่มต้นใช้งาน Intel-Trace-Analyzer และ Collector-product

เริ่มต้นใช้งาน Intel® Trace Analyzer และ Collector

ใช้เอกสารเริ่มต้นใช้งานนี้และการติดตามที่รวบรวมไว้ล่วงหน้า file เพื่อดำเนินการวิเคราะห์ประสิทธิภาพ MPI ขั้นพื้นฐานด้วย Intel® Trace Analyzer and Collector
Intel Trace Analyzer and Collector ช่วยสำรวจประสิทธิภาพการใช้งาน Message Passing Interface (MPI) และระบุฮอตสปอตการสื่อสาร ปัญหาคอขวดในการซิงโครไนซ์ และการปรับสมดุลโหลด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์ โปรดดูหน้าผลิตภัณฑ์ Intel Trace Analyzer and Collector

ดาวน์โหลด Intel Trace Analyzer และ Collector

  • โดยเป็นส่วนหนึ่งของชุดเครื่องมือ Intel® oneAPI HPC
  • เป็นเครื่องมือแบบสแตนด์อโลน

ข้อกำหนดเบื้องต้น

  • ก่อนที่จะรัน Intel Trace Analyzer and Collector ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Intel® MPI Library และ Intel® oneAPI DPC++/C++ Compiler หรือ Intel® Fortran Compiler ล่าสุด
  • ซึ่งจะตั้งค่าตัวแปรสภาพแวดล้อมที่จำเป็นสำหรับคอมไพเลอร์, Intel MPI Library และ Intel Trace Analyzer and Collector และคุณพร้อมที่จะติดตามแอปพลิเคชันของคุณ
  • สำหรับข้อมูลเพิ่มเติม โปรดดู: ข้อกำหนดระบบ Intel® oneAPI HPC Toolkit

ทำความเข้าใจเวิร์กโฟลว์

  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* และในโปรแกรม Files (x86)\Intel\oneAPI\itac\latest สำหรับระบบปฏิบัติการ Windows*
    บน Linux:
    $ แหล่งที่มา /opt/intel/oneapi/setvars.sh
    บน Windows:
    “C:\โปรแกรม Files (x86)\Intel\oneAPI\setvars.bat”
  2. รันแอปพลิเคชัน MPI ของคุณและสร้างการติดตามด้วยตัวเลือก -trace
    บน Linux:
    $ mpirun -trace -n 4 ./poisson_sendrecv.single
    บน Windows:
    รวบรวมแอปและรวบรวมการติดตาม
    สำหรับคอมไพเลอร์ Intel oneAPI DPC++/C++ ให้รัน:
    > mpiicc -ติดตาม poisson_sendrecv.single.c
    สำหรับ Intel Fortran Compiler ให้รัน:
    > mpiifort -trace poisson_sendrecv.single.f
    อดีตนี้ample สร้างการติดตาม (stf*) สำหรับ asampแอปพลิเคชัน le poisson_sendrcv.single MPI
  3. เปิดไฟล์ .stf ที่สร้างขึ้น file ด้วย Intel Trace Analyzer พร้อม Intel Trace Analyzer และ Collector
    บน Linux:
    $ เครื่องวิเคราะห์การติดตาม ./ poisson_sendrecv.single.stf
    บน Windows:
    เครื่องวิเคราะห์การติดตาม 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. ยกเลิกการจัดกลุ่มฟังก์ชัน MPI เพื่อวิเคราะห์กิจกรรมกระบวนการ MPI ในแอปพลิเคชันของคุณ
    เมื่อต้องการทำเช่นนี้ ให้คลิกขวาที่กระบวนการทั้งหมด > กลุ่ม MPI ( B) ใน Flat Profile และเลือก UngroupMPI การดำเนินการนี้เปิดเผยการเรียก MPI แต่ละรายการ
  5. วิเคราะห์กระบวนการสื่อสารกับเพื่อนบ้านโดยตรงโดยใช้ MPI_Sendrecv เมื่อเริ่มต้นการวนซ้ำ สำหรับเช่นampเลอ:เริ่มต้นใช้งาน Intel-Trace-Analyzer-and-Collector-fig-5
    • ก. ในสampเนื่องจากการแลกเปลี่ยนข้อมูล MPI_Sendrecv มีปัญหาคอขวด: กระบวนการจะไม่แลกเปลี่ยนข้อมูลกับเพื่อนบ้านถัดไปจนกว่าการแลกเปลี่ยนกับกระบวนการก่อนหน้าจะเสร็จสมบูรณ์ ไทม์ไลน์ของเหตุการณ์ view แสดงคอขวดนี้เป็นบันได
    • ข. MPI_Allreduce เมื่อสิ้นสุดการวนซ้ำจะซิงโครไนซ์กระบวนการทั้งหมดอีกครั้ง ด้วยเหตุนี้บล็อกนี้จึงมีลักษณะเป็นบันไดย้อนกลับ
  6. ระบุการทำให้เป็นอนุกรมโดยใช้ Function Profile และข้อความโปรfile views.
    • ก. เปิดแผนภูมิพร้อมกัน:
      ในฟังก์ชั่นโปรfile แผนภูมิ เปิดแท็บ Load Balance
    • ไปที่เมนูแผนภูมิเพื่อเปิด Message Profile.
    • ข. ในแท็บ Load Balance ให้ขยาย MPI_Sendrecv และ MPI_Allreduce Load Balancing บ่งชี้ว่าเวลาที่ใช้ใน MPI_Sendrecv จะเพิ่มขึ้นตามหมายเลขกระบวนการ ในขณะที่เวลาสำหรับ MPI_Allreduce ลดลง
    • ค. ตรวจสอบข้อความ Profile แผนภูมิลงไปที่มุมขวาล่าง
      รหัสสีของบล็อกบ่งชี้ว่าข้อความที่เดินทางจากตำแหน่งที่สูงกว่าไปยังตำแหน่งที่ต่ำกว่าต้องใช้เวลามากขึ้นตามสัดส่วน ในขณะที่ข้อความที่เดินทางจากตำแหน่งที่ต่ำกว่าไปยังตำแหน่งที่สูงกว่าจะแสดงรูปแบบเลขคี่คู่ที่อ่อนแอ:เริ่มต้นใช้งาน Intel-Trace-Analyzer-and-Collector-fig-6

ผลลัพธ์ของการวิเคราะห์เปรียบเทียบแสดงให้เห็นว่าแอปพลิเคชันไม่มีรูปแบบการแลกเปลี่ยนที่ซับซ้อน การแลกเปลี่ยนจะดำเนินการเฉพาะกับกระบวนการใกล้เคียงเท่านั้น ข้อมูลนี้จะจำเป็นสำหรับการปรับปรุงประสิทธิภาพแอปพลิเคชันของคุณโดยการเปลี่ยนขั้นตอนการสื่อสารเพื่อปรับรูปแบบการสื่อสารของแอปพลิเคชันให้เหมาะสม

ระบุการสื่อสารที่ไม่สมดุล

เฝ้าดูการใช้งานของคุณภายใต้สถานการณ์ที่เหมาะสมและเปรียบเทียบร่องรอยดั้งเดิม file ด้วยแนวคิดในอุดมคติเพื่อแยกปฏิสัมพันธ์ที่เป็นปัญหาออก

  1. สร้างอุดมคติ file:
    • ก. เลือกขั้นสูง > การทำให้เป็นอุดมคติ หรือคลิกเริ่มต้นใช้งาน Intel-Trace-Analyzer-and-Collector-fig-7 ปุ่มแถบเครื่องมือ (อุดมคติ)
    • ข. ตรวจสอบพารามิเตอร์การทำให้เป็นอุดมคติในกล่องโต้ตอบการทำให้เป็นอุดมคติ (การติดตามในอุดมคติ file ชื่อและช่วงเวลาในการแปลง)
    • ค. คลิกเริ่มเพื่อทำให้การติดตามของคุณสมบูรณ์แบบ
  2. เปรียบเทียบการติดตามดั้งเดิมกับการติดตามในอุดมคติ:
    • ก. เลือกขั้นสูง > แผนภาพความไม่สมดุล หรือคลิกที่ เริ่มต้นใช้งาน Intel-Trace-Analyzer-and-Collector-fig-8ปุ่มแถบเครื่องมือ (แผนภาพความไม่สมดุล)
    • ข. ในกล่องโต้ตอบไดอะแกรมความไม่สมดุลให้คลิกเปิดอื่น File นำทางไปยังการติดตามในอุดมคติ และเลือก
    • ค. ในหน้าต่าง Imbalance Diagram คลิกปุ่ม Total Mode และเลือก Breakdown Mode

เริ่มต้นใช้งาน Intel-Trace-Analyzer-and-Collector-fig-9

คุณจะเห็นว่า MPI_Sendrecv เป็นฟังก์ชันที่ใช้เวลานานที่สุด น้ำหนักที่ไม่สมดุลจะแสดงอยู่ใน
สีอ่อนและประกอบด้วยประมาณ 10% สำหรับฟังก์ชัน MPI_Sendrecv นี่คือเวลาที่กระบวนการรอคอยซึ่งกันและกัน

ปรับปรุงประสิทธิภาพแอปพลิเคชันของคุณโดยการเปลี่ยนการสื่อสาร

  1. ปรับปรุงประสิทธิภาพของแอปพลิเคชัน MPI โดยเปลี่ยนการบล็อกเป็นการสื่อสารที่ไม่บล็อก
    ในโค้ดของคุณ ให้แทนที่ MPI_Sendrcv แบบอนุกรมด้วยการสื่อสารที่ไม่ปิดกั้น: MPI_Isend และ MPI_Irecv สำหรับเช่นample: ข้อมูลโค้ดต้นฉบับ:
    // การแลกเปลี่ยนขอบเขต
    การแลกเปลี่ยนเป็นโมฆะ (ย่อหน้า * p, ตาราง * gr) {
    int ฉัน, j;
    MPI_สถานะ status_100, status_200, status_300, status_400;
    // ส่งลงมาแถวแรก
    MPI_Send(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->ลง, 100, MPI_COMM_WORLD); MPI_Recv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->ขึ้น, 100, MPI_COMM_WORLD,
    &สถานะ_100);
    // ส่งแถวสุดท้าย
    MPI_Send(gr->x_new[gr->lrow], gr->lcol+2, MPI_DOUBLE, gr->ขึ้น, 200, MPI_COMM_WORLD);
    MPI_Recv(gr->x_new[0], gr->lcol+2, MPI_DOUBLE, gr->ลง, 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->ขวา, 400, MPI_COMM_WORLD); -
    ถ้า(gr->ซ้าย != MPI_PROC_NULL)
    {
    MPI_Recv(left_col, gr->lrow+2, MPI_DOUBLE, gr->ซ้าย, 400, MPI_COMM_WORLD,&status_400); สำหรับ(i=0; i< gr->lrow+2; i++
    {
    gr->x_new[i][0] = left_col[i];
    }
    }
    อัปเดตข้อมูลโค้ดแล้ว
    คำขอ MPI_คำขอ [7];
    // ส่งลงมาแถวแรก
    MPI_Isend(gr->x_new[1], gr->lcol+2, MPI_DOUBLE, gr->ลง, 100, MPI_COMM_WORLD, &req[0]);
    MPI_Irecv(gr->x_new[gr->lrow+1], gr->lcol+2, MPI_DOUBLE, gr->ขึ้น, 100, MPI_COMM_WORLD, &req[1]);
    -
    MPI_Waitall (7, คำขอ, 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 และการวิเคราะห์แอปพลิเคชัน 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 Corporation หรือบริษัทในเครือ ชื่อและแบรนด์อื่น ๆ อาจถูกอ้างสิทธิ์ว่าเป็นทรัพย์สินของผู้อื่น
  • ไม่มีการอนุญาตสิทธิ์ใดๆ (โดยชัดแจ้งหรือโดยนัย โดยการห้ามปรามหรือวิธีอื่นใด) ต่อสิทธิในทรัพย์สินทางปัญญาใดๆ ที่ได้รับอนุญาตจากเอกสารนี้
  • ผลิตภัณฑ์ที่อธิบายอาจมีข้อบกพร่องด้านการออกแบบหรือข้อผิดพลาดที่เรียกว่าข้อผิดพลาดซึ่งอาจทำให้ผลิตภัณฑ์เบี่ยงเบนไปจากข้อมูลจำเพาะที่เผยแพร่ ข้อผิดพลาดที่ระบุในปัจจุบันสามารถขอได้
  • Intel ขอปฏิเสธการรับประกันโดยชัดแจ้งและโดยนัยทั้งหมด ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันโดยนัยของความสามารถในการซื้อขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ตลอดจนการรับประกันใดๆ ที่เกิดขึ้นจากการดำเนินการ แนวทางการซื้อขาย หรือการใช้งานในการค้าขาย

เอกสาร / แหล่งข้อมูล

intel เริ่มต้นใช้งาน Intel Trace Analyzer และ Collector [พีดีเอฟ] คู่มือการใช้งาน
เริ่มต้นกับ Intel Trace Analyzer และ Collector, เริ่มต้นกับ Intel, Trace Analyzer และ Collector, Collector

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *