الهندسة والآليات > التكنولوجيا

رقائقُ حاسوبيةٌ وثورةٌ في عالمِ البرمجةِ التفرعية.

استمع على ساوندكلاود 🎧

يحلمُ الجميعُ في أن يملكَ حاسوباً خارقاً يبلغُ من السرعةِ فوقَ ما يمكنُ تخيُلُه. توقفتْ عمليةُ التطورُ في هذا المجالِ وخاصةً الرقائقُ الحاسوبيةُ، خلالَ السنواتِ السابقةِ تمّ تحسينُ قدرةِ الرقائق الحاسوبية، وسرعةِ الحواسيبِ من خلالِ زيادةِ عددِ المعالجات. لكن هل تُعتبرُ هذه الطريقةُ فعّالة إلى ما لانهاية في زيادةِ عددِ المعالجات؟

نظرياً، إن أي برنامجٍ على آلةٍ تحتوي على 64 نواة، سيتمّ تنفيذه بشكلٍ أسرع بـ 64 مرة فيما لو تمّ تنفيذه على آلةٍ وحيدةِ النواة. ولكن هذا نادراً ما يعملُ بهذه الطريقة. فأغلب البرامجِ تعملُ بشكلٍ متسلسلٍ حيث تقوم بتجزئته إلى مراحل، ومن ثم العمل بشكلٍ متوازٍ أو تفرعي وهذا ما يسبب الكثير من التعقيدات.

ذكرت مجلة مايكرو في المعهد الهندسي الإلكتروني والكهربائي في عددِها الصادرِ في أيار/حزيران، بأنّ فريقاً من الباحثين من مختبرِ الذكاءِ الصنعي وعلوم الحاسوب في معهد ماساتشوستس للتكنولوجيا، تمكن من إيجادِ تصميمٍ لرقائق جديدة أطلقوا عليها اسم السرب (Swarm) لا تجعل من البرامج التفرعية تعمل بكفاءة أعلى وحسب، وإنما أيضاً يتم كتابتها بشكل أسهل.

قامَ الباحثون بمقارنةِ رقائق السرب هذه (Swarm) من خلال 6 خوارزميات شائعة الاستخدام مع أفضل الأنواع الموجودة من الرقائق التفرعية، والتي تمت هندستها بشكلٍ منفردٍ من قبل مطورين برمجيين ماهرين. حيث أثبتت إصدارات السرب (Swarm) بأنها أسرع من ثلاث إلى ثمانية عشرة مرة، بالإضافة إلى أنها تحتاجُ فقط إلى عُشْر البرمجيات (Code) أو حتى أقل. وفي أحد الحالات، حققت (Swarm) زيادةً في السرعةِ تقدر بـ 75 ضعف على برنامج فشل علماء الحاسوب حتى يومنا هذا أن يتم تشغيلها بشكلٍ تفرعي.

يقول (Daniel Sanchez) وهو بروفيسور مساعدٌ في قسمِ الهندسةِ الإلكترونيةِ، وعلوم الحاسوب في معهدِ ماساتشوستس ويقود هذا المشروع: "تعدّ الأنظمةُ متعددةُ النوى صعبةَ البرمجة". ويكمل قائلاً: "حيث يجبُ تقسيمُ العملِ إلى مهام واضحة، ومن ثمّ القيامُ بإدخالِ التزامنِ بينها من حيث وصولها الى البيانات المشتركة. وما تقوم به هذه الهندسةُ بشكلٍ أساسيّ هو إزالةُ كلّ أنواعِ التزامنِ الواضح، وذلك لصنعِ برنامجٍ تَفرعي أكثر سهولة. ولكن يوجدُ مجموعةٌ صعبةٌ من التطبيقات قاومت عمليةَ البرمجةِ التفرعيةِ لسنوات، وهو ما تمّ التركيزُ عليه في ورقةِ البحث هذه".

تشملُ معظمُ هذه التطبيقات استكشافَ ما يطلق عليه علماءُ الحاسوبِ بالرسوم البيانية (Graphs). حيثُ يحتوي الرسمُ البياني على عقد تُصوَّر عادة على شكل دوائر وروابط، أو حواف تُصوَّر عادة على شكل قطعة مستقيمة تصل بين العقد. كثيراً ما ترتبطُ الحواف بأرقامٍ تُسمى أوزان (Weights) والتي قد تُمثل قوة الارتباط بين نقاط البيانات.

توجدُ الرسومُ البيانية في عددٍ كبيرٍ من مشاكلِ علومِ الحاسوب، ولكن يتمّ استخدامهما لتوصيفِ العلاقاتِ الجغرافية. في الحقيقة، تقوم أحدُ الخوارزميات المرجعية التي تم تقييمها من قبل الباحثين في المشروع على إيجاد الطريق الأسرع بين نقطتين.

من حيث المبدأ، تتمّ عمليةُ اكتشافِ الرسومِ البيانية على شكل متوازٍ. حيثُ تقوم النوى(Cores) المختلفة في نفسِ الوقتِ بتحليلِ المناطقِ المختلفة من الرسوم البيانية، أو إيجادِ طرقٌ مختلفةٍ في الرسوم البيانية. حيثُ تكمنُ المشكلةُ في معظم خوارزميات اكتشافِ الرسومِ البيانية بوجود مناطق كبيرة مجهولة، وغير متعلقة بالمشكلة المطروحة، أي عند قيام ال(Cores) بعملية البحث عن تلك المناطق فإن جهودها ستكون غير مثمرة.

وبالطبع تُعتبرُ عمليةُ التحليلِ غير المثمرِ للمناطق المجهولة عائقاً في خوارزميات اكتشاف الرسوم البيانية المتسلسلة، وليس فقط بالخوارزميات التفرعية. لذلك قامَ علماءُ الحاسوبِ بتطويرِ مجموعة تقنيات تطبيقية محددة لتحديدِ أولويات اكتشاف الرسوم البيانية. قد تبدأ هذه الخوارزمية باكتشاف الممرات التي لها حواف (Edges) بأوزان (Weights) منخفضةٍ على سبيل المثال. أو قد تبدأ باكتشاف العقد (Nodes) التي لها رقم منخفض من الحواف (Edges).

ما يميزُ السرب (Swarm) عن الرقائقِ المتعددة، هو ما يحويه من داراتٍ إضافيةٍ تعالجُ نوعَ الأولويات. حيثُ تقوم بمهام ذات طابع زمني حسب أولويتها، ويتم العملُ على المهام ذات الأولوية العليا بشكل تفرعي. حيث قد تُنْشئ المهمة ذات الأولوية العليا عدة مهام ذات أولوية منخفضة. وبالمقابل تقوم (Swarm) بترتيب المهام أوتوماتيكاً.

وقد تتعارضُ أحياناً المهامُ التي تعملُ على التوازي. فعلى سبيل المثال، قد يتمّ كتابة مهمة ذات أولويةٍ منخفضةٍ في موقع ذاكرة معين قبل أن يتمّ قراءةُ مهمة ذات أولوية عاليةٍ في نفسِ الموقع. ولكن معالجات السرب (Swarm) تقوم في مثل تلك الحالات إلى إعادة المهامِ ذات الأولوية المنخفضة إلى الوراء بشكلٍ تلقائي. وهذا ما يؤدي إلى الحفاظِ على التزامن في وصولِ كلّ نواة إلى نفسِ البيانات التي يجب على المبرمجين أن يَحسبوا حسابَها بشكلٍ مسبقٍ.

في الحقيقة، ومن وجهةِ نظرِ المبرمجين يُعتبرُ استخدامُ السرب (Swarm) سهلاً جداً، فعندَ الحاجةِ إلى تعريف إحدى الوظائف، يتطلبُ ذلك إضافةَ سطرٍ واحدٍ فقط من التعليمات (code)، والتي تحملُ معنى الوظيفة المعنية إلى تسلسل مهام السرب (Swarm). ويجبُ على المبرمجِ أن يحددَ الموزون – أي وزن الرابط (Edge Weight) وعدد الحواف -المستخدم من قبل البرنامج، وذلك لتحديدِ أولوية المهام، وقد يكونُ ذلك ضرورياً في جميع الأحوال. وغالباً ما يتطلبُ تأهيل الخوارزميات التسلسلية الموجودة مسبقاً وتحويلها إلى السرب (Swarm) إضافةَ بضعةِ أسطرٍ من التعليمات (Code).

تتركزُ صعوبةُ هذا العمل في صناعةِ الرقاقةِ بحد ذاتها، وهي التي قامَ بتصميمها كلاً من (Sanchez) بالتعاون مع (Mark Jeffrey) و(Suvinay Subramanian) وكلاهما خريجان من معهد (MIT) قسم الهندسة الإلكترونية وعلم الحاسوب، (Cong Yan) الحاصلة على درجة الماجستير، وهي عضو في المجموعة وتدرس الدكتوراه في جامعة واشنطن؛ و(Joel Emer) باحثة وتعمل في قسم الأبحاث في صناعة الرقائق (NVidia).

تملك رقاقة (Swarm) دارات إضافية؛ لتخزينِ وإدارةِ تسلسلُ المهام، وتملكُ أيضاً دارةً لتسجيلِ عناوين الذاكرة لجميعِ البيانات التي تستخدمها كل نواة. حيثُ تقومُ هذه الدارةُ بما يُسمى فلترة البرعم (Bloom Filter)، أي جمع البيانات في مكانٍ مخصصٍ ومحددٍ، ومن ثم القيام بالإجابة على الأسئلة بـنعم أو لا حسبَ محتوياتِ السؤال. وفي حالِ وجودِ عدة عناوين محملة إلى الفلتر، فذلك قد يؤدي أحياناً إلى إجابةٍ موجبة زائفة – أي يعطي إشارة بـ نعم ليدل أنه قد قامَ بتخزينِ العنوان – ولكنه لن يعطي أبداً نتيجةً سلبيةً زائفة.

تعتبرُ دارةُ فلترة البرعم واحدةً من الدارات التي تساعد السرب Swarm لتحديد التعارضِ في الوصول إلى الذاكرة. وقد كان الباحثون قادرون على برهنةِ أن الطابع الزمني يجعلُ إمكانيةَ فرضِ التزامنِ بين النوى أسهل. على سبيل المثال، تتمّ عنونة كلّ عنصرٍ من البيانات بطابعٍ زمني وفقاً لآخر مهمة تم تحديثها، ولذلك يمكن للمهام التي لها طابع زمني لاحق بقراءة تلك البيانات بدون مضايقة تحديد من يستخدم تلك البيانات أيضاً.

وأخيراً، تقوم جميع النوى بتسجيل الطوابع الزمنية للمهام ذاتِ الأهميةِ العليا، والتي لا تزال قيد التنفيذ. وفي حال كان الطابعُ الزمني لأحد النوى أقصر من مثيلاتها، فيمكن لها أن تقوم بكتابة النتائج على الذاكرة بدون أن يحدثَ أيّ تعارضٍ مع عمل النوى الأخرى.

في النهاية تخيل معنا أن تصل إلى سرعات غير محددة في جهازك أو كمبيوترك اللوحي، سننتظر ما ستصل إليه الدراسات في تطبيق هكذا نوع من الرقائق المستقبلية.

المصدر:

هنا