বিভাগ: কম্পাইল সময়: মোজাইক ইনপুট/আউটপুট মিসলাইনড ব্লক এবং টাইলিং
এই ত্রুটিটি তখন ঘটে যখন কার্নেল ইনপুট বা আউটপুটের ব্লক আকৃতি ব্যবহৃত নির্দিষ্ট TPU হার্ডওয়্যারের ডেটাটাইপের ডিফল্ট টাইলিং এর সাথে সারিবদ্ধ হয় না।
নমুনা ত্রুটি বার্তা:
UNIMPLEMENTED: Mosaic failed to compile TPU kernel: Failed to set window params
for input 0: Operand of shape (..., 256, 8192) has tiling (16, 128), but its
block shape (..., 8, 8192) is not divisible by tiling evenly nor matches the
full shape.
XLA ব্যাকএন্ড: TPU
সংক্ষিপ্ত বিবরণ
TPU-তে টেনসর কোর (TC) তে দ্বি-মাত্রিক ভেক্টর রেজিস্টার থাকে। এই দুটি মাত্রাকে বলা হয় সাবলেন এবং লেন । যেহেতু TPU কম্পিউট ইউনিট (যেমন, MXU) ভেক্টর রেজিস্টারের গ্র্যানুলারিটিতে কাজ করে, তাই XLA অ্যারেগুলি টাইলসের TPU মেমোরিতে স্থাপন করা হয়।
এই টাইলিং (যেমন, 8x128 ) কম্পিউট ইউনিটগুলিকে ফিড করার সময় ডেটা রূপান্তরকে কমিয়ে দেয়। সঠিক টাইলিং মাত্রা (সাবলেন × লেন) হার্ডওয়্যার জেনারেশন এবং ডেটা টাইপের উপর নির্ভর করে। উদাহরণস্বরূপ, বেশিরভাগ ধরণের জন্য একটি সাধারণ টাইলিং হল 8×128 ।
কম্পাইলের সময়, XLA প্রতিটি কার্নেল ইনপুট/আউটপুটের মাইনর এবং সেকেন্ড-মাইনর ডাইমেনশনের জন্য নিম্নলিখিত সীমাবদ্ধতাগুলি প্রয়োগ করে:
- বিভাজ্যতা: ব্লকের মাত্রা অবশ্যই অন্তর্নিহিত টেনসরের টাইল মাত্রার গুণিতক হতে হবে, অথবা
- পূর্ণ আকৃতি ব্যতিক্রম: যদি ব্লকের মাত্রা বিভাজ্য না হয়, তাহলে এটি অন্তর্নিহিত টেনসরের সেই মাত্রার পূর্ণ আকারের সমান হতে হবে।
যখন কোনও ব্লক উভয় শর্ত লঙ্ঘন করে তখন এই ত্রুটিটি ট্রিগার হয়। উদাহরণস্বরূপ, শেপ (8, 100) টাইলিং সহ হার্ডওয়্যারে শেপ (8, 1024) এর ইনপুট থেকে শেপ (8, 128) ) এর একটি ব্লক লোড করা ব্যর্থ হয় কারণ 100 128 এবং 100 != 1024 দ্বারা বিভাজ্য নয়। তবে, ইনপুট শেপটি (32, 100) হলে এটি অনুমোদিত হবে।
ডিবাগিং
এই ত্রুটিটি সমাধানের জন্য, নিশ্চিত করুন যে আপনার কার্নেলের ব্লকের আকারগুলি বর্তমান হার্ডওয়্যার টাইলিং এর সাথে সারিবদ্ধ। ব্লকের আকার এমনভাবে সারিবদ্ধ করতে আপনার কার্নেল কোডটি পরিবর্তন করুন যাতে এটি প্রয়োজনীয় টাইলিং এর একাধিক হয়।
- উদাহরণ: যদি ত্রুটিটি বলে যে টাইলিংটি
(16, 128)কিন্তু আপনার ব্লকের আকৃতি(8, 128), তাহলে ব্লক স্পেকটি এমনভাবে পরিবর্তন করুন যাতে আকৃতিটি(16, 128)এর সাথে মেলে।