StableHLO ইন্টারপ্রেটার চেকলিস্ট

এই নথিতে, আমরা দোভাষীর জন্য একটি অপশন বাস্তবায়ন এবং পর্যালোচনা করার জন্য নির্দেশিকাগুলির সংক্ষিপ্ত বিবরণ দিয়েছি। আমরা ইচ্ছাকৃতভাবে দোভাষী বাস্তবায়নের পাশাপাশি সেই ফ্রন্টে অগ্রগতি করার ধারণার সাথে যাচাইকারী এবং টাইপ অনুমানের সাথে সম্পর্কিত কয়েকটি সহায়ক অ্যাকশন আইটেম অন্তর্ভুক্ত করেছি।

অপ বাস্তবায়ন করার সময়

  1. যাচাইকরণ এবং টাইপ অনুমান পদ্ধতি এবং সংশ্লিষ্ট পরীক্ষাগুলি পর্যালোচনা করার সময় একটি রেফারেন্স হিসাবে ব্যবহার করার জন্য এটির অনুরূপ একটি স্পষ্টভাবে লিখিত পরীক্ষার কৌশল (একটি PR বিবরণে) প্রদান করুন। পর্যালোচক দুইবার চেক করবেন যে বর্ণনাটি ব্যাপক।
  2. জটিল বাস্তবায়নের বিবরণ এবং সম্ভাব্য কার্যকারিতা ফাঁক সনাক্ত করতে hlo_evaluator এর সাথে পরামর্শ করুন।
  3. আপনি যদি কোনো বাগ বা অনুপস্থিত কার্যকারিতা খুঁজে পান তাহলে সংশ্লিষ্ট সফ্টওয়্যার উপাদানগুলির জন্য টিকিট ফাইল করুন৷

অপটি বাস্তবায়নের পর

  1. StablehloOps.td- এ:

    1. নিশ্চিত করুন যে অপের ওডিএস-এর summary মান বিন্যাস অনুসরণ করে। (সম্পর্কিত টিকিট )
    2. ওডিএস এবং স্পেসিফিকেশনের মধ্যে সীমাবদ্ধতা সনাক্ত করতে op XyzOp জন্য xyz_cn বা xyz_in ফর্ম্যাটে স্পেক থেকে সীমাবদ্ধতা লেবেল (যেমন Cn বা In ) উল্লেখ করে মন্তব্য যোগ করুন। নিম্নলিখিত উদাহরণ দেখায় কিভাবে mlir Traits এবং TypeConstraints পাশাপাশি মন্তব্য হিসাবে সীমাবদ্ধতা লেবেল যোগ করতে হয়। নোট xyz_c4 StableHLO_FooOp ক্লাসে সংজ্ঞায়িত সীমাবদ্ধতাগুলিকে বোঝায় (যেমন StableHLO_ShapedInterfaceOp , StableHLO_UnaryElementwiseOp , StableHLO_Op , ইত্যাদি)।

       def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1,
           Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/
            ...
         let summary = "Xyz operation";
         let arguments = (ins
            1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/
            HLO_Tensor:$b, /*xyz_i2*/
            ....
         );
      );
      
  2. TypeInference.cpp এবং StablehloOps.cpp- এ:

    1. "নিম্নলিখিত বৈশিষ্ট্যগুলি যাচাই করুন: ..." এর মতো জিনিসগুলি বলে মন্তব্যগুলি মুছুন৷
    2. op XyzOp এর জন্য xyz_cn বা xyz_in ফরম্যাটে স্পেক থেকে সীমাবদ্ধতা লেবেল উল্লেখকারী মন্তব্যগুলি (যেমন Cn বা In ) যোগ করুন, যাচাইকারীর কোন অংশ এবং আকৃতি ফাংশনগুলি স্পেসিফিকেশনের কোন সীমাবদ্ধতার সাথে মিলে যায় তা সনাক্ত করতে।
      1. একাধিক সীমাবদ্ধতা লেবেল সহ একটি মন্তব্য করা বা একই সীমাবদ্ধতা লেবেল সহ একাধিক মন্তব্য করা ঠিক আছে। এটা সব সীমাবদ্ধতা বাস্তবায়ন করা হয় কিভাবে উপর নির্ভর করে. যদি পরপর সীমাবদ্ধতা থাকে, তাহলে সেগুলিকে xyz_cn...xyz_cm, xyz_in...xyz_jn হিসাবে ঘন করুন।
      2. যদি VS বাস্তবায়নের সীমাবদ্ধতা এবং স্পেসিফিকেশনের মধ্যে একটি অমিল থাকে, তাহলে নিশ্চিত করুন যে সেই অসঙ্গতি প্রতিফলিত করে একটি উন্মুক্ত সমস্যা রয়েছে।
  3. দোভাষী পরীক্ষায় :

    1. <op_mnemonic>.mlir নামে একটি ফাইল যোগ করুন।
    2. পরীক্ষার নির্দেশিকা অনুসরণ করে পরীক্ষা লিখুন।
  4. টেস্টডেটা ডিরেক্টরিতে :

    1. নতুন যোগ করা অপারেশন দ্বারা আচ্ছাদিত যে কোনো অক্ষম পরীক্ষা চালান।
    2. পরীক্ষায় উত্তীর্ণ হলে, RUN-DISABLED RUN এ রূপান্তর করে তাদের সক্ষম করুন।
    3. নির্ভুলতার অমিল ছাড়া অন্য কোনো কারণে কোনো পরীক্ষা ব্যর্থ হলে, বাস্তবায়ন/পরীক্ষা ঠিক করুন।
    4. নির্ভুলতার অমিলের জন্য, পরীক্ষাটিকে RUN-DISABLED(#1278) দিয়ে ট্যাগ করুন (যদি এটি ইতিমধ্যে সম্পন্ন না হয়ে থাকে)।
  5. ops_stablehlo.mlir- এ:

    1. নিশ্চিত করুন যে যাচাইকারী এবং টাইপ ইনফারেন্স পদ্ধতিতে প্রতিটি সীমাবদ্ধতার জন্য কমপক্ষে একটি পরীক্ষা (ইতিবাচক বা নেতিবাচক) আছে; ODS-এ আচ্ছাদিত সীমাবদ্ধতা পরীক্ষা করা হবে না। এই পরীক্ষাগুলি বেশিরভাগই নেতিবাচক হবে, পরীক্ষা করে যে সীমাবদ্ধতাগুলি পূরণ হয় না বা ইতিবাচক হয়, পরীক্ষা করে যে অনুমানকৃত আকারটি সঠিক।
    2. নিশ্চিত করুন যে পরীক্ষার অধীনে অপ সংক্রান্ত সমস্ত পরীক্ষা একসাথে রাখা হয়েছে।
    3. নিশ্চিত করুন যে পরীক্ষার অধীনে অপের সাথে সম্পর্কিত সমস্ত পরীক্ষা একটি CHECK-LABEL লিট ম্যাক্রোর সাথে প্রিপেন্ড করা হয়েছে৷
    4. op XyzOp এর জন্য Cn , Im , ইত্যাদি ফাংশন পরীক্ষার সীমাবদ্ধতার জন্য xyz_cn_im_... ফরম্যাট ব্যবহার করে পরীক্ষার ফাংশনের নাম নির্বাচন করুন। যেসব ক্ষেত্রে প্রস্তাবিত বিন্যাস প্রযোজ্য নয়, বিদ্যমান নামটি রাখুন।
    5. উপরের ধাপটি সম্পূর্ণ হলে, ফাংশনের নামের উপর ভিত্তি করে বর্ণানুক্রমিকভাবে পরীক্ষার অধীনে অপ সংক্রান্ত সমস্ত পরীক্ষা বাছাই করুন।
    6. পরীক্ষা যোগ করতে থাকুন যতক্ষণ না ccov দেখায় >= op-এর জন্য 90% কভারেজ।
  6. infer_stablehlo.mlir এ:

    1. উপরে উল্লিখিত একই নামকরণের নির্দেশিকা অনুসরণ করে, এই ফাইলটিতে আকৃতি অনুমান পরীক্ষা সম্পর্কিত সমস্ত সীমাবদ্ধতা রয়েছে তা নিশ্চিত করুন।
    2. ops_stablehlo.mlir ফাইল থেকে যেকোন আকৃতির অনুমান পরীক্ষা এই ফাইলে সরান।
  7. spec.md এ:

    1. stablehlo/tests/interpret/<op_mnemonic>.mlir এ "উদাহরণ" বিভাগে একটি লিঙ্ক যোগ করুন (যেমন আরও উদাহরণ )।
    2. নিশ্চিত করুন যে স্পেকটিতে শুধুমাত্র 1টি উদাহরণ রয়েছে।
    3. নিশ্চিত করুন যে বিশেষ উদাহরণটি পরীক্ষার নির্দেশিকা অনুসরণ করে।
    4. নিশ্চিত করুন যে বিশেষ উদাহরণ পরীক্ষাটি ব্যাখ্যাযোগ্য।
    5. নিশ্চিত করুন যে বিশেষ উদাহরণটি ওডিএস-এ যা আছে তার মতোই।
  8. স্ট্যাটাসে.md :

    1. "দোভাষী" কলামটি yes তে আপডেট করুন।