تلعب الحواسيب الفائقة دورًا محوريًا في دفع عجلة الابتكار في مختلف المجالات العلمية والتكنولوجية. هذه الأجهزة، التي تفوق الحواسيب التقليدية بآلاف المرات من حيث القوة والسرعة، تُستخدم لحل أعقد المشكلات التي تواجه البشرية. تمتاز الحواسيب الفائقة بقدرتها على إجراء كميات هائلة من العمليات الحسابية في وقت قياسي، ما يجعلها أداة أساسية في البحث العلمي، تطوير التقنيات، ومعالجة البيانات المعقدة.
بنية الحاسوب الفائق
تتكون الحواسيب الفائقة الحديثة من آلاف أو حتى ملايين وحدات المعالجة المركزية والذواكر المترابطة التي تعمل بالتوازي وتتعاون لحل المشكلات التي لا يمكن لمعالج واحد التعامل معها بكفاءة. قد تتساءل لماذا يتم بناء الحاسوب الفائق بهذه الطريقة بدلا من استخدام معالج واحد ذو سرعة عالية جدا وذاكرة واحدة ضخمة؟ حتى نفهم ذلك ، يتحتم علينا العودة بالزمن إلى الوراء والنظر إلى تطور المعالجات وسبب تصميمها بالطريقة التي هي عليها حاليا.
في الماضي، كانت المقارنة بين الحواسيب تعتمد بشكل رئيسي على تردد ساعة المعالج، الذي يُقاس بالغيغا هيرتز (GHz). كان من الملاحظ أن هذه الترددات تتضاعف بوتيرة سريعة بفضل قانون مور، الذي توقع زيادة مضاعفة في عدد الترانزستورات على الشريحة كل عامين. مع بداية الألفية الجديدة، واجهت ترددات المعالج قيودًا فيزيائية حالت دون زيادتها بشكل كبير، مما أدى إلى تحول جذري في تصميم هذه المعالجات. بدأ المصنعون حينها يضيفون إلى الشريحة الإلكترونية للمعالج الواحد عدة وحدات معالجة مركزية يدعى كل منها بـ”النواة” (Core) . تتشارك النوى ضمن الشريحة الواحدة بالذاكرة الرئيسية (RAM)، حيث يمكن لأي نواة قراءة وكتابة البيانات في هذه الذاكرة المشتركة. عدا عن ذلك، فإن كل نواة تعمل بشكل مستقل حيث لكل منها مجوعة خاصة بها من السجلات (Regsister) ووحدات التحكم (Control Unit) ووحدات الحساب والمنطق (ALU) بالإضافة إلى ذواكر تخزين مؤقتة (Cache) منفصلة.
من البديهي أن إضافة نوى جديدة إلى المعالج لايزيد من سرعة تنفيذ إي عملية على حدة ولكنه يسمح بتنفيذ عدة عمليات بنفس الوقت. أبسط طريقة لاستغلال قدرة المعالجات متعددة النوى هي عن طريق تشغيل برامج مختلفة على النوى المختلفة، وهو الأمر يقوم به نظام التشغيل على جهازك الشخصي أو هاتفك المحول بشكل تلقائي. ولكن ماذا لو أردنا استغلال هذه النوى لتسريع حل مشكلة معينة، أي أننا نريد تسريع عمل البرنامج واحد؟ لتحقيق ذلك فإن مطور البرنامج بحاجة إلى تقسيم المشكلة إلى أجزاء يمكن حلها على التوازي بحيث يتم حل كل جزء على إحدى النوى. حينئذ فإن زيادة عدد النوى يسمح بتقسيم المسألة إلى أجزاء أصغر ومن ثم إنجاز المهمة بشكل أسرع.
بناء على ماسبق ، يبدو للوهلة الأولى أن استخدام معالج بعدد أكبر وأكبر من النوى هو الحل الواضح لبناء حاسوب بقدرات حسابية أعلى. المشكلة تكمن في أن صناعة شريحة ألكترونية بعدد متزايد من النوى وبذاكرة رئيسية أكبر يواجه تحديات فيزيائية مشابهة للتحديات التي واجهت المصنعين في زيادة تردد المعالج. دفعت محدودية النوى في المعالج الواحد، مصممي الحواسيب الفائقة إلى توظيف عدد كبير من هذه المعالجات في تسريع الحسابات وحل المسائل. إلا أن حل مسألة ما بهذه الطريقة (أي باستخدام عدة معالجات) يتطلب نمطا من البرمجة يختلف عما سبق لأن هذه المعالجات هي شرائح الكترونية منفصلة لكل منها ذاكرة رئيسية خاصة بها وبالتالي لا يمكنها العمل على نفس البيانات بشكل مباشر كما هو الحال في عمل المعالج الواحد متعدد النوى. لذلك يتطلب الأمر شبكة حاسوبية سريعة تربط بين هذه المعالجات وتسمح لها بتبادل المعلومات، وهو الأمر الذي يتم عن طريق إرسال رسائل فيما بينها بطريقة مشابه لتبادل المعلومات بين حاسوبك الشخصي والمخدمات على الانترنت. تعرف هذه الاستراتيجية المعمارية في بناء الحواسيب الفائقة بالحوسبة العنقودية (Cluster Computing).
العنقود الحسابي (Computer Cluster) هو عبارة مجموعة من الوحدات الأساسية المترابطة والتي تدعى بالعقد الحسابية (Compute Node). تشكل كل عقدة الحسابية وحدة متكاملة تتألف من معالج واحد متعدد النوى أو بضع معالجات بالإضافة إلى ذاكرة رئيسية تتصل معها بشكل مباشر. يمكن للعقدة أيضا أن تمتلك مسرعات حسابية مثل وحدات معالجة الرسوميات (Graphics Processing Unit / GPU) أو وحدات معالجة المُوتِّرات (Tensor Processing Unit / TPU) والتي تساهم في تسريع إجراء بعض العمليات الحسابية المكثفة.
يتم ربط العقد الحسابية فيما بينها باستخدام شبكة حاسوبية محلية، ذي إنتاجية عالية (High Througput) وفترة تأخير منخفضة (Low Latency) كشبكة إيثرنت (Ethernet) أو إنفيني باند (Infiniband). يضاف إلى ذلك أنظمة تخزين ضخمة وسريعة مصممة للتعامل مع كميات هائلة من البيانات، تشمل أقراص SSD وHDD، ومزودة بنظام ملفات موزع عالي الأداء كـ Lustre و GPFS.
تمتاز هذه البنية الموزعة في بناء الحواسيب الفائقة بسهولة قابليتها للتوسع (Scalability) حيث تسمح بإضافة المزيد من العقد لتوسيع نطاق القدرة الحاسوبية دون الحاجة إلى عمليات إعادة تصميم أو استبدال كبيرة. كذلك تمتاز بقدرتها على تحمل الأعطال (Fault Tolerance) حيث تسمح للنظام بالاستمرار في العمل حتى في حالة فشل بعض العقد الفردية. كما أنها تسمح باستغلال أفضل للموارد حيث يمكن تخصيص (Allocation) العقد ديناميكيا بناءً على أولوية المهام ومتطلباتها.
برمجة الحواسيب الفائقة
يتطلب تنفيذ الحسابات على الحواسيب الفائقة، برمجة حلولها باستخدام خوارزميات تفرعية تسمح بتقسيم المشكلة إلى أجزاء أصغر يمكن حلها على التوازي. هذه التقسيم يمكن أن يحدث على عدة مستويات تتناسب مع بنية الحاسوب الفائق. فمثلا يمكن تقسيم المسألة أو البيانات مبدئيا إلى أجزاء كبيرة وحل كل جزء باستخدام عملية (Process) يتم تشغيها على عقدة حسابية. تبادل المعلومات برمجيا بين هذه العمليات، والتي تكون فيها الذاكرة موزعة على عدة عقد، يتم باستخدام أدوات برمجية مثل واجهة تمرير الرسائل (Message Passing Interface – MPI). يمكن بعد ذلك لكل Process أن تستغل المعالجات متعددة النوى الموجدة في العقدة عن طريق تقسيم عملها إلى أجزاء أصغر يتم تنفيذ كل منها باستخدام تشعب (Thread) يعمل على نواة واحدة. من الأدوات البرمجية الشائعة لتحقيق ذلك هي أوبن أم بي (OpenMP) والتي تسمح بسهولة بتوزيع عمل البرامج ضمن بيئة ذو ذاكرة تشاركية عن طريق مثلا تقسيم حلقات البرنامج مثل “For Loops” بين النوى المتاحة. بالإضافة إلى ماسبق، يمكن لكل Process استغلال المسرعات الحسابية في حال وجودها عن طريق تفويضها بإجراء العمليات الحسابية المكثفة كضرب المصفوفات والتي صممت هذه المسرعات لتنفيذها بكفاءة. يتم ذلك باستخدام مكتبات خاصة ولغات برمجة مثل كودا (CUDA) و أوبن سي أل (OpenCL)، ويتطلب الأمر تنسيقا خاصا بين عمل هذه المسرعات ووحدات المعالجة المركزية من أجل تبادل البيانات فيما بينها.
كيفية استخدام الحاسوب الفائق
بالإضافة إلى العقد الحسابية سابقة الذكر، يمتلك الحاسوب الفائق عقدة ولوج (Login Node) أو أكثر. يمكن لمستخدمي الحاسوب الفائق الاتصال بهذه العقدة عن بعد باستخدام بروتوكول SSH وتسجيل الدخول مما يسمح للمستخدم بالتفاعل مع الحاسوب الفائق. تستخدم معظم الحواسيب الفائقة نظام تشغيل لينوكس ويكون لك مستخدم حسابه الخاص ومجلد خاص به، بالإضافة إلى بعض المجلدات التشاركية. بعد تسجيل الدخول إلى عقدة الولوج، يقوم المستخدم بتنفيذ البرامج على العقد الحسابية بواسطة نظام دفعات (Batch System) يسمح بإدارة فعالة للموارد الحسابية. على عكس الحواسيب الشخصية أو الخوادم الصغيرة الحجم، حيث يتم تنفيذ المهام غالبا بشكل تفاعلي، تتعامل الحواسيب العملاقة مع آلاف المهام في وقت واحد، وغالباً ما يتم إرسالها من قبل مستخدمين مختلفين. هذا يستلزم وجود نظام قوي لتنظيم المهام وترتيب أولوياتها وتنفيذها دون تعارض. نظام الدُفعات في الحاسوب العملاق هو إطار عمل برمجي يقوم بجدولة المهام التي يرسلها المستخدم ووضعها في قائمة الانتظار وإدارتها. وهو يضمن الاستخدام الأمثل للموارد، ويوازن بين متطلبات المستخدم وقدرات النظام. تتضمن أنظمة الدفعات الشائعة Slurm و PBS، حيث توفر هذه الأنظمة الوظائف التالية:
- تخصيص الموارد: تحديد عدد العقد الحسابية ونوى المعالجة والذاكرة ومساحة التخزين المطلوبة للمهمة بالإضافة إلى المسرعات في حال وجودها، وتخصيص هذه الموارد بشكل مناسب.
- جدولة المهام: تنظيم المهام في قائمة انتظار استنادًا إلى الأولوية، والتي قد تعتمد على عوامل مثل متطلبات الموارد وتقديرات وقت التشغيل والحاجة الملحة التي يحددها المستخدم.
- معالجة الأخطاء: إدارة حالات الفشل، مثل إعادة جدولة مهمة في حالة تعطل عقدة أو إخطار المستخدمين بالمشكلات.
- مراقبة الاستخدام: تتبع استخدام الموارد لضمان العدالة بين المستخدمين وتوفير سجلات مفصلة للفوترة أو استكشاف الأخطاء وإصلاحها.
نظرة أعمق: تنفيذ برنامج على الحاسوب الفائق خطوة بخطوة
يتضمن إرسال مهمة إلى الحاسوب الفائق صياغة برنامج نصي للمهمة (Job Script) والتفاعل مع نظام الدفعات. فيما يلي سير عمل نموذجي:
1. إنشاء برنامج نصي للمهمة:
البرنامج النصي للمهمة هو ملف نصي يحتوي على تعليمات للنظام الدفعي. وهو يحدد الموارد المطلوبة، وإعدادات البيئة، والأوامر المطلوب تنفيذها. فيما يلي مثال على برنامج نصي بسيط من Slurm:
#!/bin/bash
#SBATCH --job-name=my_simulation
#SBATCH --output=output.log
#SBATCH --error=error.log
#SBATCH --ntasks=64
#SBATCH --time=12:00:00
#SBATCH --partition=compute
module load my_software
srun ./my_simulation_executable input_file.dat
تتضمن الأقسام الرئيسية للبرنامج النصي ما يلي:
- اسم المهمة (سطر 2): يساعد المستخدم لاحقا في تحديد المهمة ضمن قائمة الانتظار.
- سجلات الإخراج/الأخطاء (سطر 3-4): تحدد الملفات التي سيتم كتابة المخرجات والأخطاء فيها.
- طلبات الموارد (سطر 5-7): تحدد عدد المهام والحد الزمني، بالإضافة إلى ما يسمى بالتقسيم (Partition) وهو قائمة انتظار محددة أو مجموعة موارد محددة سيتم تنفيذ البرنامج ضمنها.
- إعدادات البيئة (سطر 9): تحميل البرمجيات الضرورية أو تعيين متغيرات البيئة.
- أمر التنفيذ (سطر 10): تشغيل التطبيق أو البرنامج الحسابي.
2. إرسال البرنامج النصي:
استخدم واجهة الأوامر السطرية (Command Line Interfece) للنظام الدفعي لإرسال المهمة. بالنسبة لـ Slurm، الأمر هو كالتالي:
sbatch my_job_script.sh
بعد الإرسال، يقوم النظام بتعيين معرف مهمة (Job ID) فريد، والذي يمكن استخدامه لمراقبة حالة المهمة.
3. مراقبة حالة المهمة:
يمكن للمستخدمين التحقق من حالة مهامهم باستخدام أوامر مثل squeue في نظام Slurm والذي يقوم بعرض المهام المدرجة في قائمة الانتظار والمهام قيد التشغيل. فيما يلي مثال لمخرجات هذا الأمر:
JOBID PARTITION NAME USER STATE TIME NODES NODELIST
12345 compute my_simulation alice RUNNING 10:23:12 4 node[01-04]
12346 compute data_analysis bob PENDING 0:00:00 2 -
4. استرجاع النتائج:
بمجرد اكتمال المهمة، يمكن مراجعة المخرجات وسجلات الأخطاء المحددة في البرنامج النصي للمهمة. يتم تخزين البيانات الإضافية التي تم إنشاؤها من قبل المهمة في مجلدات محددة من قبل المستخدم.
أكبر الحواسيب الفائقة عالميا وعربيا
يختلف كل حاسوب فائق عن الأخر بعدد المعالجات وعدد نوى كل معالج وسرعة تردد كل منها بالإضافة إلى إمتلاكها مسرعات حسابية كالـ GPUs من عدمه وموصفات هذه المسرعات. لذلك يتم عادة مقارنة الحواسيب الفائقة من خلال معايير أكثر شمولا تقيس أدائها في إنجاز المهام الحسابية.
من إهم هذه المعايير هو عدد عمليات الفاصلة العائمة التي يمكنها تنفيذه في الثانية الواحدة فيما يعرف بالـ”فلوبس” (FLOPs – Floating point operations per second). تستخدم الفاصلة العائمة لتمثيل الأعداد الحقيقية والتي تشكل الجزء الرئيسي من البيانات المستخدمة في الحسابات العلمية ونماذج الذكاء الصنعي. يتطلب تنفيذ عمليات الفاصلة العائمة زمنا أطول (عدد دورات معالجة أكبر) من العمليات الحسابية الأخرى كمعالجة الأعداد الصحيحة وغيرها لذلك يتم التركيز عليها في قياس أداء الحواسيب الفائقة. يتم التعبير عن الفلوبس عادة بوحدات من مضاعفات الألف مثل غيغافلوبس (GigaFlops) والذي يمثل مليار (109) عملية في الثانية الواحدة. فيما يلي جدول بالوحدات المستخدمة الأكثر شيوعا:
واحدة القياس | عدد العمليات في الثانية |
---|---|
غيغا فلوبس GigaFlops | 109 |
تيرا فلوبس TeraFlops | 1012 |
بيتا فلوبس PetaFlops | 1015 |
اكسا فلوبس ExaFlops | 1018 |
يقوم موقع Top500 بنشر قائمة بأسرع الحواسيب الفائقة في العالم بشكل دوري ويتربع حاليا (في آخر تحديث في شهر تشرين الثاني/نوفمبر 2024) على رأس القائمة حاسوب الكابتن (El Captin) في الولايات المتحدة الأمريكية بسرعة نظرية تتجاوز 2700 بيتا فلوبس. للمقارنة فإن سرعة معالج أبل إم 1 (Apple M1) ، والذي يحتوي وحدة رسوميات مدمجة، تصل فقط إلى 2.6 تيرا فلوبس [المصدر]. أي أن هذا الكمبيوتر الفائق أسرع من الحاسوب الشخصي بحوالي مليون ضعف! تعود هذه القوة الهائلة لحاسوب الكابتن إلى أمتلاكه أكثر من 11 مليون نواة للمعالجة. بالمقابل فإن أسرع حاسوب فائق في أوروبا هو HPC6 في إيطاليا والذي يحتل المركز الخامس عالميا بسرعة نظرية 600 بيتا فلوبس وعدد نوى يتجاوز الثلاثة ملايين.
في العالم العربي، تمتلك الإمارات العربية المتحدة حاسوب SuperPod بسرعة نظرية تتجاوز 87 بيتا فلوبس وأكثر من 185 ألف نواة. يحتل بذلك هذا الحاسوب المركز 38 عالميا والمركز الأول عربيا .يليه عربيا، حاسوب شاهين 3 في السعودية بسرعة تقارب الـ 40 بيتا فلوبس و حوالي الـ 877 نواة معالجة. فيما يلي قائمة بأسرع الحواسيب الفائقة في العالم العربي حتى شهر تشرين الثاني/نوفمبر 2024:
الترتيب العالمي | الاسم | البلد | السرعة النظرية (Rpeak)* | السرعة العملية (Rmax)* | عدد النوى |
---|---|---|---|---|---|
25 | SuperPod | الإمارات | 87.27 | 55.81 | 185,712 |
38 | شاهين 3 | السعودية | 39.61 | 35.66 | 877,824 |
56 | دمام 7 | السعودية | 55.42 | 22.40 | 672,520 |
67 | غوار 1 | السعودية | 22.86 | 19.26 | 714,240 |
137 | طويق 1 | السعودية | 14.17 | 8.49 | 61,568 |
158 | Artemis | الإمارات | 9.49 | 7.26 | 107,568 |
207 | Dhabi | الإمارات | 5.84 | 5.09 | 39,680 |
225 | عنيزة 4 | السعودية | 10.95 | 4.42 | 23,680 |
292 | عنيزة 2 | السعودية | 6.84 | 3.49 | 85,560 |
495 | مكمن 3 | السعودية | 3.58 | 2.32 | 53,300 |
* تمثل السرعة النظرية أعلى سرعة يمكن نظريا تحقيقها اعتماد على المواصفات المحددة من قبل المُصنِّع، بينما تمثل السرعة العملية أعلى سرعة تم قياسها فعليا باستخدام معيار LINPACK. جميع السرعات مقاسة بواحدة البتا فلوبس PetaFlops.
دور الحواسيب الفائقة في رسم مستقبل العلوم والتكنولوجيا
كانت الحواسيب الفائقة ومازالت في طليعة التقدم التكنولوجي والعلمي، حيث تستخدم لحل مشكلات كانت تعتبر مستعصية سابقًا. تُمكِّن هذه الأنظمة عالية الأداء الباحثين والصناعات من محاكاة وتحليل الظواهر المعقدة عبر مختلف المجالات، ابتداء من تدريب نماذج الذكاء الاصطناعي المتقدمة واكتشاف الأدوية وعلم الجينات وعلم المواد، وانتهاء بعلوم الفيزياء الفلكية والكمومية وعلم الزلازل والتنبؤ بالطقس.
فمثلا تلعب الحواسيب الفائقة دورًا محوريًا في تطوير الذكاء الاصطناعي (AI)، حيث توفر القدرة الحسابية الهائلة المطلوبة لتدريب واستخدام نماذج الذكاء الاصطناعي المعقدة. تتطلب أنظمة الذكاء الاصطناعي الحديثة، وخاصةً شبكات التعلم العميق (Deep Learning Networks)، معالجة مجموعات بيانات ضخمة، وغالباً ما تتضمن مليارات المعاملات (Parameters). تتفوق الحواسيب الفائقة في هذا المجال، مما يقلل بشكل كبير من الوقت اللازم لتدريب النماذج. بالإضافة إلى التدريب، تسهل الحوسبة الفائقة توظيف الذكاء الاصطناعي في تطبيقات العالم الحقيقي من خلال تمكين استخدامها بشكل سريع و على نطاق واسع.
كذلك لا غنى عن الحوسبة عالية الأداء في تعزيز دقة وسرعة التنبؤات بالطقس، وهو مجال يتطلب محاكاة عمليات الغلاف الجوي المعقدة للغاية. تدمج نماذج الطقس الحديثة كميات هائلة من البيانات من الأقمار الصناعية وأنظمة الرادار وأجهزة الاستشعار الأرضية للتنبؤ بكل شيء بدءاً من العواصف المحلية إلى أنماط المناخ العالمي. تقوم الحواسيب الفائقة بمعالجة هذه البيانات بسرعات استثنائية وتشغيل نماذج رياضية معقدة تحاكي ديناميكيات الغلاف الجوي والمحيطات والأسطح الأرضية. وبفضل قدرتها الحسابية التي لا مثيل لها، يمكن للحواسيب الفائقة توليد تنبؤات عالية الدقة للظواهر الجوية.
دخلت الحوسبة عالية الأداء مؤخرا حقبة الاكساسكيل (Exascale) أي قدرتها على إجراء كوينتيليون (1018) عملية حسابية في الثانية – أو مايعرف بالإكسافلوبس. وفي المستقبل، يتوقع أن تصبح هذه الحواسيب أكثر قوة وكفاءة، مدفوعة بالتقدم في كفاءة استغلاها للطاقة (Energy Efficiency) وقابليتها للتوسع (Scalability)، بالإضافة إلى توظيف تقنيات حديثة ناشئة مثل الحوسبة الكمومية (Quantum Computing).
في المرة القادمة التي تستخدم فيها تطبيقاً للتنبوء بالطقس أو أداة للذكاء الصنعي مثل ChatGPT ، فكّر في الآلات الاستثنائية التي تجعل كل ذلك ممكناً – وتخيل ما يمكن أن تفعله بعد ذلك. ما هي الإنجازات التي ستحققها الحواسيب الفائقة في العقد القادم، وكيف ستشكل العالم الذي تعيش فيه؟
شكرا على الشرح الواضح