การเขียนการทดสอบหน่วยสำหรับพาส HLO ทำได้หลายวิธี หน้านี้จะอธิบาย วิธีที่แนะนำเพื่อให้มั่นใจถึงความสอดคล้องและความสามารถในการอ่าน
FileCheck ที่มีเส้น CHECK สลับกัน
การทดสอบการส่งผ่าน HLO ส่วนใหญ่สามารถทำได้โดยใช้การทดสอบ
FileCheck
สลับบรรทัด CHECK ในข้อความโมดูล HLO ของอินพุต และตรวจสอบว่าใช้ //
CHECK แทน ; CHECK อย่างสม่ำเสมอเป็นตัวคั่น FileCheck
เช่น คุณสามารถเขียนfusion cc_testใหม่สำหรับpriotity_fusionบัตรผ่าน
ได้ดังนี้
TEST_F(PriorityFusionTest, FuseBroadcastIntoBitcastConsumers) {
absl::string_view kHlo = R"(
HloModule test_module
// CHECK: ENTRY main
ENTRY main {
// CHECK-NEXT: %[[PARAM:.*]] = f32[96]{0} parameter(0)
param_0 = f32[96]{0} parameter(0)
broadcast = f32[8,96,128,7]{3,2,1,0} broadcast(param_0), dimensions={1}
bitcast.6079.2 = f32[8,24,4,128,7]{4,3,2,1,0} bitcast(broadcast)
// CHECK-NEXT: ROOT %{ {.*} } fusion(%[[PARAM]]) { {.*} }
ROOT transpose.1990.2 = f32[8,24,128,7,4]{4,3,2,1,0} transpose(bitcast.6079.2), dimensions={0,1,3,4,2}
}
)";
RunAndFilecheckHloRewrite(kHlo, std::move(priority_fusion_));
}
LIT runner และ hlo-opt
หากเป็นไปได้ ให้ใช้โปรแกรมเรียกใช้ LIT
และ hlo-opt และวางบรรทัด CHECK ไว้ข้างๆ IR อินพุตที่เกี่ยวข้อง โปรดใช้ // CHECK แทน ; CHECK เป็นตัวคั่น
ตัวอย่างเช่น คุณสามารถเขียนการทดสอบ GPU บางรายการได้ดังนี้
// RUN: hlo-opt %s --platform=gpu --stage=llvm-before-optimizations --xla_gpu_target_config_filename=%S/../../../backends/gpu/specs/%{GPU}.txtpb | FileCheck --check-prefixes=CHECK-%{PTX} %s
HloModule Test, is_scheduled=true
fused_computation {
param_0 = f32[100,200]{1,0} parameter(0)
ROOT b.1 = f32[200,100]{1,0} transpose(f32[100,200]{1,0} param_0), dimensions={1,0}
}
ENTRY main {
a = f32[100, 200]{1,0} parameter(0)
// CHECK-PTX: call void @llvm.nvvm.barrier0
// CHECK-GCN: call void @llvm.amdgcn.s.barrier
ROOT wrapped_b = f32[200,100]{1,0} fusion(f32[100,200]{1,0} a), kind=kInput, calls=fused_computation
}
สคริปต์การสร้างCHECKอัตโนมัติ
การเขียนการตรวจสอบการทดสอบด้วยตนเองอาจเป็นงานที่ต้องใช้เวลามาก ดังนั้นการเรียกใช้เครื่องมือเพิ่มประสิทธิภาพ การอ่านผลลัพธ์เพื่อให้แน่ใจว่าตรงกับที่คาดไว้
แล้วแปลง HLO ที่เพิ่มประสิทธิภาพแล้วเป็นCHECKจึงมักเป็นวิธีที่ใช้งานได้จริงมากกว่า คุณสามารถใช้ generate_hlo_test_checks.py
เพื่อแทรกคำสั่ง CHECK ที่สร้างขึ้นโดยอัตโนมัติไว้เหนือกรณีทดสอบแต่ละรายการในไฟล์ HLO เพื่อลดความซับซ้อนของกระบวนการนี้
(ไม่) การสำรวจกราฟ
หลีกเลี่ยงการเขียนการทดสอบที่ไปยังโหนดใบของกราฟผลลัพธ์และตรงกับ op ที่คาดไว้ การทดสอบเหล่านี้เขียนได้ยาก อ่านได้ยาก และแก้ไขข้อบกพร่องได้ยากยิ่งขึ้น โปรดใช้ตัวเลือกใดตัวเลือกหนึ่งข้างต้นแทน