الدرس 30: نموذج Roofline
في الدرس السابق تعرّفنا على الكثافة الحسابية (FLOPs/بايت) وعرض النطاق (بايت/ثانية)، وميّزنا بين kernel من نوع memory-bound وآخر من نوع compute-bound. يأخذ نموذج roofline هذين المقياسين ويرسمهما على رسم بياني واحد يُظهر، بلمحة واحدة، الحدّ الأقصى للأداء. المحور الأفقي هو الكثافة الحسابية (FLOPs لكل ب
تخيّل رسمًا بيانيًا بسقف: على اليسار يرتفع السقف قُطريًا (عرض النطاق يحدّك)، وعلى اليمين يكون مسطّحًا (سرعة الحوسبة تحدّك). الزاوية التي يتحوّل عندها الخط القُطري إلى مسطّح هي نقطة الحافة. kernel يقع على يسار الزاوية عالق بسبب الذاكرة؛ وعلى يمينها — بسبب الحوسبة.
- نموذج roofline
- رسم بياني للأداء مقابل الكثافة الحسابية، بسقف مائل (عرض النطاق) على اليسار وسقف مسطّح (ذروة FLOPs) على اليمين، يُظهر الحدّ الأقصى للأداء.
- نقطة الحافة
- الكثافة التي يلتقي عندها السقف المائل بالسقف المسطّح: ذروة FLOPs مقسومة على عرض النطاق. على يسارها memory-bound، وعلى يمينها compute-bound.
- سقف عرض النطاق
- الجزء الأيسر المائل من roofline. تحته الأداء = عرض النطاق مضروبًا في الكثافة، لذا فإن kernels هناك من نوع memory-bound.
- سقف الحوسبة
- الجزء الأيمن المسطّح من roofline، عند ذروة FLOPs للعتاد. kernels تحته من نوع compute-bound ولا يمكنها تجاوز الحدّ الأقصى.