تتوفّر طرق مختلفة لكتابة اختبارات الوحدات لتمريرات 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 وhlo-opt
استخدِم LIT runner
وhlo-opt، وضَع أسطر CHECK محليًا بجانب رمز IR الذي تتوافق معه. مرة أخرى، احرص على استخدام // CHECK بدلاً من ; CHECK كفاصل.
على سبيل المثال، يمكن كتابة بعض اختبارات وحدة معالجة الرسومات على النحو التالي:
// 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.
(عدم) اجتياز الرسم البياني
تجنَّب كتابة اختبارات تتنقّل بين عُقد الأوراق في الرسم البياني للنتائج وتتطابق مع العملية المتوقّعة، لأنّ هذه الاختبارات مملّة عند كتابتها، ويصعب قراءتها بسرعة، ويصعب أكثر تصحيح الأخطاء فيها. يُرجى استخدام أحد الخيارات أعلاه بدلاً من ذلك.