HLO পাসের জন্য ইউনিট টেস্ট লেখা

HLO পাসের জন্য ইউনিট টেস্ট লেখার বিভিন্ন উপায় আছে। এই পৃষ্ঠায় সামঞ্জস্য ও সহজে পড়ার উপযুক্ততা নিশ্চিত করার পছন্দসই পদ্ধতি বর্ণনা করা হয়েছে।

FileCheck-এর সাথে CHECKটি লাইন ইন্টারলিভ করা হয়েছে

বেশিরভাগ HLO পাস FileCheck টেস্ট ব্যবহার করে পরীক্ষা করা যেতে পারে। ইনপুট HLO মডিউল টেক্সটে CHECK লাইন ইন্টারলিভ করুন এবং FileCheck ডিলিমিটার হিসেবে ; CHECK-এর পরিবর্তে // CHECK ব্যবহার করতে ভুলবেন না।

যেমন, আপনি priotity_fusion পাস-এর জন্য fusion cc_test আবার লিখতে পারেন যেমন:

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 রানার এবং hlo-opt ব্যবহার করুন এবং ইনপুট IR-এর ঠিক পাশে স্থানীয়ভাবে CHECK লাইন রাখুন, যার সাথে এগুলি সম্পর্কিত। আবারও, নিশ্চিত করুন যে আপনি ; 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 ব্যবহার করতে পারেন যাতে HLO ফাইলের প্রতিটি টেস্ট কেসের উপরে জেনারেট করা CHECK নির্দেশাবলী অটোমেটিক যোগ করা যায়।

(Don't) Graph traversal

ফলাফল গ্রাফের লিফ নোড ট্রাভেল করে এবং প্রত্যাশিত op-এর সাথে ম্যাচ করে এমন টেস্ট লেখা থেকে বিরত থাকুন। এইসব টেস্ট লেখা ক্লান্তিকর, দ্রুত পড়া কঠিন এবং ডিবাগ ও সমাধান করা আরও কঠিন। পরিবর্তে উপরের বিকল্পগুলির মধ্যে থেকে একটি ব্যবহার করুন।