เครื่องมือแสดงหน่วยความจำ
คุณสามารถใช้เครื่องมือดูหน่วยความจำเพื่อแสดงภาพการใช้หน่วยความจำตลอดอายุการใช้งานของโปรแกรม คุณสามารถเจาะลึกรายละเอียดของเนื้อหาหน่วยความจํา ณ จุดที่มีการใช้หน่วยความจําสูงสุด รวมถึงแก้ไขข้อบกพร่องในสถานการณ์หน่วยความจําไม่เพียงพอ (OOM) เครื่องมือดูหน่วยความจำช่วยคุณดูการใช้งานหน่วยความจำโดยรวมและดูว่าการคำนวณใกล้จะหมดหน่วยความจำแล้วเพียงใด
ข้อมูลทั้งหมดที่แสดงในเครื่องมือตรวจสอบหน่วยความจำเป็นแบบคงที่ทั้งหมด ซึ่งได้จากคอมไพเลอร์ XLA ส่วนข้อมูลรันไทม์แบบไดนามิกจะแสดงในเครื่องมือโปรไฟล์หน่วยความจำ
แพลตฟอร์มที่รองรับ
TPU: รองรับ
GPU: รองรับ
คอมโพเนนต์โปรแกรมดูหน่วยความจำ
เครื่องมือดูหน่วยความจำประกอบด้วยองค์ประกอบหลักหลายอย่าง ดังนี้
- เมนูแบบเลื่อนลงของการควบคุมของผู้ใช้ที่ช่วยให้คุณปรับแต่งข้อมูลที่แสดงเป็นภาพได้
- ประเภทหน่วยความจํา: ประเภทหน่วยความจําที่รองรับจะขึ้นอยู่กับ Accelerator สำหรับ GPU นั้น ประเด็นสำคัญอยู่ที่หน่วยความจำแบนด์วิดท์สูง (HBM) ส่วน TPU นั้น คุณจะดูการใช้งานหน่วยความจำในชิปเพิ่มเติมได้ด้วย ซึ่งรวมถึง VMEM, SMEM, CMEM, Sync Flags (SFlag), Sparsecore และหน่วยความจำโฮสต์
- โมดูล: โปรแกรม XLA เหล่านี้เป็นส่วนหนึ่งของการดําเนินการ จุดเริ่มต้นที่ดีมักเป็นโมดูลระดับบนสุดที่มีป้ายกำกับว่า "jit_train_step" หรือ "jit_generate"
- ส่วนภาพรวมแบบข้อความจะให้ข้อมูลระดับสูง เช่น การจองหน่วยความจำสูงสุดที่จําเป็นสําหรับโปรแกรม การแยกระหว่างอาร์กิวเมนต์กับตัวแปรชั่วคราว ฯลฯ อาจมีค่าใช้จ่ายเพิ่มเติมเนื่องจากการเพิ่มค่า ซึ่งจําเป็นเนื่องจากข้อจํากัดเกี่ยวกับรูปร่างของ Tensor ที่รองรับในอุปกรณ์เร่งความเร็ว หากการถ่วงน้ำหนักนี้คิดเป็นสัดส่วนที่มากของการกําหนดทั้งหมด แสดงว่าอาจมีโอกาสในการเพิ่มประสิทธิภาพ
- แผนภูมิเส้น "ขนาดการจัดสรรหน่วยความจําเทียบกับลําดับโปรแกรม" จะแสดงการใช้หน่วยความจําเทียบกับจุดของโปรแกรม (ลําดับ HLO) ตามกำหนดการโดยคอมไพเลอร์
- โปรดทราบว่าแกน X ไม่ใช่เวลา
- แผนภูมิจะไฮไลต์จุดในโปรแกรมที่มีการใช้หน่วยความจําสูงสุดของโมดูลที่เลือกโดยเฉพาะ เครื่องมือและโปรแกรมวิเคราะห์จะไม่ทราบถึงการอยู่ร่วมกันของโมดูลในชิป/หน่วยความจําหนึ่งๆ เมื่อคอมไพล์แต่ละข้อบังคับแล้ว คอมไพเลอร์จะกำกับเนื้อหาในโปรไฟล์ด้วยจุดเริ่มต้น "ฐาน" ของหน่วยความจำทั้งหมดที่จัดสรร (โดยข้อบังคับที่คอมไพล์ก่อนข้อบังคับนี้) และนับขึ้นและลงจากจุดเริ่มต้นดังกล่าวเมื่อมีการจัดสรรและการเลิกจัดสรรเพิ่มเติม อย่างไรก็ตาม ระบบจะไม่บันทึกการจัดสรรในอนาคตโดยโมดูลอื่นๆ ที่คอมไพล์ไว้ก่อนการเรียกใช้ โปรดคำนึงถึงเรื่องนี้ขณะแก้ไขข้อบกพร่องเกี่ยวกับ OOM
แผนภูมิบัฟเฟอร์ที่ด้านล่างของหน้าจะแสดงรายละเอียดการใช้หน่วยความจำที่จุดสูงสุดของการใช้งานโปรแกรม (ระบุด้วยเส้นแนวตั้งในแผนภูมิเส้นแสดงการใช้งานหน่วยความจำ) แผนภูมิมีทั้งหมด 3 แผนภูมิ ซึ่งแสดงบัฟเฟอร์ทั้งชุดที่โปรแกรมจัดสรร แต่จัดเรียง 3 วิธีที่แตกต่างกัน ดังนี้
- ตามลําดับโปรแกรม: ลําดับที่โปรแกรมเริ่มทํางาน โดยโปรแกรมที่เก่าที่สุดจะปรากฏทางด้านซ้าย
- ตามขนาด: รายการที่มีผลมากที่สุดต่อจุดการใช้หน่วยความจําสูงสุดจะอยู่ทางด้านซ้าย
โดยค่าเริ่มต้น รายการที่ "ไม่มีประสิทธิภาพ" ที่สุดจากมุมมองฮาร์ดแวร์จะปรากฏทางด้านซ้าย
โปรดทราบว่าสีของบัฟเฟอร์ไม่มีความหมายใดๆ เป็นพิเศษ
การวางเมาส์เหนือบัฟเฟอร์ในแผนภูมิทั้ง 3 แผนภูมิจะแสดงข้อมูลอีก 2 รายการดังนี้
- การซ้อนทับในแผนภูมิเส้นการใช้งานหน่วยความจําในสีที่ตรงกับการ์ดบัฟเฟอร์ ซึ่งระบุอายุการใช้งานของบัฟเฟอร์นั้น เช่น แถบแนวนอนที่ขอบซ้ายและขวาระบุจุดจัดสรรและการยกเลิกการจัดสรรภายในลําดับโปรแกรม ความสูงของแถบแนวนอนแสดงขนาดสัมพัทธ์ของบัฟเฟอร์ที่เลือกเทียบกับการกําหนดค่าสูงสุด
- การ์ดรายละเอียดบัฟเฟอร์แยกต่างหาก ซึ่งมักจะอยู่ทางด้านซ้ายพร้อมรายละเอียดเกี่ยวกับการดำเนินการที่เฉพาะเจาะจงตามความเกี่ยวข้อง การ์ดทั่วไปจะมีข้อมูลต่อไปนี้
- ชื่อ: ชื่อการดำเนินการ XLA ซึ่งคุณค้นหาได้ใน Graph Viewer หรือ Trace Viewer
- ขนาด: ขนาดของการจองบัฟเฟอร์ที่มีหรือไม่มีการเพิ่มค่าเริ่มต้น
- รูปร่าง: อธิบายลําดับ ขนาด และประเภทข้อมูลของอาร์เรย์ N มิติ
- ชื่อการดำเนินการของเฟรมเวิร์ก: แสดงชื่อการดำเนินการของเฟรมเวิร์กที่เชื่อมโยงกับการกําหนดนี้
- ประเภทการจัดสรร: จัดหมวดหมู่การจัดสรรบัฟเฟอร์เป็นประเภทต่อไปนี้ พารามิเตอร์ เอาต์พุต ระดับเธรด และชั่วคราว (เช่น การจัดสรรบัฟเฟอร์ภายในการผสาน)