เครื่องมือวิเคราะห์ Roofline

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

แพลตฟอร์มที่รองรับ

TPU: รองรับ

GPU: รองรับ (เบต้า)

แผนภูมิเส้นขอบคืออะไร

แผนภูมิ Roofline แสดงความสัมพันธ์ระหว่างความเข้มข้นของการดำเนินการ (FLOPS ต่อไบต์ที่เข้าถึง) กับ FLOPS ต่อวินาทีที่ทำได้

\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ Roofline ได้ใน Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures หรือในหัวข้อรูปแบบ Roofline ใน Wikipedia

การตีความแผนภูมิ Roofline

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

  • หากจุดข้อมูลอยู่ในส่วนที่ลาดเอียงของเส้นหลังคา แสดงว่าประสิทธิภาพอาจถูกจํากัดด้วยแบนด์วิดท์ของหน่วยความจํา (จํากัดด้วยหน่วยความจํา) การเพิ่มความเข้มข้นของการดำเนินการ (การประมวลผลมากขึ้นต่อไบต์ของข้อมูลที่เข้าถึง) อาจช่วยปรับปรุงประสิทธิภาพได้
  • หากจุดข้อมูลอยู่ในส่วนที่ราบเรียบของเส้นหลังคา ประสิทธิภาพมีแนวโน้มที่จะจํากัดด้วยความสามารถของคอมพิวเตอร์ (จํากัดด้วยคอมพิวเตอร์) ในกรณีนี้ การเพิ่มความเข้มข้นของการดำเนินการอีกอาจไม่ได้ทำให้ประสิทธิภาพเพิ่มขึ้นมากนัก เว้นแต่ว่าจะใช้ FLOPS สูงสุดของฮาร์ดแวร์ได้ดีขึ้น
  • ระยะห่างของจุดข้อมูลจากเส้นหลังคาบ่งบอกถึงศักยภาพในการปรับปรุงประสิทธิภาพ ระยะห่างที่มากขึ้นบ่งชี้ว่ามีโอกาสที่จะเพิ่มประสิทธิภาพโปรแกรมเพื่อใช้ความสามารถของฮาร์ดแวร์ได้ดียิ่งขึ้น

คอมโพเนนต์อินเทอร์เฟซ

อินเทอร์เฟซเครื่องมือการวิเคราะห์ Roofline มีองค์ประกอบหลักหลายอย่าง ดังนี้

  • ส่วนข้อมูลอุปกรณ์จะอธิบายข้อมูลจำเพาะของฮาร์ดแวร์ ซึ่งจะใช้วาด "เส้นหลังคา" ในแผนภูมิแบบคงที่
  • แผนภูมิเส้นหลังคาระดับโปรแกรมซึ่งมีจุดข้อมูลที่สอดคล้องกับข้อมูลต่อไปนี้
    • ระยะเวลาของโปรไฟล์ทั้งหมด
    • ระยะเวลาโปรไฟล์ทั้งหมด แต่มีข้อมูล FLOPS/s ที่มาจากตัวนับประสิทธิภาพของฮาร์ดแวร์แทนรูปแบบต้นทุนเริ่มต้นที่คํานวณโดยคอมไพเลอร์ XLA
    • ค่าเฉลี่ยของขั้นตอนที่สมบูรณ์ซึ่งดำเนินการในระหว่างระยะเวลาของโปรไฟล์ (สำหรับงานการฝึก คุณอาจไม่สนใจคำศัพท์เกี่ยวกับขั้นตอนสำหรับงานการอนุมาน)
    • แต่ละขั้นตอนที่เสร็จสมบูรณ์ซึ่งดำเนินการในระหว่างระยะเวลาของโปรไฟล์ (สําหรับงานการฝึกอบรม คุณอาจไม่สนใจคําศัพท์เกี่ยวกับขั้นตอนสําหรับงานการอนุมาน)
  • แผนภูมิเส้นยอดยังมีฟีเจอร์ต่อไปนี้ด้วย
    • คุณอาจเลือกรวมหรือยกเว้นการดำเนินการในฟีด/เอาต์ฟีดโดยใช้เมนูแบบเลื่อนลงที่ระบุ
    • การวางเมาส์เหนือจุดข้อมูลใดๆ ในแผนภูมิจะแสดงข้อมูลเพิ่มเติมที่เกี่ยวข้อง เช่น จำนวนแบนด์วิดท์สำหรับหน่วยความจำต่างๆ เวลาที่ใช้ทั้งหมด เป็นต้น
  • ตารางสถิติระดับโปรแกรมที่แสดงรายละเอียดเพิ่มเติมสำหรับแต่ละจุดข้อมูล เช่น % การใช้งานหน่วยความจำสูงสุด, % อัตรา FLOP สูงสุด ฯลฯ
  • แผนภูมิ Roofline แผนภูมิที่ 2 ซึ่งให้ข้อมูลที่ละเอียดยิ่งขึ้น โดยมีจุดข้อมูลที่ผังไว้สําหรับการดําเนินการที่ใช้เวลานานที่สุด 1, 000 อันดับแรกในช่วงที่ทำการโปรไฟล์
    • การวางเมาส์เหนือจุดข้อมูลแต่ละจุดจะแสดงข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการนั้นๆ เช่นเดียวกับแผนภูมิ Roofline ระดับโปรแกรม
    • คุณปรับแต่งจุดข้อมูลที่แสดงในแผนภูมิได้ดังนี้
      • รวม/ยกเว้นการดำเนินการในฟีดและเอาต์ฟีดผ่านเมนูแบบเลื่อนลง
      • การกรองหมวดหมู่การดำเนินการที่เฉพาะเจาะจง
      • การกรองการดำเนินการที่เชื่อมโยงกับทรัพยากรหนึ่งๆ
      • การกรองการดำเนินการที่มีชื่อที่เฉพาะเจาะจง
  • ตารางสถิติที่ 2 ซึ่งคล้ายกับตารางระดับโปรแกรม โดยให้รายละเอียดเพิ่มเติมสำหรับจุดข้อมูลแต่ละจุด

ในส่วนทั้งหมดที่อธิบายไว้ข้างต้น ระบบจะรองรับความทรงจำต่อไปนี้

  • สำหรับ TPU: HBM, VMEM, CMEM (TPU v4 เท่านั้น)
  • สำหรับ GPU: HBM, L1/SharedMem
  • เส้นที่เกี่ยวข้องในแผนภูมิจะปรากฏขึ้นก็ต่อเมื่อมีการดำเนินการภายในระยะเวลาของโปรไฟล์ที่เชื่อมโยงกับหน่วยความจำนั้น ตัวอย่างเช่น หากการดำเนินการทั้งหมดอยู่ใน HBM หรืออยู่ในขีดจำกัดของการคำนวณ คุณจะไม่พบบรรทัดสำหรับ VMEM หรือ CMEM