StableHLO স্পেসিফিকেশন চেকলিস্ট

এই নথিতে, আমরা স্পেসিফিকেশনের পরিবর্তনগুলি পর্যালোচনা করার জন্য নির্দেশিকাগুলিকে সংক্ষিপ্ত করি৷ এই মুহুর্তে, এই পরিবর্তনগুলি সাধারণত একাধিক উত্সে একাধিক জিনিস পরীক্ষা করে থাকে, তাই এই নথিটি পর্যালোচনাগুলি সহজ করার জন্য সেগুলিকে সংক্ষিপ্ত করে:

  1. স্ট্যাটাস.এমডি-তে "স্পেসিফিকেশন" কলামটি "হ্যাঁ" বলছে কিনা পরীক্ষা করুন, যদি একটি নতুন অপশন যোগ করা হয় তাহলে একটি সারি যোগ করুন।
  2. বিভাগের শিরোনামটি ODS- এ অপের স্মৃতির সাথে মেলে কিনা তা পরীক্ষা করুন।
  3. "শব্দার্থবিদ্যা" বিভাগটি XLA-এর অপারেশন শব্দার্থবিদ্যার সাথে মেলে কিনা তা পরীক্ষা করুন।
  4. "ইনপুট" এবং "আউটপুট" বিভাগগুলি কিনা তা পরীক্ষা করুন:
    1. ODS হিসাবে একই আইটেম তালিকা.
    2. HloInstruction::CreateFromProto হিসাবে একই আইটেম তালিকাভুক্ত করুন।
    3. হুবহু ODS এর মত অর্ডার করা হয়।
    4. কোনো অমিল থাকলে, সংশ্লিষ্ট টিকিট আছে কিনা দেখে নিন।
  5. "সীমাবদ্ধতা" বিভাগ কিনা তা পরীক্ষা করুন:
    1. XLA এর shape_inference.cc এর সাথে মেলে।
    2. XLA এর hlo_verifier.cc এর সাথে মেলে।
    3. ODS এর সাথে মেলে।
    4. StablehloOps.cpp মেলে।
    5. কোনো অমিল থাকলে, সংশ্লিষ্ট টিকিট আছে কিনা দেখে নিন। যতটা সম্ভব নির্দিষ্ট স্থানে সেই সমস্ত টিকিটগুলিকে স্পেকের মধ্যে লিঙ্ক করুন (উদাহরণস্বরূপ, যদি একটি টিকিট এমন কোনো সীমাবদ্ধতার বিষয়ে হয় যা বাস্তবায়িত হয়নি, তাহলে সেই সীমাবদ্ধতার মধ্যেই টিকিটটি লিঙ্ক করুন)।
    6. যদি ODS এবং StablehloOps.cpp-এর সংশ্লিষ্ট অংশগুলি স্পেকের সাথে মিলে যায়, তাহলে স্ট্যাটাস.md- এ "যাচাই" এবং "টাইপ ইনফারেন্স" কলামগুলি "হ্যাঁ" বলে দেখুন।
  6. "উদাহরণ" বিভাগ কিনা তা পরীক্ষা করুন:
    1. শুধুমাত্র একটি উদাহরণ আছে. (ভবিষ্যতে, আমরা StableHLO ইন্টারপ্রেটার টেস্ট স্যুট থেকে আরও উদাহরণের সাথে লিঙ্ক করব)।
    2. কোড উদাহরণে stablehlo-opt চালিয়ে বৈধ MLIR সিনট্যাক্স ব্যবহার করে।
    3. জেনেরিক MLIR সিনট্যাক্স ব্যবহার করে যা stablehlo-opt -mlir-print-op-generic চালানোর মাধ্যমে প্রাপ্ত করা যেতে পারে (প্রিটিপ্রিন্টার পরিবর্তনে স্পেক পরিবর্তন না করার জন্য আমরা স্পেকটিতে জেনেরিক সিনট্যাক্সে লেগে থাকি)।
  7. অপারেটিং সিস্টেমের ওডিএস-এ description পরীক্ষা করুন:
    1. স্পেকের প্রথম বাক্যটি অন্তর্ভুক্ত করে।
    2. তারপর স্পেক এর সংশ্লিষ্ট বিভাগে লিঙ্ক.
    3. তারপর স্পেক হিসাবে একই উদাহরণ ব্যবহার করে কিন্তু সুন্দর সিনট্যাক্সের মাধ্যমে যা stablehlo-opt চালিয়ে প্রাপ্ত করা যেতে পারে।
  8. যাচাইকরণ এবং টাইপ ইনফারেন্স সীমাবদ্ধতা বাস্তবায়নের সাথে সম্পর্কিত ফাইলগুলি নীচে উল্লিখিত নির্দেশিকাগুলি অনুসরণ করে তা পরীক্ষা করুন:
    1. StablehloOps.td এর জন্য নির্দেশিকা # 1 অনুসরণ করুন।
    2. TypeInference.cpp এবং StablehloOps.cpp- এর জন্য নির্দেশিকা #2 অনুসরণ করুন।
    3. ops_stablehlo.mlir এর জন্য নির্দেশিকা #5 অনুসরণ করুন।
    4. infer_stablehlo.mlir এর জন্য নির্দেশিকা #6 অনুসরণ করুন।
  9. পার্শ্ব প্রতিক্রিয়া এবং অনুমানযোগ্যতার জন্য অপের মূল্যায়ন করুন।
    1. যদি অপের কোন পার্শ্বপ্রতিক্রিয়া না থাকে এবং সর্বদা অনুমানযোগ্য হয়, তাহলে এটিকে Pure বৈশিষ্ট্য দিন। এটি বিরল, কারণ বেশিরভাগ অপ্স গতিশীল আকারের অনুমতি দেয়, যা রানটাইমে আকৃতির অমিল হতে পারে, যা অনির্ধারিত আচরণ। কিছু অপের অন্যান্য পরিস্থিতিতেও অনির্ধারিত আচরণ থাকতে পারে। বেশিরভাগ অপারেশনের পার্শ্বপ্রতিক্রিয়া নেই (তাদের NoMemoryEffect বৈশিষ্ট্য থাকা উচিত)।
    2. বেশীরভাগ অপারেশন HLO_SpeculatableIf* বৈশিষ্ট্যগুলির মধ্যে একটিতে পড়ে। যদি অপটি সেগুলির মধ্যে কোনটির সাথে খাপ খায় না, তবে এটিকে ConditionallySpeculatable বৈশিষ্ট্য দিন এবং ইন্টারফেস পদ্ধতিগুলি প্রয়োগ করুন৷ speculatability লজিক কভার করতে stablehlo/tests/ops_speculatability.mlir এ পরীক্ষা যোগ করুন।