"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > آلة جافا سكريبت الموازية

آلة جافا سكريبت الموازية

تم النشر بتاريخ 2024-11-06
تصفح:135

المؤلف: فلاداس سوليس، PE Prodata، كلايبيدا، ليتوانيا

18 مايو 2024

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

في الآونة الأخيرة، نواجه تحولًا جديدًا في فلسفة الحوسبة، بسبب تقدم بنية الأجهزة الجديدة والأداء الأفضل. سوف تصبح البنية متعددة النواة التكنولوجيا السائدة في المستقبل القريب.

ماذا يمكننا أن نفعل للاستفادة من ذلك؟ تتناول هذه الورقة أحد الحلول الممكنة التي يمكننا الحصول عليها.

يقدم نموذج الحوسبة المقترح (والذي يسمى "نموذج تدفق الكائن") أيضًا بعض الإجابات على الأسئلة المطروحة في النموذج الورقي المنشور المعروف بيركلي [1]. فيما يلي قائمة قصيرة من المزايا التي يمكن الوصول إليها باستخدام هذا النموذج:

· عملية برمجة بسيطة ومزيد من الصيانة

· تكامل وترحيل OPU الطبيعي (CPU) عندما يمكن إضافة وحدات معالجة الكائنات (OPUs) أو إزالتها بسرعة

· موازنة التحميل التلقائية

· لا حاجة للمزامنة بين أجزاء المهمة

· قفل متبادل قليل أو معدوم على مستوى النظام

يتم تنفيذ كل هذه الخصائص في Parallel JavaScript Machine (PJM)، الموضحة أدناه في هذا المستند. قد يُنظر إلى PJM على أنه نظام تشغيل صغير يتحكم في مهام JavaScript المتعددة ومستخدمين متعددين ووحدات تحكم أمامية متعددة.

مقدمة
الهدف الرئيسي لنظام PJM (OS) هو تبسيط البرمجة المتوازية من خلال تقديم تعليمات خاصة (تلميحات) يتم تمثيلها بتعليقات مصممة خصيصًا في شكل //#pragma .

تستخدم آلة JavaScript الموازية NodeJS، ويتم تنفيذها كخادم ويب للواجهة الأمامية، بالإضافة إلى خادم لوحدات OPU التي تقوم بالفعل بالتنفيذ المتوازي للتعليمات البرمجية. وحدات OPU هي عملاء شبكة JavaScript صغيرة يتم تنفيذها في NodeJS أيضًا. قد يكون هناك العديد منها حسب الضرورة، متصلة بخادم الجهاز المتوازي الرئيسي إما محليًا أو عن بعد. يعتمد الأداء العام للمعالجة المتوازية بقوة على عدد وحدات OPU المتصلة.

يمكن فهم جميع أجزاء النظام، التي تعمل معًا، على أنها نظام تشغيل صغير يقوم بتشغيل مهام JavaScript قيد التشغيل وتحليلها، ويضع أجزاءها في قائمة انتظار تنفيذ النظام ويوفر نوعًا من المهام المتعددة التعاونية بين الأجزاء المحددة. تتم طباعة نتائج الحساب على وحدة تحكم عميل الويب عن طريق توصيل مخرجات console.log من وحدات OPU عبر الخادم الرئيسي. يتم تعيين كل وحدة OPU لوحدة المعالجة المركزية (CPU) الخاصة بها (المحلية أو البعيدة) وتعمل من خلال برنامج جدولة بسيط (سيتم شرحه لاحقًا). يتم تحقيق ذلك عن طريق استخدام وحدة عقدة مدير العمليات PM2.

"على الرغم من أن التوافق مع الثنائيات القديمة وبرامج C يعد ذا قيمة بالنسبة للصناعة، ويحاول بعض الباحثين مساعدة خطط المنتجات متعددة النواة على النجاح، إلا أننا كنا نفكر في أفكار أكثر جرأة. هدفنا هو إنشاء آلاف المعالجات..."[1] ليس ضروريًا على جهاز كمبيوتر فعلي واحد، ولكن عبر الشبكة، وكل ذلك يتم تنظيمه بواسطة وحدة الخادم المركزية. من وجهة نظر النظام، تعمل جميع وحدات المعالجة المركزية/وحدات OPU عبر بروتوكول مقبس الشبكة الداخلي الذي لا يميز بين وحدات المعالجة المركزية المحلية والبعيدة. الخادم (PJM) والعملاء (OPUs) — جميعهم مكتوبون بلغة JavaScript، لذا فهو غير متوافق مع ثنائيات لغة C [حتى الآن].

يجب ألا تستخدم جميع البرامج المتوازية، التي تعمل في PJM، امتدادات JavaScript ES6 (يجب أن تستخدم ES5). من المهم أن نذكر هنا أن الامتدادات مثل الفئات، ووظائف السهم، والدعوات والثوابت، وعلى وجه الخصوص، async/await لا يمكن موازنتها، مما يتطلب بحثًا داخليًا أكثر شمولاً في JavaScript. وهذا هو سبب تشغيل PJM على NodeJS V8.2.1. جميع وحدات العقد مقفلة على هذا الإصدار لتحسين الأداء ووضوح المفاهيم.

يتم التحكم في PJM وتشغيل المهام باستخدام وحدة تحكم الويب الموجودة في http://parallel-js.net:8888 . وهذه هي الطريقة التي تبدو بها عادةً:

Parallel JavaScript Machine

تتم كتابة وحدة تحكم الويب باستخدام إطار عمل ExtJS ويتم توصيلها بخادم PJM باستخدام وحدة express.js HTTP NodeJS. يتم توصيل جزء آخر من وحدة تحكم الويب (يسمى وحدة التحكم والرسائل) باستخدام WebSockets. هذا هو المكان الذي تأتي فيه مخرجات البرامج ورسائل النظام في الوقت الفعلي. من المهم معرفة أنه لا يتم تنفيذ أي حسابات حقيقية في وحدة تحكم الويب - يتم إجراء جميع الحسابات على خادم PJM ووحدات OPU.

إذا كنت مهتمًا بهذا المشروع، فيرجى الاطلاع على المقالة الكاملة هنا.

الكود المصدري لهذا المشروع موجود هنا.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/vsaulis/parallel-javascript-machine-551k?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3