ابزار مدلسازی سقف
ابزار Roofline Model یک مدل عملکرد بصری شهودی ارائه میدهد که میتوانید از آن برای درک محدودیتهای ذاتی سختافزاری که بر عملکرد برنامه شما تأثیر میگذارند، استفاده کنید. به طور خاص، این ابزار بر این موضوع تمرکز دارد که آیا برنامه وابسته به حافظه است یا وابسته به محاسبات، و اینکه عملکرد برنامه چقدر به اوج عملکرد نظری سختافزار، که به صورت "خط سقف" نمایش داده میشود، نزدیک است.

پلتفرمهای پشتیبانیشده
هم TPU و هم GPU پشتیبانی میشوند، البته پشتیبانی از GPU در نسخه بتا است.
نمودار خط سقف چیست؟
نمودار سقف، رابطه بین شدت عملیاتی (فلاپ به ازای هر بایت دسترسی) و فلاپ به ازای هر ثانیه به دست آمده را نشان میدهد.
\[ Roofline = min(Operational Intensity \times Peak Memory Bandwidth, Peak FLOPS) \]
شکل «سقف» از پایینترین نقطه اوج فلاپس و عملکرد قابل دستیابی با توجه به پهنای باند حافظه و شدت عملیاتی تشکیل شده است. نقطه برآمدگی، حداقل شدت عملیاتی مورد نیاز برای دستیابی به اوج فلاپس را نشان میدهد.
میتوانید اطلاعات بیشتری در مورد مدلهای خط سقف را در «خط سقف: یک مدل عملکرد بصری هوشمندانه برای برنامههای نقطه شناور و معماریهای چند هستهای» یا در مبحث مدل خط سقف در ویکیپدیا کسب کنید.
تفسیر نمودار خط سقف
با ترسیم شدت عملیاتی و FLOPS به دست آمده برای مراحل مختلف، بخشهای برنامه یا عملیات HLO به صورت جداگانه در نمودار roofline، میتوانید بینشهایی در مورد تنگناهای عملکرد به دست آورید:
- اگر یک نقطه داده روی قسمت شیبدار خط سقف قرار داشته باشد، عملکرد احتمالاً توسط پهنای باند حافظه محدود میشود (به حافظه وابسته است). افزایش شدت عملیاتی (انجام محاسبات بیشتر به ازای هر بایت داده دسترسی یافته) میتواند به طور بالقوه عملکرد را بهبود بخشد.
- اگر یک نقطه داده روی قسمت صاف خط سقف قرار داشته باشد، عملکرد احتمالاً توسط قابلیت محاسبه (محدود به محاسبه) محدود میشود. در این حالت، افزایش بیشتر شدت عملیاتی ممکن است منجر به افزایش قابل توجه عملکرد نشود، مگر اینکه بتوان از حداکثر فلاپس سختافزار بهتر استفاده کرد.
- فاصله یک نقطه داده از خط سقف، پتانسیل بهبود عملکرد را نشان میدهد. فاصله بزرگتر نشان میدهد که فرصتهایی برای بهینهسازی برنامه جهت استفاده بهتر از قابلیتهای سختافزار وجود دارد.
اجزای رابط
رابط ابزار تحلیل خط سقف چندین مؤلفه کلیدی دارد:
- اطلاعات دستگاه : این بخش مشخصات سختافزاری را شرح میدهد؛ این مشخصات برای ترسیم «خطوط سقف» روی نمودار به صورت ایستا استفاده میشوند.
بخش ۱: تحلیل در سطح برنامه:
- نمودار خط سقف در سطح برنامه با نقاط داده مربوط به موارد زیر:
- مدت زمان کل پروفایل.
- مدت زمان کل پروفایل، اما با دادههای FLOPS/s که از شمارندههای عملکرد سختافزار به جای مدلهای هزینه پیشفرض محاسبه شده توسط کامپایلر XLA گرفته شده است.
- میانگین مراحل کامل اجرا شده در طول مدت پروفایل (برای کارهای آموزشی؛ میتوانید اصطلاحات مربوط به مراحل را برای کارهای استنتاج نادیده بگیرید).
- هر مرحله کامل که در طول مدت پروفایل اجرا شده است (برای کارهای آموزشی؛ میتوانید اصطلاحات مربوط به مراحل را برای کارهای استنتاج نادیده بگیرید).
- نمودار خط سقف همچنین دارای ویژگیهای زیر است:
- شما میتوانید با استفاده از منوی کشویی ارائه شده، گزینههای infeed/outfeed را لحاظ یا از آن حذف کنید.
- با نگه داشتن ماوس روی هر یک از نقاط داده در نمودار، اطلاعات مرتبط دیگری مانند تعداد پهنای باند برای حافظههای مختلف، کل زمان صرف شده و غیره نمایش داده میشود.
- یک جدول آمار در سطح برنامه که جزئیات بیشتری برای هر نقطه داده ارائه میدهد، مانند حداکثر درصد استفاده از حافظه، حداکثر نرخ FLOP و غیره.

- نمودار خط سقف در سطح برنامه با نقاط داده مربوط به موارد زیر:
بخش ۲: تحلیل سطح عملیات:
- نمودار سقف دوم که اطلاعات جزئیتری ارائه میدهد، با نقاط دادهای که برای ۱۰۰۰ عملیات وقتگیر برتر در طول دوره پروفایلسازی رسم شدهاند:
- همانند نمودار خط سقف در سطح برنامه، با نگه داشتن ماوس روی هر نقطه داده، اطلاعات بیشتری در مورد آن عملیات نمایش داده میشود.
- شما میتوانید نقاط داده نشان داده شده روی نمودار را به روشهای زیر سفارشی کنید:
- شامل/غیر شامل کردن گزینههای ورودی و خروجی از طریق منوی کشویی.
- فیلتر کردن برای دستههای خاصی از عملیات.
- فیلتر کردن عملیاتهایی که به یک منبع خاص محدود شدهاند.
- فیلتر کردن برای یک عملیات با نام خاص.

- یک جدول آماری دوم، مشابه جدول سطح برنامه، که جزئیات بیشتری را برای هر نقطه داده ارائه میدهد.
- نمودار سقف دوم که اطلاعات جزئیتری ارائه میدهد، با نقاط دادهای که برای ۱۰۰۰ عملیات وقتگیر برتر در طول دوره پروفایلسازی رسم شدهاند:
در تمام بخشهای توضیح داده شده در بالا، حافظههای زیر پشتیبانی میشوند:
- برای TPUها: HBM، VMEM، CMEM (فقط TPU نسخه ۴).
- برای پردازندههای گرافیکی (GPU): حافظه HBM، حافظه L1/SharedMem.
- خطوط مربوطه در نمودار فقط در صورتی ظاهر میشوند که در طول مدت پروفایل، عملیاتی وجود داشته باشد که به آن حافظه محدود شده باشد. برای مثال، اگر همه عملیاتها یا HBM باشند یا به محاسبات محدود شده باشند، خطوط مربوط به VMEM یا CMEM را نخواهید دید.