เครื่องมือวิเคราะห์ 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