قدم فريق تطوير LLVM اقتراحًا يُسمى التجميع المتوازي متعدد الخيوط (MTPC) لتحسين ThinLTO. حاليًا، تعمل هذه التقنية على توازي الوحدات الكاملة، لكن الوحدات الكبيرة تُعالج بشكل تسلسلي، مما يُحدث اختناقات. يسعى MTPC إلى كسر هذا الحاجز من خلال تقسيم العمل على مستوى الدوال.
كيف يعمل التوازي داخل الوحدة في ThinLTO 🚀
يقدم MTPC القدرة على تقسيم وحدة كبيرة إلى وحدات أصغر قائمة على الدوال. يمكن تجميع وتحسين كل دالة في خيط مستقل، بشرط إدارة تبعيات البيانات والمراجع العامة بشكل صحيح. يتيح ذلك للمعالجات متعددة النوى العمل في وقت واحد داخل نفس الوحدة، مما يقلل وقت التجميع في المشاريع ذات الملفات المصدرية الكبيرة جدًا.
دراما الوحدات التي كانت تُعتبر منيعة 😅
حتى الآن، كانت الوحدات الكبيرة تتمتع بحياة هادئة: كان كل الكود يُجمّع بشكل تسلسلي، مثل طابور في السوبر ماركت. مع MTPC، ستضطر تلك الدوال الكسولة إلى العمل بالتوازي، كما لو أن مديرًا قال لهم إن القهوة نفدت. سيتمكن المطورون من توديع فترات الراحة تلك أثناء انتظار انتهاء المترجم، رغم أن بعض الوحدات قد تُضرب عن العمل بسبب نقص التزامن.