অপারেশন
mpmd.assign (mpmd::AssignOp)
অপারেশন নির্ধারণ করুন
সিনট্যাক্স:
operation ::= `mpmd.assign` attr-dict $tensor `:` functional-type(operands, results)
একটি লোকাল টেনসরকে কোনো মেশে এমনভাবে নির্ধারণ করে, যা সেই মেশের মধ্যেই সম্পূর্ণরূপে প্রতিলিপিত হয়।
এটি একটি অস্থায়ী অপ যা জ্যাক্স অপস (jax ops) লোয়ারিং করার সময় লোকাল টাইপ থেকে মেশ টাইপে স্থানান্তরের জন্য চালু করা হয়। ইম্পোর্টের সময় এই অপসগুলো বিলুপ্ত হয়ে যাবে, যখন ফাঙ্ক অপ-এর ইনপুট এবং ফলাফল মেশ টেনসরে পরিণত হবে।
ফলাফল টাইপের মেশের নামটি টপোলজির একটি মেশের সাথে সঙ্গতিপূর্ণ হতে হবে এবং এর গ্লোবাল টাইপটি অপারেন্ড টাইপের অনুরূপ হতে হবে।
অ্যাসাইন অপ-এর অরিজিন হলো মেশের অরিজিন, যেমন নেমড কম্পিউটেশন, মেশ ইনফারেন্স, ইত্যাদি।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , HasParent<::mlir::func::FuncOp, ForOp>
ইন্টারফেস: ConditionallySpeculatable , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
origin | ::mlir::StringAttr | স্ট্রিং অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensor | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | মেশ টেনসর টাইপ |
mpmd.broadcast (mpmd::BroadcastOp)
সম্প্রচার কার্যক্রম
সিনট্যাক্স:
operation ::= `mpmd.broadcast` attr-dict $tensor `:` type($tensor)
এর মাধ্যমে একটি টেনসরকে যেকোনো মেশে যেখানে এটি ব্যবহৃত হয়, সেখানে স্থানান্তর (বা প্রতিলিপি) করা যায়। যখনই স্থানান্তর করা হয়, স্থানান্তরের উৎসস্থল হয় অপারেন্ডটির বর্তমান অবস্থান।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , SameOperandsAndResultType
ইন্টারফেসসমূহ: ConditionallySpeculatable , InferTypeOpInterface , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensor | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
mpmd.call (mpmd::CallOp)
MPMD নির্দিষ্ট কল ফাংশন
সিনট্যাক্স:
operation ::= `mpmd.call` $callee `(` $tensors `)` attr-dict `:` functional-type(operands, results)
ফাংশন কল প্রক্রিয়া। উদাহরণস্বরূপ, কোডের আকার কমাতে লুপের বডিকে ফাংশন ডিক্লারেশনের মধ্যে রাখা উপযোগী।
ইন্টারফেসসমূহ: ArgAndResultAttrsOpInterface , CallOpInterface , SymbolUserOpInterface
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
callee | ::mlir::FlatSymbolRefAttr | ফ্ল্যাট প্রতীক রেফারেন্স অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensors | যেকোনো নন-টোকেন টাইপ মান বা মেশ টেনসর টাইপের টেনসরের ভ্যারিয়েডিক |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
| «নামহীন» | যেকোনো নন-টোকেন টাইপ মান বা মেশ টেনসর টাইপের টেনসরের ভ্যারিয়েডিক |
mpmd.for (mpmd::ForOp)
অপারেটরের জন্য
একটি বডি ফাংশনকে নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করার ফলাফল ফেরত দেয়, যেখানে পুনরাবৃত্তির সূচকটি বডির মধ্যেই পাওয়া যায়।
একটি ঐচ্ছিক আনরোল ফ্যাক্টর নির্দিষ্ট করা যেতে পারে, যা অবশ্যই ইটারেশনের সংখ্যাকে ভাগ করবে। এর মাধ্যমে অপ-এর বডিকে সেই ফ্যাক্টর দ্বারা আনরোল করা হয়। অর্থাৎ, আনরোল ফ্যাক্টর N-এর ক্ষেত্রে, বডিটি প্রতিলিপি করে Nটি কপি তৈরি করা হয় এবং ইটারেশনের সংখ্যা 1/N ফ্যাক্টর দ্বারা হ্রাস পায়। প্রথমটি ছাড়া প্রতিটি কপি ব্লক আর্গুমেন্টের পরিবর্তে পূর্ববর্তী কপির ফলাফল ব্যবহার করে এবং প্রতিটি কপির পরে ইটারেশন ইনডেক্সকে আনরোল ফ্যাক্টর দ্বারা গুণ করে এক বৃদ্ধি করা হয়।
একটি 'for' অপারেটর যেকোনো ধরনের ডেটা গ্রহণ ও ফেরত দিতে পারে, কিন্তু সেগুলোর TypeID অবশ্যই একই হতে হবে — যেমন, সব টেনসর টাইপ বা সব MPMD মেশ টাইপ ইত্যাদি। এর ফলে আমরা ইমপ্লিমেন্টেশন ও ট্রান্সফরমেশন শেয়ার করে বিভিন্ন স্তরে এই অপারেটরটি ব্যবহার করতে পারি।
বৈশিষ্ট্যসমূহ: HLO_PairwiseSameOperandAndResultType , RecursiveMemoryEffects , RecursivelySpeculatableImplTrait , SingleBlockImplicitTerminator<ReturnOp> , SingleBlock
ইন্টারফেসসমূহ: ConditionallySpeculatable , LoopLikeOpInterface , OpAsmOpInterface , ShardableDataFlowOpInterface
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
iterations | ::mlir::IntegerAttr | ৩২-বিট অচিহ্নিত পূর্ণসংখ্যা অ্যাট্রিবিউট |
unroll_factor | ::mlir::IntegerAttr | ৩২-বিট অচিহ্নিত পূর্ণসংখ্যা অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensors | যেকোনো নন-টোকেন টাইপের ভ্যারিয়েডিক |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
results | যেকোনো নন-টোকেন টাইপের ভ্যারিয়েডিক |
mpmd.fragment (mpmd::FragmentOp)
খণ্ডিত অপারেশন
একটি MPMD টপোলজির কোনো নির্দিষ্ট মেশে একটি গণনা, অর্থাৎ একাধিক অপারেশনের একটি ব্লক, নির্ধারণ করে, যা একটি স্বতন্ত্র SPMD প্রোগ্রাম খণ্ড হিসেবে কার্যকর করার জন্য উদ্দিষ্ট।
ফ্র্যাগমেন্টটি শুধুমাত্র সেইসব মেশ টেনসর গ্রহণ ও ফেরত দেয়, যেগুলো ফ্র্যাগমেন্টটির মতোই একই মেশে নির্ধারিত থাকে।
ফ্র্যাগমেন্টের মেশ নামটি টপোলজির একটি মেশের সাথে সঙ্গতিপূর্ণ হওয়া উচিত।
ফ্র্যাগমেন্টটিতে একটি অরিজিন তালিকা অন্তর্ভুক্ত থাকে, অর্থাৎ, মেটাডেটা যাতে এই ফ্র্যাগমেন্টটি গঠনকারী মূল named_computations সম্পর্কিত তথ্য থাকে, এবং একটি staged_id থাকে যা সংজ্ঞায়িত হয় যদি এটি একটি ব্যবহারকারী-সংজ্ঞায়িত ফ্র্যাগমেন্ট হয়, অর্থাৎ, এর একটি অ-খালি অরিজিন তালিকা থাকে। ঐচ্ছিক in_shardings একটি ফ্র্যাগমেন্টের ব্লক আর্গুমেন্টগুলির শার্ডিং নির্দিষ্ট করে, যা অপারেন্ডগুলির সাথে সঙ্গতিপূর্ণ। ঐচ্ছিক out_shardings ফলাফলগুলির শার্ডিং নির্দিষ্ট করে।
ফ্র্যাগমেন্টের অঞ্চলে কোনো ফ্রি ভ্যারিয়েবল থাকা উচিত নয়, এবং এই অঞ্চলের প্রতিটি ব্লক আর্গুমেন্ট ও রিটার্ন করা মানের টাইপ হবে সংশ্লিষ্ট মেশ টেনসরের গ্লোবাল টেনসর টাইপ।
বৈশিষ্ট্যসমূহ: HasParent<::mlir::func::FuncOp, ForOp> , IsolatedFromAbove , RecursiveMemoryEffects , RecursivelySpeculatableImplTrait , SingleBlockImplicitTerminator<ReturnOp> , SingleBlock
ইন্টারফেস: ConditionallySpeculatable , ShardableDataFlowOpInterface
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
origin | ::mlir::ArrayAttr | উৎস তথ্যের অ্যারে |
mesh_name | ::mlir::StringAttr | স্ট্রিং অ্যাট্রিবিউট |
stage_id | ::mlir::IntegerAttr | ৬৪-বিট চিহ্নবিহীন পূর্ণসংখ্যা অ্যাট্রিবিউট |
in_shardings | ::mlir::sdy::TensorShardingPerValueAttr | একটি অপারেশনের প্রতিটি অপারেন্ড/ফলাফলের জন্য টেনসর শার্ডিং |
out_shardings | ::mlir::sdy::TensorShardingPerValueAttr | একটি অপারেশনের প্রতিটি অপারেন্ড/ফলাফলের জন্য টেনসর শার্ডিং |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
inputs | মেশ টেনসর টাইপ বা টোকেনের ভ্যারিয়েডিক |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
results | মেশ টেনসর টাইপ বা টোকেনের ভ্যারিয়েডিক |
mpmd.fragment_call (mpmd::FragmentCallOp)
ফ্র্যাগমেন্ট কল অপারেশন
এটি এমন একটি ফাংশনের কলকে বোঝায় যা একটি MPMD ফ্র্যাগমেন্ট বডি ধারণ করে; অর্থাৎ, একটি MPMD টপোলজির কোনো নির্দিষ্ট মেশের জন্য নির্ধারিত একটি গণনা, যা একটি স্বতন্ত্র SPMD প্রোগ্রাম ফ্র্যাগমেন্ট হিসেবে কার্যকর করার উদ্দেশ্যে তৈরি।
ফ্র্যাগমেন্টের মেশের নামটি পরিবেষ্টনকারী ফাংশনের টপোলজির একটি মেশের সাথে সঙ্গতিপূর্ণ হওয়া উচিত এবং সেই মেশের আকৃতিটি ক্যালির আকৃতির সাথে মিলতে হবে।
উৎসটি সেইসব ব্যবহারকারী-নামযুক্ত গণনাগুলিকে নির্দিষ্ট করে যেগুলি, যেমন—মার্জ করার মাধ্যমে, এই ফ্র্যাগমেন্ট কলে অবদান রেখেছে।
ক্যালির ফাংশন ইনপুট এবং রেজাল্ট টাইপ অবশ্যই যথাক্রমে এই অপের অপারেন্ড এবং রেজাল্টের সংশ্লিষ্ট মেশ টেনসরের লোকাল টেনসর টাইপ হতে হবে।
উদাহরণ:
%2 = mpmd.fragment_call<mesh="m1", origin=[]> @my_fragment(%0, %1) :
(mesh_tensor<...>, mesh_tensor<...>) -> mesh_tensor<...>
বৈশিষ্ট্য: HasParent<::mlir::func::FuncOp> , MemRefsNormalizable
ইন্টারফেসসমূহ: ArgAndResultAttrsOpInterface , CallOpInterface , SymbolUserOpInterface
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
origin | ::mlir::ArrayAttr | উৎস তথ্যের অ্যারে |
mesh_name | ::mlir::StringAttr | স্ট্রিং অ্যাট্রিবিউট |
callee | ::mlir::FlatSymbolRefAttr | ফ্ল্যাট প্রতীক রেফারেন্স অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensors | মেশ টেনসর টাইপের ভ্যারিয়েডিক |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
| «নামহীন» | মেশ টেনসর টাইপের ভ্যারিয়েডিক |
mpmd.named_computation (mpmd::NamedComputationOp)
নামযুক্ত স্কোপ অপারেশন
একটি কম্পিউটেশন, অর্থাৎ একাধিক অপারেশনের একটি ব্লক, গ্রুপ করে এবং UserOrigin অ্যাট্রিবিউটের মাধ্যমে এটিকে একটি নাম ও একটি ট্রান্সপোজ কাউন্ট প্রদান করে। এই NamedComputation-টি MPMD-তে কম্পিউটেশনটির জন্য একটি মেশ নির্ধারণ করতে অথবা অপটিমাইজেশনের কাজে ব্যবহার করা যেতে পারে।
ট্রান্সপোজ সংখ্যা (ডিফল্ট=০) নির্দেশ করে যে, উল্লিখিত গণনাটি একটি নির্দিষ্ট সংখ্যক JAX AD ট্রান্সপোজ রূপান্তরের মাধ্যমে উৎপাদিত হয়েছে কি না।
অপারেশনটির রিজিয়নে কোনো ফ্রি ভ্যারিয়েবল থাকা উচিত নয়, এবং রিজিয়নের প্রতিটি ব্লক আর্গুমেন্ট ও রিটার্ন করা ভ্যালুর টাইপ অবশ্যই অপারেশনটির ইনপুট ও রিটার্ন টাইপের সমান হতে হবে।
বৈশিষ্ট্যসমূহ: IsolatedFromAbove , RecursiveMemoryEffects , RecursivelySpeculatableImplTrait , SingleBlockImplicitTerminator<ReturnOp> , SingleBlock
ইন্টারফেস: ConditionallySpeculatable
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
origin | ::mlir::mpmd::UserOriginAttr | ব্যবহারকারী-নির্দিষ্ট গণনার উৎস। |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensors | ৪/৬/৮/১৬/৩২/৬৪-বিট ফ্লোট বা বুলিয়ান অথবা ২/৪/৮/১৬/৩২/৬৪-বিট পূর্ণসংখ্যা অথবা ৩২/৬৪-বিট ফ্লোট উপাদানযুক্ত জটিল টাইপের র্যাঙ্কড টেনসরের ভ্যারিয়েডিক অথবা প্রতি-টেনসর পূর্ণসংখ্যার কোয়ান্টাইজড মান অথবা টোকেন |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
results | ৪/৬/৮/১৬/৩২/৬৪-বিট ফ্লোট বা বুলিয়ান অথবা ২/৪/৮/১৬/৩২/৬৪-বিট পূর্ণসংখ্যা অথবা ৩২/৬৪-বিট ফ্লোট উপাদানযুক্ত জটিল টাইপের র্যাঙ্কড টেনসরের ভ্যারিয়েডিক অথবা প্রতি-টেনসর পূর্ণসংখ্যার কোয়ান্টাইজড মান অথবা টোকেন |
mpmd.named_tensor (mpmd::NamedTensorOp)
একটি মেশে একটি টেনসর নির্ধারণ করুন
সিনট্যাক্স:
operation ::= `mpmd.named_tensor` $tensor `name````=```$name attr-dict `:` type($result)
একটি আইডেন্টিটি অপ যা টেনসরের ফলাফলকে একটি প্রদত্ত নামের সাথে যুক্ত করে। এই নেমডটেনসরটি MPMD-তে টেনসরটির সাথে একটি মেশ নির্ধারণ করতে ব্যবহার করা যেতে পারে।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , SameOperandsAndResultType
ইন্টারফেসসমূহ: ConditionallySpeculatable , InferTypeOpInterface , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
name | ::mlir::StringAttr | স্ট্রিং অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensor | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
mpmd.reduce (mpmd::ReduceOp)
ক্রস-মেশ অপারেশন হ্রাস করে
সিনট্যাক্স:
operation ::= `mpmd.reduce` `` $reduction attr-dict $tensors `:` functional-type(operands, results)
এর মাধ্যমে একটি টেনসরকে বিভিন্ন মেশ জুড়ে সংকুচিত করা যায় এবং তারপর যেখানে এটি ব্যবহার করা প্রয়োজন সেখানে সম্প্রচার করা যায়।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , SameOperandsAndResultType
ইন্টারফেস: ConditionallySpeculatable , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
reduction | ::mlir::mpmd::ReductionAttr | হ্রাস বোঝায়। |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensors | যেকোনো নন-টোকেন টাইপের মানের টেনসরের ভ্যারিয়েডিক |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
mpmd.return (mpmd::ReturnOp)
mpmd.return অপারেশনটি mpmd রিজিওন-ভিত্তিক অপস-এর সাথে সংযুক্ত রিজিওনগুলোকে টার্মিনেট করে। এটি ভ্যারিয়েডিক: এটি আর্গুমেন্ট হিসেবে এমন একটি ভ্যালুর তালিকা গ্রহণ করে, যার টাইপ যেকোনো হতে পারে (কিন্তু একই ধরনের, যেমন AnyTensor ) এবং একারণে এটি MPMD IR স্ট্যাকের বিভিন্ন স্তরে পুনরায় ব্যবহার করা যায়।
সিনট্যাক্স:
operation ::= `mpmd.return` attr-dict $results (`:` type($results)^)?
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait ইমপ্লট্রেট, Terminator
ইন্টারফেস: ConditionallySpeculatable , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
results | যেকোনো নন-টোকেন টাইপের ভ্যারিয়েডিক |
mpmd.transfer (mpmd::TransferOp)
স্থানান্তর কার্যক্রম
সিনট্যাক্স:
operation ::= `mpmd.transfer` attr-dict $tensor `:` functional-type(operands, results)
একটি ডিস্ট্রিবিউটেড টেনসরকে এক মেশ থেকে অন্য মেশে স্থানান্তর করে।
অপারেন্ড এবং রেজাল্ট টাইপের মেশের নামগুলো টপোলজির মেশগুলোর সাথে সঙ্গতিপূর্ণ হতে হবে এবং তাদের গ্লোবাল টাইপগুলো অভিন্ন হতে হবে।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , HasParent<::mlir::func::FuncOp>
ইন্টারফেসসমূহ: ConditionallySpeculatable , NoMemoryEffect (MemoryEffectOpInterface) , ShardingRuleOpInterface
প্রভাব: MemoryEffects::Effect{}
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensor | মেশ টেনসর টাইপ |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | মেশ টেনসর টাইপ |
mpmd.unassign (mpmd::UnassignOp)
অপারেশন বাতিল করুন
সিনট্যাক্স:
operation ::= `mpmd.unassign` attr-dict $tensor `:` functional-type(operands, results)
একটি মেশ থেকে সম্পূর্ণভাবে প্রতিলিপিকৃত টেনসরকে অনির্বাচিত করে।
এটি একটি অস্থায়ী অপ যা জ্যাক্স অপস (jax ops) লোয়ারিং করার সময় লোকাল টাইপ থেকে মেশ টাইপে স্থানান্তরের জন্য চালু করা হয়। ইম্পোর্টের সময় এই অপসগুলো বিলুপ্ত হয়ে যাবে, যখন ফাঙ্ক অপ-এর ইনপুট এবং ফলাফল মেশ টেনসরে পরিণত হবে।
অপারেন্ড টাইপের মেশের নামটি টপোলজির একটি মেশের সাথে সঙ্গতিপূর্ণ হতে হবে এবং এর গ্লোবাল টাইপটি রেজাল্ট টাইপের অনুরূপ হতে হবে।
বৈশিষ্ট্য: AlwaysSpeculatableImplTrait , HasParent<::mlir::func::FuncOp, ForOp> , InferTensorType
ইন্টারফেসসমূহ: ConditionallySpeculatable , InferShapedTypeOpInterface , InferTypeOpInterface , NoMemoryEffect (MemoryEffectOpInterface)
প্রভাব: MemoryEffects::Effect{}
বৈশিষ্ট্যসমূহ:
| বৈশিষ্ট্য | এমএলআইআর টাইপ | বর্ণনা |
|---|---|---|
origin | ::mlir::StringAttr | স্ট্রিং অ্যাট্রিবিউট |
অপারেন্ড:
| অপারেন্ড | বর্ণনা |
|---|---|
tensor | মেশ টেনসর টাইপ |
ফলাফল:
| ফলাফল | বর্ণনা |
|---|---|
result | যেকোনো নন-টোকেন টাইপের মানের টেনসর |
বৈশিষ্ট্য
MeshWithOriginsAttr
মেশ এবং এর উৎপত্তি।
সিনট্যাক্স:
#mpmd.mesh_with_origins<
::llvm::StringRef, # mesh_name
::llvm::ArrayRef<OriginAttr> # origins
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| মেশ_নাম | ::llvm::StringRef | মেশ_নাম |
| উৎপত্তি | ::llvm::ArrayRef<OriginAttr> | উৎপত্তি |
MeshesWithOriginsAttr
মেশগুলোর উৎসসহ একটি তালিকা।
সিনট্যাক্স:
#mpmd.meshes_with_origins<
::llvm::ArrayRef<MeshWithOriginsAttr> # value
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| মূল্য | ::llvm::ArrayRef<MeshWithOriginsAttr> |
NamedMeshAttr
নাম ও মেশ সহ এক জোড়া।
সিনট্যাক্স:
#mpmd.named_mesh<
::llvm::StringRef, # name
sdy::MeshAttr # mesh
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| নাম | ::llvm::StringRef | নাম |
| জাল | sdy::MeshAttr | জাল |
অরিজিনঅ্যাট্র
মেশ অ্যাসাইনমেন্টের উৎস।
সিনট্যাক্স:
#mpmd.origin<
::llvm::StringRef # origin_label
>
মেশ অ্যাসাইনমেন্টের উৎস।
origin_label হলো অরিজিনের জন্য একটি পাঠযোগ্য লেবেল। এটি ডিবাগিংয়ের উদ্দেশ্যে ব্যবহারের জন্য তৈরি করা হয়েছে।
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| উৎস_লেবেল | ::llvm::StringRef | উৎস_লেবেল |
হ্রাস অ্যাট্রিবিউট
হ্রাস বোঝায়।
সিনট্যাক্স:
#mpmd.reduction<
`none` | `add` | `max` | `min` | `mul` | `or` | `and` # reduction_type
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| হ্রাস_প্রকার | ::mlir::mpmd::ReductionType | রিডাকশনটাইপ টাইপের একটি এনাম |
টপোলজিঅ্যাট্র
নামযুক্ত মেশগুলোর টপোলজি।
সিনট্যাক্স:
#mpmd.topology<
::llvm::ArrayRef<NamedMeshAttr> # meshes
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| জাল | ::llvm::ArrayRef<NamedMeshAttr> | টপোলজি জাল |
ব্যবহারকারীর উৎস অ্যাট্রিবিউট
ব্যবহারকারী-নির্দিষ্ট গণনার উৎস।
সিনট্যাক্স:
#mpmd.user_origin<
::mlir::StringAttr, # userName
int64_t # transposeCount
>
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| ব্যবহারকারীর নাম | ::mlir::StringAttr | |
| ট্রান্সপোজকাউন্ট | int64_t |
প্রকারভেদ
মেশটেনসরটাইপ
মেশ টেনসর টাইপ
প্রোগ্রামের MPMD টপোলজির মধ্যে একটি নির্দিষ্ট SPMD মেশে একটি RankedTensorType নির্ধারণ করে। এই টাইপটিতে একটি ঐচ্ছিক শার্ডিং থাকে, যা নির্দিষ্ট করে দেয় SPMD মেশের সাপেক্ষে টেনসরটি কীভাবে শার্ড করা হবে। যদি শার্ডিংটি উপস্থিত না থাকে, তবে টেনসরটি সম্পূর্ণরূপে প্রতিলিপিত হয়।
পরামিতি:
| প্যারামিটার | C++ টাইপ | বর্ণনা |
|---|---|---|
| মেশ_নাম | ::llvm::StringRef | মেশের নাম |
| র্যাঙ্কড_টেনসর_টাইপ | ::mlir::RankedTensorType | র্যাঙ্কড টেনসর টাইপ |
| শার্ডিং | ::mlir::sdy::TensorShardingAttr | |
| স্মৃতি_ধরণ | ::mlir::StringAttr |
এনাম
হ্রাস প্রকার
হ্রাস প্রকার বৈশিষ্ট্য
মামলা:
| প্রতীক | মূল্য | স্ট্রিং |
|---|---|---|
| কেউ না | 0 | কোনোটিই না |
| kAdd | 1 | যোগ করুন |
| কেম্যাক্স | 2 | সর্বোচ্চ |
| kMin | 3 | মিনিট |
| কেমুল | 4 | মুল |
| kOr | 5 | অথবা |
| কান্ড | 6 | এবং |
EdgeNodeType
এজ নোড টাইপ এনাম
মামলা:
| প্রতীক | মূল্য | স্ট্রিং |
|---|---|---|
| অপারেন্ড | 0 | অপারেন্ড |
| ফলাফল | 1 | ফলাফল |
প্রচারের দিক
প্রচারের দিক enum
মামলা:
| প্রতীক | মূল্য | স্ট্রিং |
|---|---|---|
| কেউ না | 0 | কেউ না |
| সামনে | 1 | সামনে |
| পশ্চাৎমুখী | 2 | পশ্চাৎমুখী |
| উভয় | 3 | উভয় |
রিডাকশনঅপ
হ্রাস অপ এনাম
মামলা:
| প্রতীক | মূল্য | স্ট্রিং |
|---|---|---|
| যোগফল | 0 | যোগফল |
| ম্যাক্স | 1 | সর্বোচ্চ |
| মিনিট | 2 | মিনিট |