AVX-512
AVX-512 হলো অপমাস্ক রেজিস্টার এবং 512-বিট ক্রিয়াকলাপের জন্য সমর্থন সহ x86 ভেক্টর এক্সটেনশনগুলির একটি পরিবার। এর ভিত্তি এবং পৃথক সাবসেটগুলি আলাদাভাবে পরীক্ষা করা আবশ্যক; একটি একক AVX-512 লেবেল একটি সম্পূর্ণ সামঞ্জস্যের স্পেসিফিকেশন নয়।
আপনার যা জানা প্রয়োজন
AVX-512 হলো অপমাস্ক রেজিস্টার এবং 512-বিট ক্রিয়াকলাপের জন্য সমর্থন সহ x86 ভেক্টর এক্সটেনশনগুলির একটি পরিবার। এর ভিত্তি এবং পৃথক সাবসেটগুলি আলাদাভাবে পরীক্ষা করা আবশ্যক; একটি একক AVX-512 লেবেল একটি সম্পূর্ণ সামঞ্জস্যের স্পেসিফিকেশন নয়।
এটি যেভাবে কাজ করে
আর্কিটেকচারটি ZMM ভেক্টর স্টেট এবং k অপমাস্ক রেজিস্টার যুক্ত করে। মাস্ক করা অপারেশনগুলো নির্দেশিকা-নির্দিষ্ট মার্জিং বা জিরোয়িং আচরণের মাধ্যমে পৃথক লেন নির্বাচন করতে পারে। AVX512F হলো এর ভিত্তি; AVX512BW, DQ, CD এবং VL বিভিন্ন অতিরিক্ত সক্ষমতা প্রদান করে। AVX512VL তুলনামূলকভাবে সংকীর্ণ ভেক্টরে প্রাসঙ্গিক অপারেশন চালানোর অনুমতি দেয়, তাই AVX-512 কোড প্রতিটি নির্দেশে বাধ্যতামূলকভাবে 512 বিট প্রক্রিয়া করে না।
যেখানে এটি কার্যকর
একটি মাস্কযুক্ত নিউমেরিক লুপ কোনো পৃথক স্কেলার টেইল ছাড়াই তার চূড়ান্ত আংশিক ভেক্টর পরিচালনা করতে পারে, যদি নির্বাচিত নির্দেশিকাগুলো প্রয়োজনীয় মাস্কিং শব্দার্থ সমর্থন করে। বাইট অপারেশন, কনফ্লিক্ট ডিটেকশন বা নির্দিষ্ট কোনো গাণিতিক ফরম্যাট ব্যবহারকারী অ্যাপ্লিকেশনকে অবশ্যই হুবহু সেই সাবসেটগুলোর অনুরোধ করতে হবে। AVX-512 VNNI এবং AVX-VNNI ভিন্ন এনকোডিং ও এনিউমারেশন ব্যবহার করে।
সাপোর্ট এবং সক্ষমতা কীভাবে পরীক্ষা করবেন
AVX যাচাইয়ের পর, প্রোগ্রামের জন্য প্রয়োজনীয় সুনির্দিষ্ট CPUID leaf 7 ফিচার বিটগুলো যাচাই করুন। AVX-512 স্টেটের জন্য, XCR0-কে অবশ্যই XMM, YMM, অপমাস্ক, আপার ZMM এবং হাই ZMM স্টেট সক্রিয় করতে হবে: বিট 1, 2, 5, 6 এবং 7। সাধারণত ব্যবহৃত মাস্কটি হলো E6H। XGETBV-এর আগে OSXSAVE যাচাই করুন এবং এমন একটি ডিসপ্যাচার ব্যবহার করুন যা প্রতিটি প্রয়োজনীয় সাবসেট পরীক্ষা করে।
প্রোগ্রামটিতে অবশ্যই একটি উপযুক্ত বাস্তবায়ন থাকতে হবে এবং রানটাইমে এটি নির্বাচন করতে হবে। হার্ডওয়্যার গণনা, OS-সক্ষম রেজিস্টার অবস্থা এবং বাইনারির সংকলিত বেসলাইন আলাদা চেক। একটি ভার্চুয়াল মেশিন ইচ্ছাকৃতভাবে তার হোস্টের চেয়ে কম বৈশিষ্ট্য প্রকাশ করতে পারে এবং একটি ধারক হোস্ট CPU-তে নির্দেশাবলী যোগ করে না।
এই বৈশিষ্ট্যটি যা নিশ্চিত করে না
AVX512F, কোনো CPU প্রজন্মের নাম বা x86-64-v4 থেকে প্রতিটি AVX-512 সাবসেট অনুমান করবেন না। ফ্রিকোয়েন্সি, পাওয়ার এবং এক্সিকিউশন থ্রুপুট বাস্তবায়ন ও কাজের চাপের ওপর ভিত্তি করে পরিবর্তিত হয়। শুধুমাত্র একটি ডাটাবেস লেবেল নিশ্চিত করতে পারে না যে ফার্মওয়্যার, হাইব্রিড-কোর নীতি বা কোনো হাইপারভাইজার বর্তমান প্রসেসে একটি ব্যবহারযোগ্য ফিচার উন্মুক্ত করছে কিনা।
বাস্তবে সামঞ্জস্য এবং কর্মক্ষমতা
প্রতিনিধিত্বমূলক ডেটা সহ সম্পূর্ণ কাজের চাপ পরিমাপ করুন। বৃহত্তর ভেক্টরগুলি মেমরি ট্র্যাফিক, সিঙ্ক্রোনাইজেশন বা রূপান্তর খরচ অপরিবর্তিত রেখে নির্দেশ সংখ্যা হ্রাস করতে পারে। নির্দেশনা বিলম্ব, থ্রুপুট এবং শক্তি আচরণ সঠিক মাইক্রোআর্কিটেকচার এবং অপারেটিং অবস্থার উপর নির্ভর করে।
একটি ব্যবহারিক যাচাইকরণ চেকলিস্ট
- সংশ্লিষ্ট সুনির্দিষ্ট প্রসেসর বা প্ল্যাটফর্ম মডেল এবং অ্যাপ্লিকেশন, OS ও রানটাইম সংস্করণগুলি রেকর্ড করুন। প্রকৃত ত্রুটি বা প্রয়োজনীয়তার সঠিক শব্দচয়ন সংরক্ষণ করুন।
- সেই নির্দিষ্ট মডেলের জন্য প্রস্তুতকারকের রেফারেন্স পরীক্ষা করুন, তারপর প্রোগ্রামটি যে পরিবেশে চলে সেখানে কার্যকর সক্ষমতা এবং সক্রিয় অবস্থা পর্যবেক্ষণ করুন।
- নির্বাচিত বাইনারি বা ব্যাকএন্ডের প্রতিটি প্রয়োজনীয়তা তুলনা করুন। একই নামের কোনো বৈশিষ্ট্য, উপনাম বা বিস্তৃত প্রযুক্তির লেবেলই যথেষ্ট নয়।
- অ্যাপ্লিকেশনটি কাঙ্ক্ষিত বাস্তবায়ন নির্বাচন করেছে কিনা তা নিশ্চিত করুন। প্রয়োজনীয়তা পূরণ না হলে এর নথিভুক্ত ডায়াগনস্টিকস এবং একটি সমর্থিত ফলব্যাক ব্যবহার করুন।
- একবারে একটি সমর্থিত পরিবর্তন করুন এবং একই কাজের চাপ পুনরাবৃত্তি করুন। মূল কনফিগারেশন এবং পুনরুদ্ধারের পথ উপলব্ধ রাখুন।
যদি বৈশিষ্ট্যটি তালিকাভুক্ত থাকে কিন্তু সফটওয়্যার এটি ব্যবহার করতে না পারে
নির্দিষ্ট ব্যর্থ উপাদানটি দিয়ে শুরু করুন। একটি হার্ডওয়্যার ডাটাবেস সংরক্ষিত সক্ষমতা বর্ণনা করে; অপারেটিং সিস্টেম বা হাইপারভাইজর একটি ভিন্ন কার্যকর পরিবেশ প্রকাশ করতে পারে। একটি অবৈধ-নির্দেশনা (illegal-instruction) ত্রুটির ক্ষেত্রেও প্রকৃত ত্রুটিপূর্ণ নির্দেশনা এবং বাইনারি বিল্ড তদন্ত করা প্রয়োজন, কারণ ডেটা ক্ষতি বা সম্পর্কহীন কোনো অসমর্থিত নির্দেশনাও একই রকম লক্ষণ তৈরি করতে পারে।
নির্দিষ্ট প্ল্যাটফর্মের জন্য সমর্থিত অ্যাপ্লিকেশন, ড্রাইভার বা রানটাইম সংস্করণ ইনস্টল করুন এবং প্রয়োজনে ভেন্ডরের নথিভুক্ত বেসলাইন বা ফলব্যাক বিল্ড ব্যবহার করুন। একটি সফটওয়্যার আপডেট এমন কোনো নির্দেশনা তৈরি করতে পারে না যা প্রসেসরে নেই। ফার্মওয়্যার এবং নিরাপত্তা-নীতি পরিবর্তনগুলি একটি সাধারণ অপ্টিমাইজেশন রেসিপির পরিবর্তে সিস্টেম প্রস্তুতকারকের পদ্ধতি এবং একটি পুনরুদ্ধার পরিকল্পনা অনুসরণ করা উচিত।
এই ব্যাখ্যার উৎস এবং পরিধি
Intel 64 and IA-32 Architectures Software Developer's Manual · Linux কার্নেল: ইউজার স্পেসে XSTATE বৈশিষ্ট্যের ব্যবহার · x86-64 psABI: প্রসেসর আর্কিটেকচার এবং মাইক্রোআর্কিটেকচার স্তর
এই রেফারেন্সগুলি আর্কিটেকচারাল আচরণ এবং সফটওয়্যার প্রয়োজনীয়তা স্থাপন করে। এগুলি একটি লিঙ্কযুক্ত হার্ডওয়্যার মডেল পৃষ্ঠার প্রতিটি বৈশিষ্ট্যের মান স্বাধীনভাবে যাচাই করে না। মডেল সাপোর্টের জন্য, সেই পৃষ্ঠার প্রস্তুতকারকের প্রমাণ ব্যবহার করুন এবং কার্যকর সিস্টেম কনফিগারেশন পরীক্ষা করুন। এই নিবন্ধটি কোনো বেঞ্চমার্ক, সার্টিফিকেশন বা স্বাধীন পর্যালোচনার তারিখ সরবরাহ করে না।
উৎস এবং যাচাইকরণ
সম্পাদকীয় মালিকানা: Feex। কোনো স্বাধীন পর্যালোচনার তারিখ রেকর্ড করা নেই। আমরা কীভাবে গবেষণা করি.
- Intel 64 and IA-32 Architectures Software Developer's Manual · ভলিউম 1 এবং 2 নামযুক্ত নির্দেশিকা পরিবার এবং CPUID বর্ণনা করে; ভলিউম 3 স্টেট, পেজিং, VMX এবং সুরক্ষা নিয়ন্ত্রণ বর্ণনা করে। আর্কিটেকচার ডকুমেন্টেশন কোনো নির্দিষ্ট মডেলের জন্য সাপোর্ট নিশ্চিত করে না।
- Linux কার্নেল: ইউজার স্পেসে XSTATE বৈশিষ্ট্যের ব্যবহার · OS-সক্ষম ভেক্টর স্টেট, গতিশীলভাবে সক্ষম টাইল স্টেট, সিগন্যাল-স্ট্যাক প্রয়োজনীয়তা এবং AMX অনুমতি প্রবাহ। Linux-নির্দিষ্ট আচরণ অন্য OS সম্পর্কে কোনো প্রতিশ্রুতি নয়।
- x86-64 psABI: প্রসেসর আর্কিটেকচার এবং মাইক্রোআর্কিটেকচার স্তর · মেশিন ইন্টারফেস, প্রসেসর আর্কিটেকচার: বেসলাইন এবং ক্রমবর্ধমান v2/v3/v4 ফিচার টেবিল, OS-স্টেট যাচাই এবং ডিপ্লয়মেন্ট সুপারিশ।
এই নিবন্ধটি কি দরকারী ছিল?
একটি হ্যাঁ বা না-ই যথেষ্ট। আপনি চাইলে একটি কারণ বেছে নিন, বা একটি ছোট মন্তব্য যোগ করুন।
ধন্যবাদ। এটি আমাদের এই পৃষ্ঠাটি উন্নত করতে সহায়তা করে।