كتابة اختبارات الوحدات لعمليات HLO

تتوفّر طرق مختلفة لكتابة اختبارات الوحدات لتمريرات 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.

(عدم) اجتياز الرسم البياني

تجنَّب كتابة اختبارات تتنقّل بين عُقد الأوراق في الرسم البياني للنتائج وتتطابق مع العملية المتوقّعة، لأنّ هذه الاختبارات مملّة عند كتابتها، ويصعب قراءتها بسرعة، ويصعب أكثر تصحيح الأخطاء فيها. يُرجى استخدام أحد الخيارات أعلاه بدلاً من ذلك.