Quantcast
Channel: وادي التقنية - أخبار تقنية المعلومات أولا بأول
Viewing all 580 articles
Browse latest View live

تعلم كريتا باحتراف : مفاهيم أساسية حول تطبيق الرسم Krita

$
0
0
تعلم كريتا باحتراف : مفاهيم أساسية حول تطبيق الرسم Krita

Krita.jpg

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

الرسومات الشعاعيَّة والنقطيَّة

يُستخدم تطبيق Krita للرسومات النقطية Raster بشكل أساسيٍّ ويمكن أيضًا استخدامه لتعديل الرسومات الشعاعية Vector. أظنُّ أنَّ إشارة استفهام بدت على وجهك مطالبة بتعريف نوعي الرسومات التي ذُكرت آنفًا، إن كنت بالطبع مستجدًا في عالم الرسومات، لذا سنشرح هذين المفهومين.

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

Pixels-brushstroke.png
الرسوميات الشعاعية، بالموازنة مع الرسوميات النقطية، لا تعتمد على النقط وإنما تعتمد على التعبيرات الرياضية (المعادلات). عند رسم مستطيل مثلًا على طبقة شعاعية في تطبيق Krita فأنت حقيقةً ترسم مسارًا يمر عبر مجموعة نقط تدعى بالعُقد، وتكون هذه العقد جزءًا من محور إحداثيات (x,y). عند تكبير تلك الصورة أو تحريكها فإنَّ الحاسب يعيد حساب المعادلات تلك ثمَّ يرسم المسار "الصورة" من جديد ويُظهرها لك، ويمكنك حينها تكبير الصورة إلى حد لا نهائي دون انخفاض الدقة. يَعتبر تطبيق Krita جميع أنواع الطبقات نقطية باستثناء نوع الطبقة الشعاعية.

مفهوم الصورة والمعاينة والنافذة

يوجد ثلاثة أنواع رئيسة لمساحة العمل عند استخدام تطبيق الرسم وهي:

الصورة

وهي الأهم وتتكون عند فتح صورة ما أو إنشاء صورة جديدة. يتيح لك Krita إنشاء نسخة جديدة عند فتح صورة من قائمة "ملف" file أو حفظها بملف جديد. تحتوي الصورة عند حفظها على الطبقات والألوان والحجم والبيانات الوصفية كاسم صاحب الصورة والتاريخ والدقة DPI (عدد النقاط بالبوصة). يمكن فتح عدَّة صور بآنٍ واحدٍ والتبديل بينها عبر قائمة "نافذة" window. تستطيع أيضًا حفظ الملف الموجود على القرص الصلب عند فتحه بطرائق متعددة وهي:

  • جديد new: إنشاء صورة جديدة، وعند ضغط زر "حفظ" save سيُنشئ التطبيق ملفًا جديدًا يحفظه على القرص الصلب.

  • فتح open: إنشاء نسخة جديدة داخل البرنامج من الملف الذي فُتح، وعند ضغط زر "حفظ" فإن التطبيق سيطبق التعديلات على الملف الأصلي.

  • فتح صورة حالية كملف جديد open existing image as new: شبيه بالخيار السابق ولكن عند ضغط زر "حفظ" سيُطلب منك تحديد موقع لحفظ الملف دون التعديل على الملف الأصلي.

  • إنشاء نسخة من الصورة الحالية create copy from current image: شبيه بالخيار السابق ولكن مع الصور التي اخترتها مسبقًا.

  • الحفظ المتزايد save incremental: يسمح هذا الخيار بإنشاء نسخة جديدة للملف كلَّما عدَّلت عليه وكل نسخة تحمل رقمًا جديدًا، ويساعد هذا الخيار على حفظ النُسخ القديمة من الملف.

توفر الخيارات السابقة تنقلًا سريعًا بين الملفات وأخذ نسخ احتياطية، كما يوجد خيار للحفظ التلقائي auto-save واستعادة الملفات التالفة.

المعاينة

بقصد بالمعاينة view أنها نافذة تُظهر الصورة الحالية، ويتيح لك Krita عرض الصور عرضًا متعددًا يمكِّنك من التلاعب بها عبر التكبير والتصغير والتدوير وعكس الصورة وتغيير الألوان ...إلخ دون التعديل على الصورة نفسها. الطريقة المعاينة هذه مفيدةٌ جدًا خصوصًا للرسامين لأنها تمكنهم من تحليل الأخطاء. يمكن الضغط على زر "M" لمحاذاة معاينتين للصورة.

800px-Krita_multiple_views.png

يمكن استخدام العرض المتعدِّد عبر الخيارWindow → New View → Image Name، وتستطيع التنقل بينهم من القائمة "Window" أو عبر الاختصار Ctrl + Tab، ويمكن أيضًا وضع جميع المعاينات للصورة في مكانٍ واحدٍ بتفعيل الخيار Subwindow من الإعدادات عبر الخيارات Window → Tile.

لوحة التحكم Docker

إنَّ لوحة التحكم Dockers هي نافذة فرعية تتوضَّع في واجهة التطبيق Krita، وتحوي أدوات مختلفة مثل اختيار الألوان والطبقات وأدوات لخيارات أخرى كما موضح بالصورة.
800px-Dockers.png

تتواجد جميع المعاينات والنوافذ الفرعية Dockers في نافذة واحدة.

النافذة

يُفترض أنَّ يكون مصطلح نافذة Window معلومًا لديك خصوصًا إن كنت من مستخدمي نظام التشغيل ويندوز. يوفر تطبيق Krita إمكانيَّة فتح نوافذ متعددة من خيار Window → New window حيث تُفيدك هذه الخاصيَّة عند تعدُّد أجهزة العرض الموصولة بالحاسوب، وتوضِّح الصورة التالية مثالًا عن تعدد النوافذ.

800px-Multi-window.png

لوحة الرسم

ستلاحظ عند فتح ملفٍ جديدٍ من قائمة "ملف" وجود مساحة مستطيلة بيضاء تدعى "لوحة الرسم" وهي موضحة بالصورة التالية.

450px-Canvas-krita.png
وإذا أردت حفظ الصورة بصيغة "jpg" أو "png" ...إلخ أو طباعتها فإن المحتويات التي تظهر هي تلك الموجودة داخل لوحة الرسم، ولن يظهر أيُّ محتوىً خارج حدودها ولكنه يبقى محفوظًا ضمن الملف في الطبقات.

الطبقات

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

  • طبقات الرسم Paint layers: تُعرف هذه الطبقة أيضًا بالطبقة النقطية وهي أكثر أنواع الطبقات استخدامًا.

  • الطبقات الشعاعية Vector layers: يُستخدم هذا النوع مع الرسوميات الشعاعية.

  • مجموعة طبقات Group layers: يمكن عبر هذه الطبقات إنشاء مجموعة من الطبقات الأخرى بسحبها وإفلاتها ضمن طبقة تجميعية.

  • الطبقات المنسوخة Clone layers: إذا حدَّدت طبقة ما ثمَّ اخترت إنشاء طبقة جديدة من هذا النوع تنشأ طبقة طبق الأصل عن الطبقة المُحدَّدة، ولا يمكن التعديل على هذا النوع من الطبقات ولكن تُعدَّل تلقائيًّا عند الرسم على الطبقة الأصلية.

  • طبقات الملفات File layers: ترتبط هذه الطبقات مع صور خارجية وتُعدَّل تلقائيًّا عند تعديل الصور الأصلية تلك، وتُستخدم مع الشعارات والصور التي تتغير كثيرًا.

  • طبقات ملءFill layers: تكون هذه الطبقات مليئة بألوان أو أشكال محددة.

  • طبقات المرشحاتFilter layers: تُستخدم لإضافة تأثيرات لمجموعة من الطبقات وسنناقشها لاحقًا.

06.png

يمكن معالجة محتوى الطبقة عبر الأدوات.

الأدوات

تُستخدم الأدوات لتعديل ومعالجة الصور وأشهرها استخدامًا هي فرشاة الرسم وهي الأداة الافتراضية عند فتح تطبيق Krita. ويوجد خمسة أنواع من الأدوات وهي:

  • أدوات الرسم Paint Tools: تُستخدم للرسم على طبقات الرسم، ويمكن باستخدامها رسم مستطيلات ودوائر وخطوط ...إلخ. ويمكن أيضًا التعديل على أنواع الفُرَش Brush Engines المستخدمة للرسم وإضافة تأثيرات لها.

  • أدوات الرسم الشعاعي Vector Tools: تتوضع في الصف العلوي وتُستخدم للرسم الشعاعي والتعديل عليه، وتستطيع استخدام جميع الأدوات للرسم على الطبقات الشعاعية باستثناء فرشاة الرسم الحر، ولا يمكن أيضًا استخدام أدوات الفرشاة لإضافة تأثيرات للأشكال المرسومة.

  • أدوات التحديد Selection Tools: تمكِّنك من تحديد مناطق معينة من الطبقة والتعديل عليها دون التأثير على الأجزاء المتبقية. عملها شبيه بعمل القناع المائي Masking fluids في الرسم العادي الذي يُستخدم لتحديد منطقة ما والتعديل عليها دون التأثير على المناطق المجاورة.

  • أدوات التوجيه Guide Tools: تضم مجموعة من الأدوات منها إظهار أو إخفاء خطوط الشبكة وأدوات مساعِدة للرسم.

  • أدوات التعديل Transform Tools: تمكنك من التعديل سريعًا على العناصر أو الطبقات المحدَّدة كتغيير الحجم أو التدوير أو الانحراف ...إلخ.

سأترك لك مهمة اكتشاف جميع الأدوات واستخدامها في رسم لوحتك.

أنواع الفُرَش

يمكن توليد أنماط معينة للفرشاة أو إضافة تأثيرات لها كإنشاء حدود للفرشاة مثلًا، ويحوي تطبيق Krita أنواعًا عديدةً من الفُرَش لها تأثيرات مختلفة. توضح الصورة ثلاثة أنواع مختلفة للفرشاة وهي على اليسار (Pixel brush) والوسط (Color smudge brush) وعلى اليمين (Sketch brush).

Krita_example_differentbrushengines.png

النوع (Pixel brush) بسيط جدًا ويساعدك على أداء الأعمال الأساسيَّة، وإذا كنت مولعًا بالرسم فإن النوع Color smudge brush هو الأفضل وقد تلاحظ أنه بطيء بالموازنة مع النوع السابق ولكنه يتميز بالقدرة على مزج الألوان. النوع الأخير Sketch brush يختلف تمامًا عن سابقيه فهو يرسم خطوطًا مبعثرة وعشوائية. يوجد خيارات كثيرة لكل نوع من أنواع الفُرَش يعطي كلٌّ منها تأثيرًا معينًا، ويمكنك ضبط هذه التأثيرات من إعدادات الفرشاة بالضغط على الاختصار F5. تُحفظ التعديلات التي تجريها على الفرشاة ضمن قائمة الفُرَش الموجودة سابقًا والتي يمكنك الوصول إليها عبر الاختصار F6.

ترسم الفرشاة باستخدام الألوان ولكن كيف يفهم الحاسوب الألوان؟

الألوان

يستطيع الإنسان رؤية الملايين من الألوان التي هي عبارة عن أمواج كهرومغناطيسيّة تنعكس على سطح الجسم فإمَّا أن يُشتِّتها أو يمتصُّ جزءًا منها لتنعكس على أعيننا ونميز لون ذلك الجسم. توضح الصورة في الأسفل نظامين لونيين، اليمين هو النظام RGB واليسار هو النظام CMY.

800px-Krita_basics_primaries.png

الألوان المستخدمة عند الرسم على لوحة تقليدية هي عبارة عن أصباغ تمتص الأمواج الضوئية المقابلة للون الذي نريد الحصول عليه، وكلما زادت نسبة الصباغ زادت نسبة امتصاص الضوء وبالتالي نحصل على لون أغمق والعكس بالعكس. وتكون الألوان الأساسية التي تُمزج مع بعضها للحصول على بقية الألوان الأخرى هي الأزرق الفاتح Cyan blue والأحمر الأرجواني أو الوردي Magenta red والأصفر Yellow أمَّا اللون الأبيض فهو موجود على ورقة الطباعة ولذلك يُستخدم هذا النظام CMY للطباعة .

يستخدم الحاسوب ثلاثة ألوان أساسيَّة أيضًا ويمزج بينها بكميات متفاوتة للحصول على ألوان أخرى بطريقة مشابهة للطريقة السابقة، وبما أنَّشاشة الحاسوب هي جسم مشع للضوء فإنه عند مزج كمية كبيرة من الألوان الضوئية السابقة نحصل على ضوء زائد وبالتالي على لون فاتححتى الوصول إلى اللون الأبيض،وتكون الألوان الأساسيَّة هي الأحمر Red والأخضر Green والأزرق Blue. وبما أنَّ شاشة الحاسوب تتكون من عدد من النقط فإنَّكلَّنقطة تتوهج بتدرُّجات مختلفة للألوان الأساسيَّة تلك للحصول على اللون المحدد، وتتراوح قيمها من 0 حتى 255 ويُستخدم عادةًالنظام الست عشري، وبالتالي فإنَّالحاسوب يستخدم النظام RGB. ويمكنه أيضًا التحويل إلى النظام CMY أو النظام LAB، وللمزيد يمكنك الاستفادة من هذه المقالة.

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

300px-Krita_basic_channel_rose.png

الشفافيَّة

يستطيع الحاسب معرفة مدى شفافيَّة كل نقطة في الشاشة بالطريقة نفسها التي يميز الألوان الأساسيَّة، لذا تعد الشافية أيضًا كقناة وتدعى قناة ألفا alpha channel، وتظهر أهمية الشفافيَّة عند تعدُّد الطبقات.

أساليب المزج

بما أنّ الألوان تخزَّن على الحاسوب باعتبارها أرقامًا فلم لا نجري عليها بعض العمليات الحسابية؟! تسمى تلك العمليات بأساليب المزج Blending modes ويمكن تطبيقها على طبقة أو فرشاة الرسم ومن هذه الأساليب:

  • الضرب Multiply: يعطي هذا الأسلوب ألوان عاتمة وبالتالي إنشاء الظلال بسهولة.

  • الإضافة Addition: يعطي هذا الأسلوب ألوان فاتحة بعكس الأسلوب السابق مما يعطي تأثيرات مميَّزة وجذَّابة.

  • المسح Erasing: لا يوجد في Krita أداة للمسح وإنما هي أسلوب دمج يطبق على الفرشاة، وعند الضغط على الزر E نحصل على ما يشبه الممحاة.

  • الطبيعي Normal: هو أسلوب دمج وسطي بين الألوان معتمدًا على مدى شفافية أكبر قيمة من الألوان الأساسيَّة الثلاثة .

يحتوي تطبيق Krita على 76 أسلوب مزجيمكنك الإطلاع عليها هنا.

الأقنعة

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

لدينا في الصورة التالية سيدة على شكل شبح أبيض ولكنها في هيئتها تلك لا تبدو كذلك.

Krita_ghostlady_1.png

لتحويل تلك الصورة إلى شبح حقيقي نضغط بالزر الأيمن على الطبقة ونضيف قناعًا شفافًا Transparency Mask ثمَّ نعدِّل تدريجات الأبيض والأسود بحيث يكون تدرج الأسود في الأسفل للحصول على شفافية أكبر حتى تنتج معنا الصورة التالية التي هي أقرب لهيئة شبح حقيقي.


Krita_ghostlady_2.png

المُرشِّحات

يمكن إجراء العديد من العمليات الحسابية على النقط المكونة للصورة أو مجموعة منها أو طبقة بأكملها وتدعى هذه العمليات "الترشيح" Filter. بمعنى آخر، نعرِّف الترشيح بأنه تمرير صورة من خلال عملية تعالج كل نقطة من نقاطها. ومن أنواع المرشِّحات:

  • إزالة التشبُّع Desaturate: تحويل جميع نقط الصورة إلى التدرج الرمادي.

  • الضبابية Blur: تُنعَّم الصورة عن طريق حساب متوسط النقط للمنطقة المحدَّدة أو للصورة بأكملها وينتج غباشًا أو شكلًا ضبابيًا.

  • التباين Sharpen: يزيد من حدَّة تباين النقط المتجاورة والتي تملك تَبايُنًا أقل فتصبح الصورة أكثر وضوحًا.

  • إخفاء اللون Color to Alpha: هو مرشِّح ذو شهرة حيث يحول جميع الألوان المحددة إلى شفَّافة.

توضح الصورة التالية مجموعة مختلفة من المرشِّحاتطُبِّقت على أجزاء مختلفة من الصورة، ويحتوي تطبيق Krita على مجموعة كبيرةمن المرشِّحات.

300px-Krita_basic_filter_brush.png
 

استخدام المرشِّح مع الفرشاة

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

مرشِّحات الطبقات والأقنعة وأنماط الطبقات

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

ألا زلت تذكر السيدة الشبح؟ سنعدِّل قليلًا عليها باستخدام المرشِّح مع القناع السابق لإعطائها بعض الضوء المشع كي تبدو أكثر واقعية. نختار الطبقة ghost layer ونُنشئ طبقة جديدة منسوخة عنها. نضغط على تلك الطبقة بالزر الأيمن ونضيف مرشِّح للقناع من نوع gaussian blur ونضبط القيمة على 10. نضع الطبقة المنسوخة خلف الطبقة الأصلية ونحدِّد أسلوب مزج من نوع Color Dodge والذي يعطي الشبح توهجًا واضحًا. وإذا عدَّلت شيئًا على الطبقة الأصلية ghost layer فإنَّ التعديلات تنتقل إلى الطبقة المنسوخة تلقائيًا.

800px-Krita_ghostlady_3.png

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

عمليات التعديل

هي عمليات رياضية تُجرى على نُقَط الصورة وتشبه المرشِّحات، من تلك التعديلاتDeformations تغيير الحجم، وقلب وتدوير الصورة، وأداة القص التي تؤثِّر على حجم لوحة الرسم،وأداة التحريك. تستطيع باستخدام هذه الأدوات تدوير أو تغير حجم لوحة الرسم أو وضعها في منظور معين، كما يمكن استخدام أدوات متقدمة كأداة الانحرافwrap،والأداة cage والأداة liquefy التي تنشئ مجموعة من العقد حول الشكل لتشويهه بعض الشيء وابتكار أشكال جديدة.

800px-Krita_transforms_free.png

فرشاة التعديل

يوفر تطبيق Krita دمج التحويلات المشوِّهة للعنصر مع الفرشاة لنحصل على فرشاة التعديل Deform brush engine، وتعتبر نسخة عن أداة التحويل Liquefy وتتميز بالسرعة ولكن ذات دقة أقل. توضح الصورة التالية استخدام أداة التحويل Liquefy الشكل على اليسار للموازنة مع فرشاة التعديل الشكل على اليمين.

600px-Krita_transforms_deformvsliquefy.png

أقنعة التعديل

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

الرسوم المتحركة

يدعم الإصدار 3.0 من Krita الرسوم النقطية المتحركةحيث يوفر جدولًا زمنيًا وأدواتلمعاينة الحركة كما يوفر فُرَشًا متنوعة للرسم النقطي المتحرك مع إمكانية التصدير كصورة بصيغة (gift)أو فيديو.

Introduction_to_animation_walkcycle_02.gif

الأدوات المساعدة للرسم

علينا عدم نسيان أنَّ Krita هو تطبيق رسم رقمي ويجب أن يحوي أدوات رسمٍ كتلك التي نستخدمها للرسم في حياتنا اليومية كالمسطرة وغيرها من الأدوات التي تساعد على الرسم. سنستعرض فيما يلي بعضًا من تلك الأدوات التي يوفرها التطبيق.

800px-Krita_basic_assistants.png

الشبكة والخطوط المساعدة

هما من الأدوات المهمة والمساعدة كثيرًا في عملية الرسم حيث يمكن إظهار الشبكة grids وهي مجموعة من الخطوط الأفقية والعمودية بتباعدات محدَّدة، أو وضع خطوط مساعدة على لوحة الرسم وظيفتها مشابهة لوظيفة للمسطرة.

الالتقاط

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

العناصر المساعدة

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

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

تخصيص مساحة العمل

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

18.png

ويمكن ضبط شريط الأدوات من Settings → Configure Toolbars، وضبط الاختصارات من Settings → Configure Krita → Configure Shortcuts ومن Settings → Configure Krita → Canvas Input Settings.


 


ترجمة -وبتصرف- للمقال Basic Conceptsالذي كتبه فريق عمل Krita.

جميل بيلونيالثلاثاء, 2017/04/25 - 1:14ص
disqus

تعلم كريتا باحتراف : مدخل إلى تطبيق الرسم Krita لمستخدمي أدوبي فوتوشوب

$
0
0
تعلم كريتا باحتراف : مدخل إلى تطبيق الرسم Krita لمستخدمي أدوبي فوتوشوب

fromPhotoshopToKrita.png

مقدمة

إن كنت من مستخدمي الفوتوشوب فهذه المقالة خصَّصت لك لتعريفك بتطبيق الرسمKrtiaوشرح الأشياء المتشابهة بين التطبيقين بهدف الانتقال بسهولة وسلاسة إلى Krita والعمل عليه بفعالية كبيرة مشابهة لتلك على الفوتوشوب. إنَّ Krita هو تطبيق رسم رقمي ثنائي الأبعاد أمَّا الفوتوشوب فهو تطبيق يُستخدم للتعديل على الصور. يحتوي الفوتوشوب أدوات ومميزات كثيرة تفوق تلك المميزات في Krita ولكنَّ الأخير أقوى بكثير في مجال الرسم الرقمي، وعندما تعتاد على استخدام Krita ستجد فيه أدوات ومميزات لا تتوافر في الفوتوشوب.

إصدار Krita الذي سنشرح عليه هو 2.9 وإصدار الفوتوشوب هو CS2 و CS3، ولا تقلق إذا تغيَّر الإصدار لأنَّ الأساسيات تبقى ثابتة.

أساسيات استخدام Krita

يغطي هذا القسم كيفية استخدام الأدوات الأساسية في Krita والمشابهة لتلك الموجودة في الفوتوشوب.

المعاينة والإظهار

التنقُّل

يمكن التنقُّل ضمن ملفك بعدَّة طرق منها:

  • عجلة الفأرة: تحريكها Krita_mouse_scroll.pngللأمام والخلف يتحكم بحجم الإظهار عبر التصغير والتكبير، والضغط عليها Krita_mouse_middle.png يُمسك الصورة ويحركها للانتقال إلى أجزاء منها.

  • لوحة المفاتيح: ينوب عن تحريك عجلة الفأرة في لوحة المفاتيح ضغط الزرين + أو – وينوب عن ضغط عجلة الفأرة زر المسطرة لأداء الوظيفة نفسها. ويمكن ضغط Ctrl + Space أو Ctrl + Alt + Space للتكبير أو التصغير.

التدوير

يمكن تدوير لوحة الرسم بضغط Shift + Space أو ‎Ctrl + [‎ أوCtrl + [ أو يمكن أيضًا من مجموعة الأرقام اليمينية ضغط 4 أو 6 للتدوير و 5 لإعادة الشكل لوضعه الأصلي.

الانعكاس

يمكن تطبيق الانعكاس Mirror على لوحتك بضغط M بعد تحديدها.

تحريك وتغيير الشكل

توجد الأداتان التحريك Move والتغيير Trasform في شريط الأدوات، بالإضافة إلى استخدام الاختصارات وهي T لتحريك طبقة أو شكل ما، وهي الأداة نفسها في فوتوشوب عند ضغط Ctrl، و Ctrl + T للتعديل على الشكل. وبعد الانتهاء منها اضغط B للعودة إلى الفرشاة، ولا تنس ضغط Enter لتطبيق التغيرات التي أجريتها باستخدام أداة التشويه، وتطبِّق التغييرات تلقائيًا عند التحريك.

التحديد

لا تستطيع في Krita استخدام Alt أو Shift لتحديد مجموعة من العناصر أو إضافة أو إزالة عنصر جديد من مجموعة محدَّدة سابقًا وهذا مشابه للفوتوشوب كما تعلم. يوفر Krita أدوات فرعية تظهر كأيقونات في واجهة التطبيق منها أداة التحديد، وعند انتقائها تُتاح لدينا بعض الخيارات التي نصل إليها بضغط:

  • R: إعادة تحديد عناصر.

  • T: مقاطعة مجموعة من العناصر ذات خاصية معينة وتحديدها.

  • A: إضافة عناصر جديدة لمجموعة محدَّدة سابقًا.

  • S: إزالة عنصر أو أكثر من مجموعة محدَّدة سابقًا.

إن أردت تحريك مجموعة من العناصر بالضغط على Ctrl كما في الفوتوشوب فلن تستطيع، بل اضغط على T ثمَّ اختر أداة التحريك بدلًا من بذلك.

إليك أيضًا بعض النصائح المفيدة:

  • إذا كنت تريد وضع مجموعة أو أشياء محدَّدة ضمن طبقة فاذهب بعد اختيارها إلى شريط أدوات الطبقات واضغط بالزر الأيمن عليه ثم اختر (Select opaque).

  • يمكنك استخدام أداة تحديد المضلع لتحديد ما بداخله عبر نقرتين متتاليتين بالفأرة أو ضغط Shift ثمَّ الزر الأيسر Krita_mouse_left.png وافتح مضلَّع لتحديد ما بداخله.

  • تستطيع تكبير العناصر المحدَّدة أو تصغيرها منSelect → Scale، كما يوجد ضمن القائمة السابقة خيارات كثيرة سأتركها لك لاكتشافها.

يوجد أيضًا بعض الاختصارات التي تفيدك في التحديد منها:

  • Ctrl + H: إظهار أو إخفاء التحديد.

  • Ctrl + A: تحديد الكل.

  • Ctrl + Shift + A: إلغاء تحديد الكل.

ملاحظة لمستخدمي Gimp: عند تحديد عناصر ونسخها عبر Ctrl + C ثمَّ لصقها Ctrl + V فإنَّ Krtia ينشئ طبقة جديدة ويضع العناصر فيها. أو إذا أردنا نقل عناصر إلى طبقة موجودة نختار تلك العناصر وننقلها إلى الطبقة بضغط T ثمَّ اختيار أداة التحريك (Move tool) من خيارات الأداة.

التحكم بالطبقات

نستعرض الاختصارات التالية الموجودة في فوتوشوب و Krita أيضًا وهي:

  • Ctrl + J: مضاعفة الطبقة.

  • Ctrl + E: دمج الطبقات.

  • Ctrl + Shift + E: إلغاء الدمج، وهو نفس الاختصار Ctrl + Shift + M في فوتوشوب.

  • Ins: إنشاء طبقة رسم جديدة.

المجموعات وأساليب المزج

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

تحريك الطبقات وإدخالها ضن مجموعة

تستطيع تحديد طبقات متعدِّدة باختيارها مع استمرار الضغط على Shift كما في فوتوشوب ثمَّ تحريكها إلى مجموعة طبقات Layer Groub فتنتقل الطبقات المحدَّدة إليها. انتبه إلى عدم امكانية تطبيق مرشِّح Filter على مجموعة لتطبيق تأثيرات على كامل طبقاتها.

أقنعة القطع

لا تتوفر خاصيَّة أقنعة القطع Clipping Masks في Krita ولكن يوجد بديل آخر لأداء الوظيفة نفسها وهي Alpha-inheritanceحيث ضع الطبقة ذات الشكل الذي تريد اقتصاصه من الصورة أسفل المجموعة وفعِّل الخيار (inherit alpha) -لاحظ وجود أيقونة بشكل a بجانب الطبقة- للطبقات الأعلى منها.

pha inheritance.png صورة widget

يمكن القيام بالعملية السابقة تلقائيًّا عبر الاختصار Ctrl + Shift + G حيث تُنشأ مجموعة بطبقة أساسيَّة في الأسفل وطبقات أخرى أعلى منها مع تفعيل خاصيَّة (inherit alpha) عليها .

الوضع Pass-through

أصبحت الإصدارات الحالية من Krita تمتلك الوضع Pass-through الموجود في الفوتوشوب والذي يزود الطبقة بخاصيَّة إضافية لتبدو وكأنها ليست من ضمن المجموعة ويمكن تطبيق أسلوب مزج بينها وبين طبقات أخرى من الملف، وهذا الوضع ليس من ضمن أساليب المزج وتجده بجانب الخيار Inherit alpha.

الطبقات الذكيَّة

يمتلك Krita عوضًا عن الطبقات الذكيَّة Smart layers التي يمكن تطبيق تعديلات غير مُخرِّبة عليها مجموعةً من الخيارات والوظائف وهي:

  • طبقات الملفات File layers: ترتبط هذه الطبقات مع صور من خارج الملف وتُعدَّل تلقائيًّا عند تعديل الصور الأصليَّة تلك.

  • الطبقات المنسوخة Clone layers: إذا حدَّدت طبقة ما ثمَّ اخترت إنشاء طبقة جديدة من هذا النوع تنشأ طبقة طبق الأصل عن الطبقة المُحدَّدة. لا يمكن التعديل على هذا النوع من الطبقات وعند الرسم على الطبقة الأصلية تُعدَّل هذه الطبقة تلقائيًّا.

  • أقنعة التعديل Transform Masks: تُستخدم للتعديل غير المُخرِّب مع جميع أنواع الطبقات.

  • مُرشحات الأقنعة Filter Masks: يمكن باستخدامها تطبيق المرشحات Filters غير المُخرِّبة على جميع أنواع الطبقات، ويطبَّق تأثير المرشِّح مكان تطبيق القناع.

أنماط الطبقات

يمتلك Krita أنماط الطبقات Layer Styles المشابهة لتلك الموجودة في فوتوشوب، ولإضافتها على الطبقة نضغط برز الفأرة الأيمن عليها ثمَّ نختار (Layerstyle). يستطيع Krita فتح وحفظ ملفات مكتبة الأنماط ASL.

أشياء إضافية

يمكنك باستخدام Krita تصدير الطبقات أو المجموعات، كما يضم التطبيق ما يزيد عن خمسة أضعاف أساليب المزج الموجودة في فوتوشوب وجميعها موجودة ضمن تصنيفات.

أدوات الرسم

تشَّكل أدوات الرسم نقطة القوة التي يتفوق بها Krita عن فوتوشوب لأنَّه تطبيق رسم رقمي كما عَلِمت، وهذه الأدوات كثيرة جدًا وكلٌّ منها يحتوي على العديد من الخيارات.

الأدوات

مصطلح الأدوات Tools في Krita لا يشابه نظيره الموجود في فوتوشوب، ففي Krita لن تجد الممحاة أو أداة الضباب Blur Tool ...إلخ. بل ستواجه أولًا تحديد الطريقة لرسم خطوطك وكيف ستبدو على اللوحة. عندما تختار أسلوب الرسم يمكنك آنذاك تحديد طرائق مختلفة لرسم لوحتك كالمحي وإضافة الغباش وغيرها، وكلُّ ذلك يُدار من قِبل "أنواع الفُرَش" وخياراتها. يوجد العديد من الفُرَش المحفوظة ضمن التطبيق والتي تدعى Brush presets، ويمكن أيضًا التعديل عليها من الخيارات وإنشاء فرشاة خاصَّة بك عبر الضغط على (Edit Brush Settings) في شريط الأدوات.

المحي

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

اختصارات مفيدة

  • Shift: تكبير أو تصغير حجم الفرشاة، ويمكن أيضًا استخدام [ و ].

  • / : التبديل مع آخر أسلوبٍ استخدمته للفرشاة.

  • K و L: تُستخدم عند تحديد اللون كي يصبح أغمق أو أفتح.

  • I و 0: زيادة أو إنقاص درجة التعتيم opacity.

  • D: إعادة ضبط الألوان بحيث تكون سوداء في الواجهة وبيضاء في الخلفية.

  • X: لتبديل ألوان الخلفية مع الواجهة.

  • Shift + I | Shift + N | Shift + M: للوصول إلى "عارض الألوان" على لوحة الرسم.

ويمكنك بسهولة تغيير أي اختصار من Settings > Configure Shortcuts.

استقرار ونعومة المسار

يوفر Krita خيارات عديدة للتعامل مع استقرار Stabilization ونعومة Smoothing المسار المرسوم، خصوصًا ذلك المرسوم حرًّا باليد باستخدام أداة (paint with brush)، عبر خيارات الأداة (Tool Options).

ضبط الضغط عند الرسم

تطبيق Krita حساس للضغط عند رسم المنحنيات والخطوط، وإذا شعرت أنه يعطي ضغطًا كبيرًا أو صغيرًا عند الرسم فيمكنك ضبط تلك القيم عبر Settings > Configure Krita > Tablet Settings.

مرشحات التعديل

تستطيع استخدام مرشحات تقليدية كما في فوتوشوب لتعديل بعض الأشياء كاللون والتباين خلال الرسم ومنها:

  • Ctrl + L: لتعديل مستويات الإضاءة والعتمة tone-values للصورة.

  • Ctrl + U: لتعديل HSV/HSL وهي درجة اللون، ودرجة إشباعه، ودرجة الإضاءة.

  • Ctrl + I: عكس الألوان فالأبيض يصبح أسودًا.

الأدوات Burn / Blur / Dodge

توجد كأدواتٍ منفصلةٍ خلافًا للفوتوشوب، ويمكن استخدامها مع الفُرَش Brush Engine كما تُستخدم أغلب المرشِّحات.

القوالب

يمكنك تغيير قالب Krita المظلم من Settings > Themes، وإن لم تعجبك الألوان المحيطة بلوحة الرسم فيمكنك تخصيصها من Settings > Configure Krita > Display واختيار لونك المفضل.

ما الذي يمتلكه Krita زيادةً على الفوتوشوب

أشرنا سابقًا إلى أنَّ Krita متخصِّصٌ في مجال الرسم الرقمي فهو يحتوي على أدواتٍ تخصُّصيَّةٍ لهذا الغرض لا تتوفر في تطبيقات التعديل على الصور كالفوتوشوب. سنستعرض ما يلي بعضًا من هذه الأدوات.

أنواع الفُرَش

يحوي Krita الكثير من الفُرَش المتنوعة تدعى Brush Engins والتي تُعدِّل على النُقَط Pixels في لوحتك وتعطيها شكلًا معينًا. يمكن تخصيص الفرشاة والتعديل عليها بما يناسبك من إعدادات الفرشاة brush-settings الموجودة في شرط الأدوات أو عبر الاختصار F5.

اللوحة المنبثقة

Krita-popuppalette.png

تسمح اللوحة المنبثقة بالوصول السريع للفُرَش والألوان وغيرها بدلًا من استخدام زر الفأرة الأيمن حيث تظهر اللوحة، كما هو موضَّحٌ، عند اقتراب المؤشر منها، ويمكنك تخصيص الفرشاة المناسبة للعمل والأكثر استخدامًا ووضع اسم لها بضغط الزر الموجود أسفل يمين اللوحة.

أدوات التعديل

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

Krita-transform-mask.png

الحفظ التراكمي

تساعد هذه الميزة على تجنب إعادة الكتابة فوق الملف الذي نعمل عليه بعد كل عملية جديدة نقوم بها وبالتالي تبقى الإصدارات القديمة من الملف محفوظة كلَّما تقدمت بالعمل.

Krita-incremental-saves.png

ولكي يفهم التطبيق أننا نريد حفظ الملف بهذه الخاصية نضيف في نهاية الاسم "XXX_" أي يصبح مثلًا myartworksname_001.kra.

المرشِّح "Color to alpha"

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

الكثير من أساليب المزج

إن كنت من محبي أساليب المزج Blending Modes فإنَّ Krita يحوي ما يزيد على 70 منها، حاول أن تجد متَّسعًا من الوقت لاستكشفها.

الأدوات المساعدة على الرسم

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

800px-Krita_basic_assistants.png

الفُرَش المتعددة

تسمح أداة الفُرَش المتعددة multibrush بالرسم مستخدمًا أكثر من فرشاة بآن واحد، وتكون حركة هذه الفُرَش مختلفة عن حركة الفرشاة الأساسيَّة بحسب النوع المستخدم كرسم انعكاس للفرشاة الأساسية أو تكرار الشكل المرسوم عددًا من المرات حول محور ما، ومن أنواع الفرش المتعددة:

  • Symmetry: تكرار الشكل نفسه.

  • Parallel: رسم شكل موازِ للشكل الأساسي.

  • Mirrored: رسم شكل مُنعكس عن الشكل الأساسي.

  • Snowflake: أشكال تشبه التساقط كالثلج.

Krita-multibrush.png

اختيار واسع للألوان

توفر لوحة تحديد الألوان المتقدمة خيارات كثيرة وواسعة عند اختيار الألوان.

Krita_Color_Selector_Types.PNG

ترشيح الألوان

يمكن عبر لوحة تحكم LUT استخدام مرشِّح لتصحيح الألوان وإظهار النتائج في معاينة مختلفة، وهذه الخاصيَّة مفيدةٌ خصوصًا لمن يستخدم تصحيح الألوان بكثرة أو لمن يريد عرض الصورة بتدرج الرمادي.

800px-Krita-view-dependant-lut-management.png

الرسم بألوان HDR

يمكن الرسم باستخدام ألوان HDR (High-dynamic-range)ذات الدقة والإضاءة العالية والشبيهة بألوان الصورة الواقعيَّة التي تراها العين، وتُستخدم عن طريق لوحة تحكم LUT.

800px-Krita-hdr-painting.png

ما هي الأشياء التي لا تتوفر في Krita

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

المُرشِّحات

رغم أن Krita يحوي مجموعة مميزة من المُرشِّحات إلا أنَّك قد تفقد نوعين أو أكثر من المرشِّحات أو أدوات ضبط الألوان التي تستخدمها بكثرة في فوتوشوب كعدم وجود أداة ضبط الألوان HSV (درجة اللون وإشباعه وقيمته).

أداة تنقيح الصورة وإصلاحها تلقائيًّا

لا تتواجد أداة تنقيح الصورة وإصلاحها تلقائيًّا Automatic healing tool فيKrita ولكن توجد أداة مشابهة لها تدعى Clone Tool.

Macro

وهي موجودة في Krita ولكنَّها حاليًا لا تعمل جيِّدًا.

أداة كتابة نص

لا تمتلك أداة كتابة النص Text Tool مميزات متطورة شبيه بالأداة الموجودة في الفوتوشوب.

أساليب المزج مع أنماط التحويل

عند تطبيق تحويلات وتعديلات Transforming على طبقة ما أو مجموعة مُحدَّدة في Krita فإنَّها تظهر في أعلى قائمة الطبقات مع تجاهل أسلوب المزج في الطبقة.

أشياء أخرى

لا تستطيع تحريك العناصر المحددة، أو التصدير إلى الويب أو استخدام عرض الشرائح معه.

الخلاصة

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


 


 

ترجمة -وبتصرف- للمقال: Introduction to Krita coming from Photoshopالذي كتبه فريق عمل Krita.

جميل بيلونيالأربعاء, 2017/04/26 - 3:34م
disqus

صدور كتاب « تعلم jQuery »

$
0
0
صدور كتاب « تعلم jQuery »

jQueryEnlightenment-cover.png

وأخيرا، وبعد جهود مثابرة ومستمرة،  صدر كتاب «تعلم jQuery» الذي ترجمه عبد اللطيف ايمش من كتاب «jQuery Enlightnement» لصاحبه Cody Lindley.
يتناول هذا الكتاب مكتبة jQuery الشهيرة، ويبيّن آلية عملها، وطريقة استعمالها، شارحًا ذلك بأمثلةٍ عمليةٍ قابلةٍ للتجربة تجربةً حيةً مباشرةً.؛ هذا الكتاب موجَّهٌ للمبرمج صاحب المعرفة المتوسطة بمكتبة jQuery أو الذي تعامل مسبقًا مع مكتبة JavaScript أخرى.
قُسِّمَ هذا الكتاب إلى اثني عشر فصلًا ويقع في 240 صفحة، وهذه عناوين الفصول فيه:
- المفاهيم الأساسية في jQuery
- تحديد العناصر في jQuery
- التنقل في شجرة DOM
- تعديل شيفرات HTML
- نماذج HTML
- الأحداث في jQuery
- jQuery ومتصفح الويب
- الإضافات في jQuery
- تحسين أداء شيفرات jQuery
- المؤثرات في jQuery
- تقنية Ajax
- مواضيع متفرقة
هذا الكتاب حرٌ ومنشورٌ برخصة المشاع الإبداعي: نَسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0 (أي CC BY-NC-SA 4.0). تُرجِمَ هذا الكتاب بعد أخذ إذن المؤلف.
يجدر بالذكر أنَّ هذا الكتاب برعاية وادي التقنية، وقد نُشِرَ كتاب «تعلم JavaScript» مترجمًا للعربية ولنفس المؤلف في وقتٍ سابق.
لتنزيل هذا الكتاب: اضغط هنا.


يمكنك الاطلاع أيضًا على الكتب الأخرى التي عمل عليها عبد اللطيف ايمش:
- تعلم البرمجة بلغة PHP
- سطر أوامر لينكس
-دليل إدارة خواديم أوبنتو
- تعلم JavaScript

 

 

Fahadالأربعاء, 2017/05/03 - 11:29ص
disqus

إطلاق سكريبس ١.٥.٣ الداعم للغة العربية

$
0
0
إطلاق سكريبس ١.٥.٣ الداعم للغة العربية

scribus-icon.png

أخيرا صدرت نسخة ١.٥.٣التطويرية من برنامج النشر المكتبي سكريبس الحر ومفتوح المصدر، هذه النسخة تحمل الدعم الرسمي للغة العربية بحيث أصبح سكريبس يكتب العربية ويتعامل معها بشكل سلس جدا.
كنا قد أشرنا سابقاإلى إضافة دعم العربية في سكريبس بواسطة دعم من هيئة تقنية المعلومات في سلطنة عمان بحيث شكل فريق بيت تكنولوجيا مفتوحة المصدر HOST لدعم العربية في سكريبس وغيره من البرامج مفتوحة المصدر.
ما الجديد في سكريبس ١.٥.٣
١- إعادة كتابة وتطوير محرك تصيير النصوص ليدعم اللغات المعقدة من مثل العربية والهندية وغيرها من اللغات.
٢- إضافة دعم لأكثر من ٥٠٠ لغة في سكريبس.
٣- أصبح التعامل مع النصوص والتحرير أسرع في المستندات الكبيرة.
٤- إضافة ميزة معاينة الخطوط في نافذة تحرير النص.

scribus-ctl.png

تنزيل هذه الإصدارة:
لمنصة ويندوز هنا، و ويندوز ٦٤ من هنا
لمنصة الماك من هنا
لمنصة أوبنتو من هنا.
لبقية توزيعات لينكس يرجى متابعة مستودعات البرامج للحصول عليها.

Fahadالاثنين, 2017/05/29 - 10:07ص
disqus

صدور كدي بلازما ٥.١٠

$
0
0
صدور كدي بلازما ٥.١٠

kdelogo-official.png

أعلن مطوروا سطح المكتب كدي عن إصدار سطح المكتب بلازما ٥.١٠، هذه الإصدارة جاءت بالعديد من المميزات الجديدة وحسنت الكثير من الأدوات الموجودة سابقا في سطح المكتب كدي.
أهم مميزات هذه الإصدارة:
١- تحسين لوح مدير المهام، بحيث أصبح بالإمكان تجميع التطبيقات في مجموعة عن طريق الضغط على الزر الوسط في الفأرة.


٢- إرجاع عرض المجلدات كخيار افتراضي لسطح المكتب، وذلك بعد رفض دام سنوات لهذه الفكرة، ولكن الآن أصبح الخيار الافتراضي بحيث يمكن وضع أيقونات ومجلدات على سطح المكتب مباشرة.

Spring Loading in Folder View
٣- إظهار متحكمات الملتدميا على شاشة الإقفال.

Lock Screen Now Has Music Controls
٤- إضافة لوحة مفاتيح افتراضية في شاشة الدخول.

Virtual keyboard on Log In and Lock Screen
٥- الاستمرار في تطوير وتحسين دعم خادم ويلاند بحيث أضيف دعم مخططات لوحة المفاتيح ولكن دعم ويلاند لم يصل إلى مرحلة بأن ينصح في استخدامه بعد.

adminالخميس, 2017/06/01 - 1:30م
disqus

صدور دبيان ٩

$
0
0
صدور دبيان ٩

banner_stretch.png

بعد ٢٦ شهرا من التطوير، أعلن مجتمع دبيان عن إصدار دبيان ٩تحت مسمى "Stretch" والتي ستكون مدعومة لخمس سنوات من الآن.  من الأشياء الجديدة هو استبدال قاعدة بيانات MySQL إلى MariaDB ، وإرجاع متصفح الانترنت فيرفوكس وعميل البريد الإلكتروني ثندربرد بعد عشر سنوات من القطيعة مع مؤسسة موزيلا.
أهم الحزم في هذه الإصدارة هي:

  • Apache 2.4.25
  • Asterisk 13.14.1
  • Chromium 59.0.3071.86
  • Firefox 45.9 (in the firefox-esr package)
  • GIMP 2.8.18
  • an updated version of the GNOME desktop environment 3.22
  • GNU Compiler Collection 6.3
  • GnuPG 2.1
  • Golang 1.7
  • KDE Frameworks 5.28, KDE Plasma 5.8, and KDE Applications 16.08 and 16.04 for PIM components
  • LibreOffice 5.2
  • Linux 4.9
  • MariaDB 10.1
  • MATE 1.16
  • OpenJDK 8
  • Perl 5.24
  • PHP 7.0
  • PostgreSQL 9.6
  • Python 2.7.13 and 3.5.3
  • Ruby 2.3
  • Samba 4.5
  • systemd 232
  • Thunderbird 45.8
  • Tomcat 8.5
  • Xen Hypervisor
  • the Xfce 4.12 desktop environment

لتنزيل هذه الإصدارة من هنا.

Fahadالأحد, 2017/06/18 - 2:33م
disqus

صدور فيدورا ٢٦

$
0
0
صدور فيدورا ٢٦

fedora26.jpg

أعلن مجتمع توزيعة فيدورا عنإطلاق النسخة ٢٦، هذه النسخة جاءت بالعديد من المميزات الجديدة وشملت كل نسخ فيدورا لسطح المكتب و المخدمات و السحاب.
سأحاول تلخيص الجديد في  هذه الإصدارة ، ونبدأ بالمميزات التي تختص المستخدمين النهائيين، حيث أن  أهم جديد في هذه الإصدارة هي تضمينها بنسخة ٣.٢٤ من سطح مكتب جنوم، والتي جاءت بالعديد من المميزات أهمها الوضع الليلي، معلومات الطقس، وتطبيق وصفات الطبيخ.أما بالنسبة لمدراء الأنظمة،  لعل أهم ميزة هي تضمين هذه النسخة  Modular Server Preview  وهو مخدم يعمل بفكرة التوزيعة المتدحرجة،  الفكرة بعدها ما زالت تحت الاختبار والتجريب ويتوقع أن تعمم لكل النسخ بعد استقراراها.  من المميزات أيضا هو تفعيل سياسة تشفير شاملة تغطى النظام بالكامل.
أما بالنسبة للمطورين فقد حدثت لغات البرمجة إلى آخر الإصدارات من مثل اعتماد GCC 7 و Golang 1.8 وبايثون ٣.٦ و روبي ٢.٤ و php 7.1
لتنزيل هذه فيدورا ٢٦ من هنا.

Fahadالأربعاء, 2017/07/12 - 10:01ص
disqus

نبذة عن المعالجات متعددة الأنوية ( Multi-Core Processors )

$
0
0
نبذة عن المعالجات متعددة الأنوية ( Multi-Core Processors )

Multicore-Processors.jpg

بقلم/ خالد القرني

مقدمة

أصبحت المعالجات متعددة الأنوية (Multi-Core Processors ) لدى التكنولوجيين الاتجاه المرغوب به الآن في عالم المعالجات الحاسوبية وذلك عندما وصلت المعالجات أحادية الأنوية ( Single-Core Processors ) الحد الأقصى الفيزيائي لها من التعقيد والسرعة. واستنادًا على بعض قوائم المعالجات الكبيرة والسريعة المنشورة بواسطة موقع ( Top500 ) ، هناك إشارة فعلية إلى أن 20% من المعالجات الحديثة تنتمي إلى عائلة المعالجات متعددة الأنوية.

صرحت شركة انتل ( Intel) ،التي تعتبر من أحد عمالقة شركات صناعة المعالجات الحاسوبية، أن زيادة سرعة معالجات الجيل القادم من الأنوية الأحادية بزيادة ترددها ( Frequency ) صار من الصعب جدا هذه الأيام ، وذلك بسبب الارتفاع الملموس في حرارتها أثناء إنجازها المهمات المختلفة وأيضاً استهلاكها الزائد من الطاقة ( Power Consumption ).

ونتيجة لهذا العائقان الرئيسيان اللذان أثّرا على معدل زيادة سرعة نبذ الساعة لهذه المعالجات ( Clock Rate ) ، قام المسؤولون في صناعة الحاسبات الآلية بالتفكير في تصميم المعالجات ذات الأنوية المتعددة.

 

لماذا سميت المعالجات ذات الأنوية المتعددة بهذا الاسم ؟

التسمية لهذه المعالجات بهذا الاسم مأخوذة من طريقة تصنيعها والطريقة هي وضع معالجين ( CPUs ) أو اكثر في نفس الدائرة الكهربائية المتكاملة ( Integrated Circuit ) ، الاسم المختصر منها (IC )، وبمعنى آخر يُرَكَّب معالجان أو اكثر في شريحة كهربائية واحدة ( Chip )،كما هو موضح في الشكل التالي:

Quad-core dual-processor system.png
1- معالج مزدوج ذو رباعي الأنوية (Quad-core dual-processor system)


تسمية أخرى لهذه المعالجات هى شريحة المعالجات المتعددة ( Chip Multiprocessors) ، الاسم المختصر منها ( CMP )

ما فوائد المعالجات ذات الأنوية المتعددة ؟

على سبيل الإيجاز نسرد هنا بعضفوائد المعالجات ذات الأنوية المتعددة التي تميزت بها عن المعالجات ذات النواة الواحدة:

  1. من الطبيعي زيادة سرعة أداء عمل ما عندما يُقسَّم ويُنجز عن طريق أكثر من شخص في وقت واحد ، فكما هو الحال مع هذه المعالجات فهي افتراضيًا تزيد سرعة التطبيقات المختلفة تقريبًا إلى 30% وذلك بتقسيم كميات العمل المعطاة ( Work Loading ) إلى الأنوية (Cores) المختلفة. الشكل التالي يوضح مقارنة بسيطة بين معالج أحادي النواة وآخر متعدد الأنوية من ناحية السرعة المسجلة من بعض نتائج القياسات المحددة (Benchmarks ) لبعض البرامج والتطبيقات .

multi-cores benchmarks.png

  1. تنجز معالجة المهام المختلفة بتردد منخفض ( Low Frequency ) وباستهلاك طاقة أقل( Low Power Consumption ) لكل نواة في الشريحة.

  2. الانسجام والتناغم (Compatibility) التام عند تصميم وبناء نوايا مختلفة مع بعضها البعض. فعلى سبيل المثال نستطيع وضع الأنوية البطئية مع السريعة والأنوية ذات مجموعات تعليمات مختلفة ( Instruction Sets ) مع بعضها البعض. وهذا الأسلوب من التصاميم يُلَقَّب بالمعالجات المتعددة ذات الخواص والعناصر المختلفة (Heterogeneous CMP ).

  3. الفعالية الملحوظة وذلك لأن المعالجات ذات الأنوية المتعددة كما أشرنا إليه سابقًا تُقَلِّصُ وتخفض الطاقة المستهلكة وبالتالي يؤدي هذا إلى زيادة فعاليتها وقدرتها على إنجاز المهام المختلفة.

  4. المقدرة على تزويد الموازنة الضرورية بين السرعة ( Performance ) وبين الطاقة المستهلكة.

 

السرعة الزائدة والطاقة المتوفرة من المعالجات ذات الأنوية المختلفة

السرعات المكتسبة من هذه المعالجات تزيد تنفيذ المهام بمعدل عالٍ يصل إلى عشر أضعاف (10X) سرعة المعالجات ذات الأنوية الأحادية، بغض النظر عن نوع المهام سواء أكانت المهام تسلسلية (Sequence) أم متوازية ( Parallel)

وأيضًا يوفِّر ما يقارب عشر أضعاف (10X) الطاقة الحرارية ( Heat Dissipation )الناتجة عن المعالجات ذات الأنوية الأحادية، وذلك عن طريق إنقاص التردد كما أشير سابقا.

الشركات المصنعةللمعالجات ذات الأنوية المتعددة

هنا نسرد بعض الشركات الرائدة في التخطيط والتصميم لنوع هذه المعالجات:

  1. AMD

من أمثلة المعالجات التي أصدرتها هذه الشركة (Opteron enterprise-server Multicore) و

(desktop chips Athlon 64) و(Sempron desktop chips) وأيضًا (Turion mobile chips).

  1. Intel

هذه الشركة تملك ما يقارب 16 مشروع لتصميم معالجات مختلفة ذو نوايا متعددة منها:

أول معالج اصدر عنها في 2001 وهو عباره عن dual-core server chip, the power 4 وفي نهاية العام نفسه أصدرت معالج آخر يعمل بسرعة أربعة أضعاف المعالج السابق. وعلى ضوء ذلك فقد اتحدت هذه الشركة مع كل من Sony و Toshiba لإخراج التصميم المعالج (Cell) المطور لتعامل مع الكميات الضخمة من المهام

(compute-intensive workloads) و النقل عريض النطاق للبيانات (broadband data transmission) و أخيرًا التعامل والمعالجة الاحترافية مع الوسائط المتعددة مثل الصورة والصوت (multimedia processing).

  1. SUN

في عام 1999 أصدرت معالج بيانات صغير الحجم ويسمى (MAJC) لكنه لم ينتشر ولم يستخدم على نطاق واسع لكنه استخدم كمعالج ضمني ومدمج (embedded-systems) لبعض الأجهزة الإلكترونية

ملخص المعالجات ذات الأنوية المختلفة

المعالجات متعددة الأنوية (Multi-Core Processors ) مقارنةً مع المعالجات الأنوية الأحادية ( Single-Core Processors ) تُنجز عدة مهام خلال نبض ساعات قليلة، وصممت لتعمل بتردد منخفض ( Low Frequency ) الذي ينتج لنا استهلاك طاقة منخفضة ( Low Consumption ) والذي يؤدي إلى زيادة فعالية أداء هذه المعالجات.

 

المصادر

  1. https://computing.llnl.gov/linux/slurm/dist_plane.html

  2. http://archive.cotsjournalonline.com/articles/view/100659

Fahadالخميس, 2017/07/27 - 10:46ص
disqus

صدور ليبر أفيس ٥.٤

$
0
0
صدور ليبر أفيس ٥.٤

libo-5.4.png

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


أهم المميزات العامة في ليبر أفيس ٥.٤:
١- إضافة وحدة ألوان جديدة مبنية على نموذج ألوان PYB.
٢- إضافة دعم صور EMF التي تنتجها حزمة مايكروسوفت أفيس.
٣- أصبحت الملفات PDF المستوردة في ليبرأفيس أكثر جودة ودقة.
٤- دعم مفاتيح التشفير OpenPGP لتوقيع ملفات ليبر أوفيس على لينكس.
 
أهم مميزات رايتر:
١- دعم قوالب مايكروسوفت وورد DOTM
٢- إضافة ميزة إضافة علامة مائية في المستند عن طريق قائمة التنسيق.
٣- أصبح التعامل مع الهوامش والتعليقات النهائية أكثر سهولة.

أهم مميزات كالك:
١- دعم مخططات pivot  التي تستخدم جداول pivot بحيث تتحدث تلقائيا عند تحديث الجداول.
٢- أصبح التحكم في التعليقات أسهل باستخدام قائمة الأوامر.

أهم مميزات إمبرس:
١- إضافة التحكم في زاوية الكائن المكرر وحفظها للاستخدام القادم.


لتنزيل هذه الإصدارة من هنا.

Fahadالأحد, 2017/07/30 - 9:29ص
disqus

إطلاق كتاب «نحو فهم أعمق لتقنيات HTML5

$
0
0
إطلاق كتاب «نحو فهم أعمق لتقنيات HTML5

Dive Into HTML5-cover.png

يواصل المهندس عبداللطيف إيمش عمله الدؤوب  في ترجمة  الكتب التقنية المتعلقة بتقنيات الوب الحديثة  واليوم يصدر  كتاب «نحو فهم أعمق لتقنيات HTML5» المترجم من كتاب «Dive Into HTML5» للمؤلف Mark Pilgrim والذي نَشَرتهُ O’Reilly لاحقًا باسم «HTML5: Up and Running».
حيث يقول: " لا يخفى على أحدٍ سطوع نجم لغة HTML5 وانتشار تطبيقاتها انتشارًا كبيرًا، إذ ذاع صيتها وأصبحت حديث الكثيرين لما تحتويه من تقنياتٍ مهمةٍ لتطبيقات الويب، فهي تتضمن كل ما يتعلق بتشغيل مقاطع الفيديو على صفحات الويب، وتوليد الرسوميات ديناميكيًا، وتحديد الموقع الجغرافي للمستخدم، وإتاحة استعمل تطبيقات الويب دون اتصال، إضافةً إلى تنظيمها لبنية المستند الهيكلية تنظيمًا دقيقًا يسهِّل تفسيرها من المتصفحات والبرمجيات الأخرى، والمزيد…
لذا جاء هذا الكتاب محاولًا تقديم مفاهيم HTML5 وتقنياتها وطرائق استخدامها إلى القارئ العربي، مدعمًا بأمثلة علميةٍ تسهّل توضيح الأفكار، وحاولتُ فيه توفير أحدث المعلومات عن دعم تلك التقنيات قدر المستطاع، وأعدت النظر في بعض الفصول لتناسب التغييرات التي طرأت حديثًا. "

ينقسم الكتاب إلى أحد عشر فصلًا وهذه عناوين أبرز الفصول:
    لمحة تاريخية عن HTML
    اكتشاف دعم ميزات HTML5
    البنية الهيكلية لمستندات HTML5
    الرسم عبر العنصر canvas
    الفيديو
    تحديد الموقع الجغرافي
    التخزين المحلي
    تطبيقات الويب التي تعمل دون اتصال
    النماذج في HTML5
    البيانات الوصفية
    التعامل مع تأريخ المتصفح
  الكتاب مرخص بموجب رخصة المشاع الإبداعي نسب المُصنَّف - الترخيص بالمثل 4.0 (CC BY-SA 4.0). شعار HTML5 والشعارات البقية مرخصة برخصة المشاع الإبداعي CC BY 3.0.

لتنزيل هذا الكتاب:اضغط هنا.


يمكنك الاطلاع أيضًا على الكتب الأخرى التي عمل عليها عبد اللطيف ايمش:
- تعلم البرمجة بلغة PHP
- سطر أوامر لينكس
-دليل إدارة خواديم أوبنتو
- تعلم JavaScript
- تعلم jQuery

Fahadالثلاثاء, 2017/08/15 - 10:32م
disqus

مدخل إلى الحوسبة المتوازية

$
0
0
مدخل إلى الحوسبة المتوازية

المؤلف:بليز بارني (Blaise Barney)، مختبر لورانس ليفرمور الوطني، ترجمة زكرياء المهداوي.

ملخص

هذا هو البرنامج التعليمي الأول في ورشة " بدء العمل على حوسبة ليفرمور". وليس الغرض منه سوى تقديم نظرة عامة وسريعة جدا عن الموضوع الواسع والشامل للحوسبة المتوازية( Parallel Computing)، وكمقدمة للدروس اللاحقة. وعلى هذا النحو، فإنه سيغطي أساسيات الحوسبة المتوازية، وهو موجه فقط لمن يود التعرف على هذا الموضوع والذي يخطط لحضور درس واحد أو أكثر من الدروس الأخرى في هذه الورشة. إنه غير موجه لتغطية البرمجة المتوازية بشكل متعمق، لأن هذا يتطلب وقتا أطول بكثير. يبدأ البرنامج التعليمي بمناقشة حول الحوسبة المتوازية - ما هي استخداماتها وكيف، تليها مناقشة حول المفاهيم والمصطلحات المرتبطة بالحوسبة المتوازية. ثم استكشاف مواضيع بنيات الذاكرة المتوازية ونماذج البرمجة. وتتبع هذه المواضيع سلسلة من المناقشات العملية حول عدد من القضايا المعقدة والمتعلقة بتصميم وتنفيذ برامج متوازية. ويختتم البرنامج التعليمي بعدة أمثلة عن كيفية موازاة البرامج التسلسلية البسيطة.

جدول المحتويات

    1. ملخص
    2. نظرة عامة
        1. ما هي الحوسبة المتوازية؟
        2. لماذا استخدام الحوسبة المتوازية؟
        3. من يستعمل الحوسبة المتوازية؟
    3. المفاهيم والمصطلحات
        1. بنية الحاسب لـ فون نيومان
        2. تصنيف فلين الكلاسيكي
        3. بعض المصطلحات المتوازية العامة
        4. حدود وتكاليف البرمجة المتوازية
    4. بنيات ذاكرة الحاسوب المتوازية
        1. الذاكرة المشتركة
        2. الذاكرة الموزعة
        3. الذاكرة المشتركة-الموزعة الهجينة
    5. نماذج البرمجة المتوازية
        1. نظرة عامة
        2. نموذج الذاكرة المشتركة
        3. نموذج الخيوط
        4. الذاكرة الموزعة / نموذج تمرير الرسالة
        5. نموذج البيانات المتوازي
        6. النموذج الهجين
        7. SPMD وMBF
    6. تصميم البرامج المتوازية
        1. الموازاة اليدوية مقابل الموازاة التلقائية
        2. فهم المشكلة والبرنامج
        3. التجزئة
        4. الاتصالات
        5. المزامنة
        6. تبعيات البيانات
        7. موازنة التحميل
        8. الحبوبية
        9. I / O
        10. التصحيح
        11. ضبط وتحليل الأداء
    7. أمثلة موازية
        1. معالجة مصفوفة
        2. حساب  PI
        3. معادلة الحرارة البسيطة
        4. معادلة الموجة 1-D
    8. المراجع والمزيد من المعلومات

نظرة عامة

ما هي الحوسبة المتوازية (Parallel Computing)؟

    • الحوسبة التسلسلية (Serial Computing)


    • عادة، تكتب البرمجيات من أجل حوسبة تسلسلية حيث
        ◦ تقسم المشكلة إلى سلسلة منفصلة من التعليمات
        ◦ تنفذ التعليمات بالتتابع واحدة تلو الأخرى
        ◦ تنفذ التعليمات على معالج واحد
        ◦ يمكن تنفيذ تعليمة واحدة فقط خلال أي لحظة من الزمن


Serial computing
مثلا :

Serial computing

    • الحوسبة المتوازية


    • يُقصد بالحوسبة المتوازية، في أبسط معانيها، الاستخدام المتزامن لموارد حساب متعددة لحل مشكلة حسابية
        ◦ تقسم المشكلة إلى أجزاء منفصلة يمكن حلها في وقت واحد
        ◦ تقسم أيضا كل جزء إلى سلسلة من التعليمات
        ◦ تنفذ تعليمات كل جزء في وقت واحد على معالجات مختلفة
        ◦ تستخدم آلية شاملة للرقابة / التنسيق
Parallel computing
مثلا :
Parallel computing
    • يجب أن تكون المشكلة الحسابية قادرة على:
        ◦ قابلة للتقسيم إلى قطع عمل منفصلة والتي يمكن حلها أو تنفيذها في وقت واحد؛
        ◦ أن يتم تنفيذ تعليمات البرنامج المتعددة في أي لحظة من الزمن؛
        ◦ أن تحل في أقل وقت مع موارد حساب متعددة بالمقارنة مع مورد حساب واحد.
    • موارد الحساب عادة ما تكون:
        ◦ جهاز حاسوب واحد مع معالجات/أنوية متعددة
        ◦ عدد هائل من مثل هذه الحواسيب متصلة بشبكة

    • الحواسيب المتوازية (Parallel Computers)


    • تعتبر في يومنا هذا جميع أجهزة الحاسوب المستقلة تقريبا متوازية من منظور الأجهزة
        ◦ وحدات متعددة الوظائف (المخبأة أو ذاكرة التخزين المؤقت L1 – L1 cache، المخبأة أو ذاكرة التخزين المؤقت L2 – L2 cache ، فرع - branch، الجلب المسبق - prefetch، فك شفرة - decode، الفاصلة العائمة - floating-point، معالجة الرسومات (GPU)، عدد صحيح - integer، وما إلى ذلك)
        ◦ وحدات/أنوية التنفيذ المتعددة
        ◦ خيوط (threads) الأجهزة المتعددة

IBM BG/Q Compute Chip with 18 cores (PU) and 16 L2 Cache units (L2)
    • تربط الشبكات بين العديد من الحواسب المستقلة (عقود - nodes) لإنشاء عناقيد حواسيب متوازية كبيرة


    • على سبيل المثال، يظهر الرسم التخطيطي أسفله مجموعة حواسيب متوازية LLNL نموذجية
        ◦ كل عقدة حساب هو حاسوب متواز متعدد المعالجات في حد ذاته
        ◦ تربط عقود حساب متعددة فيما بينها بواسطة شبكة ذات عرض حزمة لانهائي (Infiniband)
        ◦ تستخدم العقود ذات الغرض الخاص، وكذلك متعددة المعالجات لأغراض أخرى

    • أغلبية أجهزة الحواسيب المتوازية الكبيرة العالمية (الحواسيب الفائقة - supercomputers) هي مجموعات من الأجهزة التي تنتجها حفنة من (معظم) البائعين المعروفين.

المصدر: Top500.org

لماذا استخدام الحوسبة المتوازية؟


    • العالم الحقيقي متواز على نطاق واسع:
    • في العالم الطبيعي، العديد من الأحداث المعقدة والمترابطة تحدث في نفس الوقت، ولكن ضمن تسلسل زمني.
    • بالمقارنة مع الحوسبة التسلسلية، تعتبر الحوسبة المتوازية أكثر ملاءمة للنمذجة، ولمحاكاة وفهم، ظواهر العالم الحقيقي المعقدة.
    • تخيل، على سبيل المثال، نمذجة هذه الظواهر بشكل متسلسل:


    • الأسباب الرئيسية:
    • توفير الوقت و/أو المال:
        ◦ نظريا، يؤدي إلقاء المزيد من الموارد في مهمة ما إلى تقصير الوقت اللازم لإنجازها، مع توفير محتمل للتكاليف.
        ◦ يمكن تركيب الحواسيب المتوازية من مكونات السلع الأساسية الرخيصة.

    • حل مشاكل معقدة إضافية/كبيرة:
        ◦ تعد الكثير من المشاكل جد كبيرة و/أو معقدة حيث أنه من غير العملي أو من المستحيل حلها على جهاز كمبيوتر واحد، وخاصة إذا ما نظرنا إلى ذاكرة الكمبيوتر المحدودة.
        ◦ مثال: "مشاكل التحدي الكبرى" (en.wikipedia.org/wiki/Grand_Challenge) التي تتطلب بيتافلوبس (PetaFLOPS) و بيتابيتس (PetaBytes) من موارد الحوسبة.
        ◦ مثال: تعالج محركات بحث الويب / قواعد بيانات الملايين من المعاملات في كل ثانية.

    • توفير التزامن (CONCURRENCY):
        ◦ يمكن لمورد حساب واحد القيام بأمر واحد فقط في نفس الوقت. بينما يمكن للعديد من موارد الحساب أن تفعل أشياء كثيرة في آن واحد.
        ◦ مثال: توفر الشبكات التعاونية مكانا عالميا حيث يمكن للناس من جميع أنحاء العالم أن يجتمعوا ويضطلعوا بعمل "فعليا".

    • الاستفادة من الموارد غير المحلية:
        ◦ استخدام موارد حساب على شبكة منطقة واسعة، أو حتى الإنترنت عندما تكون موارد الحوسبة المحلية نادرة أو غير كافية.
        ◦ مثال: تمتلك SETI@home (setiathome.berkeley.edu) أكثر من 1.6 مليون مستخدم في كل بلد تقريبا في العالم. (يونيو 2017).
        ◦ مثال: تمتلك Folding@home (folding.stanford.edu) أكثر من 1.8 مليون مساهم عالميا (يونيو 2017)

    • استخدام أفضل للأجهزة المتوازية الكامنة (UNDERLYING PARALLEL HARDWARE):
        ◦ تعتبر أجهزة الحاسوب الحديثة، وحتى أجهزة الحاسوب المحمول، متوازية في بنيتها مع معالجات/أنوية متعددة.
        ◦ يوجه البرنامج المتوازي خصيصا للأجهزة المتوازية ذات الأنوية المتعددة، الخيوط، الخ.
        ◦ في معظم الحالات، تعمل البرامج التسلسلية المشتغلة على أجهزة الحاسوب الحديثة على "تبديد" قدرة الحوسبة المحتملة.

Intel Xeon processor with 6 cores and 6 L3 cache units
    • المستقبل
    • خلال العشرين سنة الماضية، تظهر بوضوح الاتجاهات التي تشير إليها الشبكات الأسرع من أي وقت مضى، والأنظمة الموزعة، وبنيات الحواسيب متعددة المعالجات (حتى على مستوى سطح المكتب) أن التوازي هو مستقبل الحوسبة.
    • في نفس هذه الفترة الزمنية، كانت هناك زيادة تفوق 500,000 مرة في أداء الحاسوب الفائق، مع عدم وجود نهاية في الأفق حاليا.
    • السباق هو بالفعل على الحوسبة بسرعة إكساسكيل (Exascale)!
        ◦ إكسافلوب (Exaflop) = 1018 حساب في الثانية

المصدر: Top500.org

من يستعمل الحوسبة المتوازية؟


    • العلوم والهندسة
    • تاريخيا، اعتبرت الحوسبة المتوازية كونها "مكرّسة للحوسبة الفائقة"، وقد استخدمت لنمذجة مشاكل صعبة في العديد من مجالات العلوم والهندسة:
    • الهندسة الميكانيكية - من الأطراف الاصطناعية إلى المركبات الفضائية
    • الهندسة الكهربائية، تصميم الدوائر، الإلكترونيات الدقيقة
    • علم الحاسوب، الرياضيات
    • الدفاع، الأسلحة

    • الغلاف الجوي، الأرض، البيئة
    • الفيزياء - التطبيقية، النووية، الجسيمات، المادة المكثفة، الضغط المرتفع، الانصهار، الضوئيات
    • العلوم البيولوجية، التكنولوجيا الحيوية، علم الوراثة
    • الكيمياء، العلوم الجزيئية
    • الجيولوجيا، علم الزلازل


    • الأغراض الصناعية والتجارية
    • اليوم، توفر التطبيقات التجارية قوة دافعة متساوية أو كبيرة جدا في سبيل تطوير أجهزة الحاسوب فائقة السرعة. وتتطلب هذه التطبيقات معالجة كميات كبيرة من البيانات بطرق متطورة. مثلا:
    • النمذجة المالية والاقتصادية
    • إدارة الشركات الوطنية والمتعددة الجنسيات
    • الرسومات المتقدمة والواقع الافتراضي، خاصة في صناعة الترفيه
    • الفيديو الشبكي وتقنيات الوسائط المتعددة
    • بيئات العمل التعاونية
    • "البيانات الضخمة (Big Data)"، وقواعد البيانات، واستخراج البيانات
    • التنقيب عن النفط
    • محركات البحث على شبكة الإنترنت، خدمات الأعمال التجارية على شبكة الإنترنت
    • التصوير الطبي والتشخيص
    • التصميم الصيدلاني


    • التطبيقات العالمية
    • يجري حاليا استخدام الحوسبة المتوازية على نطاق واسع في جميع أنحاء العالم، وذلك في طائفة واسعة من التطبيقات.

 
المصدر: Top500.org

المفاهيم والمصطلحات

تصميم فون نيومان (von Neumann Architecture)


    • سمي باسم عالم الرياضيات الهنغاري العبقري جون فون نيومان أول من ألف المتطلبات العامة لجهاز الحاسوب الإلكتروني في أوراقه عام 1945.
    • ويعرف أيضا باسم "حاسوب البرامج المخزَّنة (stored-program computer)" – يحتفظ بكل من تعليمات البرنامج والبيانات في الذاكرة الإلكترونية. و يختلف عن أجهزة الحاسوب السابقة التي تمت برمجتها من خلال "الأسلاك الصلبة - hard wiring".
    •

جون فون نيومان1940
(المصدر: أرشيف لانل)
    • منذ ذلك الحين، اتبعت جميع الحواسيب تقريبا هذا التصميم الأساسي:


    • تتألف من أربعة مكونات رئيسية هي:
        ◦ الذاكرة
        ◦ وحدة التحكم
        ◦ وحدة المنطق الحسابية
        ◦ الإدخال / الإخراج
    • القراءة / الكتابة، تستخدم ذاكرة الوصول العشوائي لتخزين كل من تعليمات البرنامج والبيانات
    •  تعليمات البرنامج هي بيانات مبرمجة تخبر الحاسوب بالقيام بشيء ما
    • البيانات هي ببساطة معلومات ستستخدم من قبل البرنامج
    • تقوم وحدة التحكم بجلب التعليمات/البيانات من الذاكرة، و تفك شفرة التعليمات ثم تقوم بتنسيق العمليات لإنجاز المهمة المبرمجة تتابعيا.
    • تقوم وحدة الحساب بعمليات حسابية أساسية
    • الإدخال/الإخراج (Input/Output) هو واجهة المشغل البشري
    • المزيد من المعلومات عن إنجازاته الرائعة الأخرى: http://en.wikipedia.org/wiki/John_von_Neuman
    • ماذا في ذلك؟ من يهتم؟
        ◦ حسنا، ما تزال أجهزة الحاسوب المتوازية تتبع هذا التصميم الأساسي، فقط ضاعفت الوحدات. بينما ظلت البنية الأساسية هي نفسها.

التصنيف الكلاسيكي لـ فلين (Flynn)


    • هناك طرق مختلفة لتصنيف أجهزة الحاسوب المتوازية. الأمثلة متاحة هنا.
    • واحدة من التصنيفات المستخدمة على نطاق واسع، منذ عام 1966، تسمى تصنيف فلين.
    • يميز تصنيف فلين بنيات الحاسوب متعددة المعالجات وفقا للكيفية التي يمكن أن تصنف وفقها على طول البعدين المستقلين لتدفق التعليمات (Instruction Stream) ولتدفق البيانات (Data Stream). لكل بعد من هذه الأبعاد حالة واحدة فقط من الحالتين الممكنتين: واحدة (Single) أو متعددة (Multiple).
    • تحدد المصفوفة أدناه التصنيفات الأربع الممكنة وفقا لفلين:

    • تعليمات وحيدة، بيانات وحيدة (SISD):


    • جهاز حاسوب تسلسلي (غير متوازي)
    • تعليمات وحيدة: ينفذ تدفق تعليمات واحد فقط من قبل وحدة المعالجة المركزية (CPU) على مدار كل دورة معالجة واحدة
    • بيانات وحيدة: تستخدم تدفق بيانات وحيدة فقط كمدخلات على مدار كل دورة معالجة واحدة
    • تنفيذ حتمي
    • هذا هو أقدم نوع من الحواسيب
    • أمثلة: أجهزة الحاسوب الكبيرة من الجيل الأقدم، أجهزة الحاسوب الصغيرة، محطات العمل وأجهزة الحاسوب الشخصية أحادية المعالج/النواة.

 

UNIVAC1

IBM 360

CRAY1

CDC 7600

PDP1

Dell Laptop

    • تعليمات وحيدة، بيانات متعددة (SIMD):


    • نوع من أجهزة الحاسوب المتوازية
    • تعليمات وحيدة: تنفذ جميع وحدات المعالجة نفس التعليمات في أي دورة معالجة معينة
    • بيانات متعددة: يمكن لكل وحدة معالجة أن تعمل على عنصر بيانات مختلف
    • الأنسب للمشاكل المتخصصة التي تتميز بدرجة عالية من الانتظام، مثل معالجة الرسومات/الصور.
    • متزامن (بانتظام) ومنفذ حتمي
    • صنفان اثنان: مصفوفات المعالج وخطوط الأنابيب المتجهة
    • أمثلة:
        ◦ مصفوفات المعالج: Thinking Machines CM-2, MasPar MP-1 & MP-2, ILLIAC IV
        ◦ خطوط الأنابيب المتجهة: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10
    • معظم أجهزة الحاسوب الحديثة، وخاصة تلك التي تمتلك وحدات معالج الرسومات (GPUs) تستخدم تعليمات SIMD ووحدات التنفيذ.

 

ILLIAC IV

MasPar

        

Cray X-MP

Cray Y-MP

Thinking Machines CM-2

Cell Processor (GPU)

    • تعليمات متعددة، بيانات وحيدة (MISD):


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

    • تعليمات متعددة، بيانات متعددة (MIMD):


    • نوع من أجهزة الحاسوب المتوازية
    • تعليمات متعددة:  قد يقوم كل معالج بتنفيذ تدفق تعليمات مختلف
    • بيانات متعددة: قد يعمل كل معالج مع تدفق بيانات مختلف
    • يمكن أن يكون التنفيذ متزامنا أو غير متزامن، حتمي أو غير حتمي
    • حاليا، هو النوع الأكثر شيوعا من أجهزة الحاسوب المتوازية – توجد معظم الحواسيب الفائقة ضمن هذه الفئة.
    • أمثلة: معظم الحواسيب الفائقة الحالية، عناقيد (clusters) و"شبكات" أجهزة حاسوب متوازية مشبكة، أجهزة حاسوب SMP متعددة المعالجات، وأجهزة حاسوب شخصية متعددة الأنوية.
    • ملاحظة: تشمل أيضا العديد من بنيات MIMD المكونات الفرعية التنفيذية SIMD


IBM POWER5

HP/Compaq Alphaserver

Intel IA32

AMD Opteron

Cray XT3

IBM BG/L

بعض المصطلحات العامة المتوازية


    • مثل كل شيء آخر، الحوسبة المتوازية لها "لغة اصطلاحية" خاصة بها. وقد تم جرد بعض من المصطلحات الأكثر شيوعا والمرتبطة بالحوسبة المتوازية أسفله.
    • ستتم مناقشة معظم هذه المصطلحات بمزيد من التفصيل في وقت لاحق.

الحوسبة الفائقة / الحوسبة عالية الأداء - High Performance Computing (HPC)
تستخدم أسرع وأكبر أجهزة الحاسوب العالمية لحل المشاكل الكبيرة.


العقدة - Node
عبارة عن "حاسوب في صندوق" مستقل من وحدات معالجة مركزية/معالجات/أنوية متعددة، ذاكرة، واجهات الشبكة، وما إلى ذلك. وتشبك العقد معا لتكون حاسوبا فائقا.


وحدة المعالجة المركزية CPU / المقبس / المعالج / النواة - CPU / Socket / Processor / Core
هذا يختلف اعتمادا على من تتحدث إليه. في الماضي، كانت وحدة المعالجة المركزية (CPU) مكون التنفيذ الوحيد للحاسوب. ثم، دمجت وحدات معالجة مركزية متعددة في عقدة. بعد ذلك، قسمت وحدات المعالجة المركزية الفردية إلى عدة "أنوية"، كل منها أصبحت وحدة تنفيذ وحيدة. تسمى وحدات المعالجة المركزية مع الأنوية المتعددة أحيانا "مقابس" – تعتمد على المورد. والنتيجة هي عقدة ذات وحدات معالجة مركزية متعددة، تحتوي كل منها على عدة أنوية. يخلط بين التسميات في بعض الأحيان. أتساءل لماذا؟


المهمة - Task
قسم منفصل منطقيا من العمل الحسابي. والمهمة هي عادة برنامج أو شبه برنامج مجموعة من التعليمات التي تنفذ بواسطة معالج. ويتألف البرنامج المتوازي من مهام متعددة تشتغل على معالجات متعددة.


المواردة - Pipelining
تقسيم مهمة إلى خطوات تؤديها وحدات المعالج المختلفة، مع مدخلات تتدفق من خلالها، يشبه بشكل كبير خط التجميع؛ نوع من الحوسبة المتوازية.


الذاكرة المشتركة - Shared Memory
من وجهة نظر دقيقة للأجهزة، فهي تصف بنية الحاسوب حيث لدى جميع المعالجات وصول مباشر (قائم على الناقل عادة) إلى الذاكرة الملموسة المشتركة. ومن الناحية البرمجية، فإنها تصف نموذجا حيث كل المهام المتوازية لها نفس "صورة" الذاكرة ويمكنها أن تعنون وتلج مباشرة نفس مواقع الذاكرة المنطقية بغض النظر عن مكان وجود الذاكرة الملموسة فعلا.


المعالج المتعدد المتناظر - Symmetric Multi-Processor (SMP)
بنية جهاز الذاكرة المشتركة حيث تشترك المعالجات المتعددة في مساحة عنوان واحد ولديها وصول متساو إلى جميع الموارد.


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


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


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


الحبوبية - Granularity
في الحوسبة المتوازية، يقصد بالحبوبية ذلك المقياس النوعي للحساب بالنسبة للاتصالات.
    • خشنة: يتم إجراء كميات كبيرة نسبيا من العمل الحسابي بين أحداث الاتصالات
    • دقيقة: يتم إجراء كميات صغيرة نسبيا من العمل الحسابي بين أحداث الاتصالات

التسريع المرصود - Observed Speedup
يعرف التسريع المرصود لشفرة والذي تتم موازاته على النحو التالي:

وقت التنفيذ التسلسلي على مدار الساعة
-----------------------------------وقت التنفيذ المتوازي على مدار الساعة


هو واحد من أبسط وأكثر المؤشرات استخداما وعلى نطاق واسع لأداء برنامج متوازي.


تكلفة التوازي - Parallel Overhead
هو مقدار الوقت اللازم لتنسيق المهام المتوازية، مقابل القيام بعمل مستفاد منه. يمكن أن تشمل تكلفة التوازي  عوامل مثل:
    • وقت بدء المهمة
    • التزامنات
    • اتصالات البيانات
    • تكلفة البرامج تفرضها اللغات المتوازية والمكتبات وأنظمة التشغيل وما إلى ذلك.
    • وقت إنهاء المهمة


التوازي الضخم - Massively Parallel
يشير إلى الأجهزة التي تؤلف نظام مواز معين - تملك العديد من عناصر المعالجة. يظل معنى "العديد" يتزايد، ولكن حاليا، أكبر أجهزة الكمبيوتر المتوازية تتكون من عناصر المعالجة تحسب من مئات الآلاف إلى الملايين.


التوازي المربك - Embarrassingly Parallel
حل العديد من المهام المماثلة، ولكنها مستقلة في آن واحد؛ وليس هناك حاجة إلى التنسيق بين المهام.


قابلية التوسع - Scalability
تشير إلى قابلية نظام متوازي (أجهزة و/أو برمجيات) في إثبات الزيادة التناسبية في التسريع المتوازي مع إضافة المزيد من الموارد. وتشمل العوامل التي تساهم في قابلية التوسع:
    • الأجهزة – خاصة حيز نطاقات ذاكرة وحدة المعالجة المركزية وخصائص اتصالات الشبكة
    • خوارزمية التطبيق
    • تكلفة التوازي ذات الصلة
    • مميزات تطبيقك الخاص

حدود وتكاليف البرمجة المتوازية

    • قانون أمدال (Amdahl):


    • ينص قانون أمدال على أن تسارع البرنامج المحتمل يعرف بأنه أجزاء الشفرة (P) التي يمكن موازاتها:

 


     

    • إذا لم يكن بالإمكان موازاة الشفرة، فإن P=0 و speedup=1 (لا يوجد تسارع).
    • إذا تمت موازاة كل الشفرة، P=1 وسرعة غير منتهية (من الناحية النظرية).


    • إذا كان بالإمكان موازاة 50٪ من الشفرة، فإن الحد الأقصى speedup=2، وهذا يعني أنه سيتم تشغيل الشفرة مرتين أسرع.


    • بإدخال عدد من المعالجات التي تؤدي الى  توازي في العمل، يمكن صياغة العلاقة على النحو التالي:
حيث P = كسر التوازي، N = عدد المعالجات و S = الكسر التسلسلي.

    • وسرعان ما يصبح واضحا أن هناك حدودا لقابلية توسع الموازاة. فمثلا:

    • الاقتباس "الشهير": يمكنك قضاء العمر مدى الحياة للحصول على 95٪ من الشفرة الخاصة بك لتكون متوازية، ولن تحقق أبدا أفضل من تسريع بـ 20 مرة بغض النظر عن عدد المعالجات التي تستعملها في ذلك!
    • مع ذلك، تظهر بعض المشاكل زيادة الأداء بزيادة حجم المشكلة. فمثلا:

    • يمكننا زيادة حجم المشكلة عن طريق مضاعفة أبعاد الشبكة وخفض الخطوة الزمنية إلى النصف. وهذا يؤدي إلى أربعة أضعاف عدد نقاط الشبكة ومرتين عدد الخطوات الزمنية. ثم تبدو التوقيتات كالتالي:

    • تعد المشاكل التي تزيد من نسبة الوقت المتوازي بحجمها أكثر قابلية للتطوير من المشاكل التي لها نسبة الوقت المتوازي ثابتة.

    • تعقيد - Complexity:


    • تعتبر التطبيقات المتوازية، عموما، أكثر تعقيدا من نظيراتها من التطبيقات التسلسلية، وربما يكون بمعدل أسي. ليس فقط لان لديك تنفيذ لتدفقات من التعليمات المتعددة في نفس الوقت، ولكن لأنك تمتلك أيضا بيانات متدفقة بينها.
    • وتقاس تكاليف التعقيد في وقت البرمجة في كل جانب تقريبا من دورة تطوير البرمجيات:
    • التصميم
    • الترميز
    • التصحيح
    • الضبط
    • الصيانة
    • إن التمسك بممارسات تطوير البرمجيات "الجيدة" أمر ضروري عند العمل بتطبيقات متوازية - خاصة إذا كان  شخص ما سيعمل بجانبك على البرنامج.
 

    • قابلية النقل - Portability:


    • بفضل التوحيد القياسي في العديد من واجهات برمجة التطبيقات APIs مثل MPI وخيوط  POSIX وOpenMP، فإن قضايا قابلية النقل بالبرامج المتوازية ليست خطيرة كما في السنوات الماضية. ومع ذلك...
    • تطبق جميع قضايا النقل المعتادة المرتبطة بالبرامج التسلسلية على البرامج المتوازية. على سبيل المثال، إذا كنت تستخدم "تحسينات" المورد إلى Fortran، C أو C++، فستصبح قابلية النقل مشكلة.
    • على الرغم من وجود معايير لعدة واجهات برمجة التطبيقات، فإن عمليات التنفيذ تختلف في عدد من التفاصيل، وأحيانا في نقطة تتطلب تعديلات في الشفرة (الترميز) من أجل تحقيق قابلية النقل.
    • يمكن أن تساهم أنظمة التشغيل بدور رئيسي في قضايا قابلية نقل الشفرة.
    • تعد بنيات الأجهزة قابلة للتغيير بشكل كبير ويمكن أن تؤثر على قابلية النقل.


    • متطلبات الموارد - Resource Requirements:


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


    • قابلية التوسع - Scalability:


    • نوعان من قابلية التوسع قائمان على الوقت إلى الحل: التحجيم القوي والتحجيم الضعيف.
    • التحجيم القوي - Strong scaling:
    • يبقى حجم المشكلة الإجمالي ثابتا كلما تمت إضافة المزيد من المعالجات.
    • الهدف هو تشغيل نفس حجم المشكلة بشكل أسرع
    • يقصد بالتحجيم الكامل حل المشكلة في زمن 1/p (مقارنة بالتسلسل)
    • التحجيم الضعيف - Weak scaling:
    • يبقى حجم المشكلة لكل معالج ثابتا كلما تمت إضافة المزيد من المعالجات.
    • الهدف هو تشغيل مشكلة أكبر في نفس المدة الزمنية
    • يقصد بالتحجيم الكامل أن المشكلة Px تشتغل في نفس الوقت الذي يشتغل فيه معالج واحد
    • إن قدرة أداء برنامج متوازي على التوسع هي نتيجة لعدد من العوامل المترابطة. ببساطة، إن إضافة المزيد من المعالجات نادرا ما يكون هو الحل.
    • قد تكون للخوارزمية حدود متأصلة لقابلية التوسع. وفي مرحلة ما، يؤدي إضافة المزيد من الموارد إلى تقليل الأداء. وهذا حالة مشتركة في العديد من التطبيقات المتوازية.
    • تلعب عوامل الأجهزة دورا هاما في قابلية التوسع. أمثلة:
    • سعة نطاق ناقل ذاكرة وحدة المعالجة المركزية على آلة SMP
    • سعة نطاق شبكة الاتصالات
    • كمية الذاكرة المتاحة في أية آلة معينة أو مجموعة آلات
    • سرعة المعالج على مدار الساعة
    • يمكن لمكتبات الدعم المتوازي وبرامج النظم الفرعية أن تحد قابلية التوسع المستقلة لتطبيقك.

بنيات ذاكرة الحاسوب المتوازية

الذاكرة المشتركة - Shared Memory

    • الخصائص العامة


    • تختلف أجهزة الحاسوب المتوازية ذات الذاكرة المشتركة كثيرا، ولكنها تشترك عموما في قابلية جميع المعالجات في الوصول إلى كل الذاكرة كحيز عنوان عام.
    • يمكن أن تعمل العديد من المعالجات بشكل مستقل ولكنها تشترك في نفس موارد الذاكرة.
    • تكون التغييرات التي ينجزها معالج واحد في موقع الذاكرة مرئية لجميع المعالجات الأخرى.
    • تاريخيا، تم تصنيف آلات الذاكرة المشتركة إلى ذاكرة موحدة الوصول (UMA) وذاكرة غير موحدة الوصول (NUMA)، وذلك استنادا إلى أوقات الوصول إلى الذاكرة.


    • الذاكرة موحدة الوصول - Uniform Memory Access  (UMA)


    • تتمثل اليوم بشكل شائع من قبل الآلات المعالج المتعدد المتناظر (SMP)
    • معالجات متطابقة
    • وصول متساوي وأوقات وصول إلى الذاكرة
    • تسمى أحيانا ذاكرة موحدة الوصول متماسكة مخبأة (CC-UMA). ويقصد بمتماسكة مخبأة إنه إذا قام معالج واحد بتحديث موقع في الذاكرة المشتركة، فإن جميع المعالجات الأخرى تعلم التحديث. يتم تحقيق التماسك المخبأ على مستوى العتاد.

    • الذاكرة غير موحدة الوصول - Non-Uniform Memory Access (NUMA)


    • غالبا ما تُصنع عن طريق ربط مادي (فيزيائي) لاثنين أو أكثر من الآلات المعالج المتعدد المتناظرSMP
    • يمكن لآلة المعالج المتعدد المتناظرSMP الوصول مباشرة لذاكرة آلة المعالج المتعدد المتناظر SMP  أخرى.
    • ليس لكل المعالجات وقت وصول متساو إلى جميع الذاكرات
    • يعتبر الوصول إلى الذاكرة عبر الرابط أبطأ
    • إذا تم الحفاظ على التماسك المخبأ، حينها يمكن أيضا أن تسمى ذاكرة غير موحدة الوصول متماسكة مخبأة (CC-NUMA)


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

الذاكرة الموزعة - Distributed Memory

    • الخصائص العامة


مثل أنظمة الذاكرة المشتركة،  تتنوع أنظمة الذاكرة الموزعة كثيرا ولكنها تتقاسم مميزات مشتركة. وتتطلب أنظمة الذاكرة الموزعة شبكة اتصالات للتوصيل بين الذاكرة والمعالج.

    • تمتلك المعالجات ذاكرة محلية خاصة بها. ولا يتم تعيين عناوين الذاكرة في معالج واحد إلى معالج آخر، لذلك ليس هناك مفهوم حيز عنوان عام عبر جميع المعالجات.
    • ولأن كل معالج له ذاكرة محلية خاصة به، فإنه يعمل بشكل مستقل. إذ ليست للتغييرات التي يجريها على ذاكرته المحلية أي تأثير على ذاكرة المعالجات الأخرى. وبالتالي، فإن مفهوم التماسك المخبأ لا ينطبق.
    • عندما يحتاج المعالج إلى الوصول إلى البيانات في معالج آخر، فإنه عادة ما يكون من مهمة المبرمج لتحديد صريح لكيفية وزمن توصيل البيانات. كما يعد كذلك التزامن بين المهام من مسؤولية المبرمج.
    • تختلف "معمارية" الشبكة المستخدمة لنقل البيانات بشكل كبير، على الرغم من أنها يمكن أن تكون بسيطة مثل شبكة الإيثرنت.
    • الإيجابيات
    • تعد الذاكرة قابلة للتوسع مع عدد المعالجات. حيث كلما زاد عدد المعالجات ازداد حجم الذاكرة بشكل تناسبي.
    • يمكن لكل معالج أن يصل بسرعة إلى الذاكرة الخاصة به دون تدخل ودون تكلفة المتكبدة مع محاولة الحفاظ على التماسك المخبأ العام.
    • فعالية التكلفة: يمكن استخدام السلع، والمعالجات الجاهزة والتشبيك.
    • السلبيات
    • المبرمج هو المسؤول عن العديد من التفاصيل المرتبطة باتصال البيانات بين المعالجات.
    • قد يكون من الصعب تعيين هياكل البيانات المتوفرة، استنادا على الذاكرة الإجمالية، إلى تنظيم الذاكرة هذا.
    • أوقات الذاكرة غير موحدة الوصول – تستغرق البيانات الموجودة على عقدة بعيدة وقتا أطول للوصول مقارنة بالبيانات المحلية للعقدة.

الذاكرة المشتركة-الموزعة الهجينة - Hybrid Distributed-Shared Memory

    • الخصائص العامة


    • تستخدم اليوم أكبر وأسرع أجهزة الحاسوب في العالم معمارية الذاكرة المشتركة والموزعة على حد سواء.

    • يمكن أن يكون مكون الذاكرة المشتركة جهاز ذاكرة مشترك و/أو وحدات معالجة الرسومات (GPU).
    • مكون الذاكرة الموزعة عبارة عن تشبيك للعديد من أجهزة وحدات معالجة الرسومات/ذاكرات مشتركة، والتي تعرف فقط عن الذاكرة الخاصة بها – وليس عن ذاكرة على جهاز آخر. لذلك، يتطلب الأمر شبكة اتصالات لنقل البيانات من جهاز إلى آخر.
    • ويبدو أن الاتجاهات الحالية تشير إلى أن هذا النوع من بنيات الذاكرة سيستمر في الانتشار وسيزداد في الحوسبة الفائقة في المستقبل المنظور.
    • الإيجابيات والسلبيات
    • كل شيء مشترك بين بنية كل من الذاكرة المشتركة والذاكرة الموزعة.
    • زيادة قابلية التطوير هي ميزة هامة لديها
    • زيادة تعقيد المبرمج هي سلبية مهم لديها

نماذج البرمجة المتوازية

نظرة عامة


    • هناك العديد من نماذج البرمجة المتوازية المستخدمة اليوم:
        ◦ الذاكرة المشتركة (بدون خيوط)
        ◦ الخيوط
        ◦ الذاكرة الموزعة / تمرير الرسالة
        ◦ البيانات المتوازية
        ◦ الهجين
        ◦ برنامج واحد متعدد البيانات (SMPD)
        ◦ برامج متعددة ذات بيانات متعددة (MPMD )

    • توجد نماذج البرمجة المتوازية كتجريد فوق معمارية الأجهزة والذاكرات.
    • على الرغم من أنه قد لا يبدو واضحا، إلا أن هذه النماذج ليست محددة لنوع خاص من الأجهزة أو معماريات الذاكرة. في الواقع، أي من هذه النماذج يمكن (نظريا) أن تنفذ على الأجهزة الأساسية. وسنناقش أدناه مثالان من الماضي.

نموذج ذاكرة مشتركة على جهاز ذاكرة موزعة:


مقاربة Kendall Square Research (KSR) ALLCACHE، وزعت ذاكرة جهاز فيزيائيا عبر أجهزة مشبكة، ولكنها تبدو للمستخدم كحيز عنوان عام لذاكرة مشتركة واحدة. وبشكل عام، يشار إلى هذه المقاربة باسم "الذاكرة المشتركة الافتراضية".

نموذج ذاكرة موزعة على جهاز ذاكرة مشتركة:


واجهة تمرير الرسالة  Message Passing Interface (MPI) على SGI Origin 2000. تستخدم  SGI Origin 2000 النوع CC-NUMA من بنية الذاكرة المشتركة، حيث تملك كل مهمة لديها إمكانية الوصول المباشر إلى حيز العنوان العام عبر جميع الأجهزة. ومع ذلك، فإن قابلية إرسال واستقبال الرسائل باستخدام MPI، كما هو الحال عادة على شبكة من أجهزة الذاكرة الموزعة، تكون منفذة ومستخدمة بشكل مشترك.

    • أي نموذج يجب استخدامه؟ هذا غالبا ما يكون توليفة بين ما هو متاح و ما هو اختيار شخصي. لا يوجد نموذج "أفضل"، على الرغم من أن هناك بالتأكيد تطبيقات أفضل لبعض النماذج من غيرها.
    • تصف الأقسام التالية كل من النماذج المذكورة أعلاه، وتناقش أيضا بعض عمليات التنفيذ الفعلية.

نموذج الذاكرة المشتركة (بدون خيوط)


    • تشارك العمليات/المهام حيز عنوان مشترك، في نموذج البرمجة هذا، والذي تقوم بقراءته وكتابته بشكل غير متزامن.
    • تستخدم آليات مختلفة مثل الأقفالlocks /منظم المرورsemaphores  للتحكم في الوصول إلى الذاكرة المشتركة، وحل التنازعات ولمنع حالة التعارضات والتوقفات التامة.
    • قد يكون هذا أبسط نموذج برمجة متوازية.
    • ميزة هذا النموذج من وجهة نظر المبرمج هي أن مفهوم "ملكية" البيانات غير موجودة، لذلك ليس هناك حاجة لتحديد اتصالات البيانات بين المهام بوضوح. وتمتلك جميع العمليات رؤية ووصول متساو إلى الذاكرة المشتركة. ويمكن في كثير من الأحيان تبسيط تطوير البرامج.
    • من العوائق الهامة من حيث الأداء أن فهم وإدارة موقع البيانات يصبح أكثر صعوبة:
        ◦ الحفاظ على البيانات المحلية في العملية التي تعمل على ذلك تحافظ على الوصول إلى الذاكرة، وتحديثات المخبأة وحركة مرور الناقل التي تحدث عندما تستخدم العديد من العمليات نفس البيانات.
        ◦ لسوء الحظ، يعد ضبط موقع البيانات صعب الفهم وقد يكون خارج نطاق التحكم لدى المستخدم العادي.
    • آليات تنفيذ هذا النموذج
    • على أجهزة الذاكرة المشتركة القائمة بذاتها، وأنظمة التشغيل الأصلية، توفر مترجمات اللغة و/أو العتاد الدعم اللازم لبرمجة الذاكرة المشتركة. فعلى سبيل المثال، يوفر معيار POSIX  واجهة برمجة تطبيق (API) لاستخدام الذاكرة المشتركة، بينما يوفر UNIX قطع الذاكرة المشتركة (shmget، shmat، shmctl، الخ).
    • على أجهزة الذاكرة الموزعة، توزع الذاكرة فيزيائيا عبر شبكة من الأجهزة، ولكن تصبح عامة عبر الأجهزة والبرمجيات المتخصصة. مجموعة متنوعة من آليات التنفيذ لـ SHMEM متاحة راجع: http://en.wikipedia.org/wiki/SHMEM.


نموذج الخطوط - Threads Model


    • هذا النموذج البرمجي هو نوع من برمجة الذاكرة المشتركة.
    • في نموذج الخيوط للبرمجة المتوازية، يمكن لعملية واحدة " ثقيلة الوزن" أن تكون لديها عمليات متعددة "خفيفة الوزن"، ومسارات تنفيذ متزامنة.
    • على سبيل المثال:
        ◦ تتم جدولة البرنامج الرئيسي a.out ليشتغل من قبل نظام التشغيل الأصلي. ويقوم a.out بتحميل واكتساب كل موارد النظام والمستخدمين اللازمة لتشغيله. هذه هي عملية "الوزن الثقيل".
        ◦ يؤدي a.out بعض الأعمال التسلسلية، ثم يقوم بإنشاء عدد من المهام (الخيوط) التي يمكن جدولتها وتشغيلها من قبل نظام التشغيل بشكل متزامن.
        ◦ يحتوي كل خيط على بيانات محلية، ولكنه أيضا، يشارك الموارد الكاملة لـ a.out. وهذا يوفر التكلفة المرتبطة بتكرار موارد برنامج لكل خيط ("خفيفة الوزن"). ويستفيد كل خيط أيضا من عرض ذاكرة إجمالية لأنه يشارك مساحة الذاكرة لـ a.out.
        ◦ يمكن وصف عمل الخيوط بشكل أفضل كنهج فرعي ضمن البرنامج الرئيسي. حيث يمكن لأي خيط تنفيذ أي نهج فرعي في نفس الوقت كما بالنسبة للخيوط الأخرى.
        ◦ تتواصل الخيوط مع بعضها البعض من خلال الذاكرة الإجمالية (تحديث مواقع العناوين). ويتطلب هذا إنشاء تزامن للتأكد من أنه لا يتم تحديث نفس العنوان العام لأكثر من خيط واحد في أي وقت.
        ◦ يمكن للخيوط أن تأتي وتذهب، ولكن يظل a.out حاضرا لتوفير الموارد المشتركة اللازمة إلى غاية اكتمال التطبيق.

    • تطبيقات - Implementations
    • من منظور البرمجة، تشتمل عمليات التنفيذ للخيوط عادة على:
        ◦ مكتبة من النهج الفرعية التي يتم استدعاءها من داخل شفرة المصدر المتوازي
        ◦ مجموعة من توجيهات المترجم البرمجي المضمنة ضمن شفرة المصدر التسلسلي أو ضمن شفرة المصدر المتوازي
وفي كلتا الحالتين، يكون المبرمج هو المسؤول عن تحديد التوازي (على الرغم من أنه يمكن لمترجمات اللغة أن تقدم المساعدة أحيانا).
    • لا تعد عمليات تنفيذ الخيوط جديدة في الحوسبة. فتاريخيا، قام موردو الأجهزة بتوفير آليات تنفيذ ذات إصدارات ملكية خاصة بهم من الخيوط. وتختلف هذه آليات التنفيذ اختلافا جوهريا عن بعضها البعض، مما يجعل الأمر صعبا على المبرمجين لتطوير تطبيقات متسلسلة محمولة.
    • أدت جهود توحيد المقاييس المنفصلة إلى إخراج آليتي تنفيذ للخيوط مختلفتين جدا: خيوط POSIX و OpenMP.


    • خيوط POSIX
        ◦ يحددها المقياس IEEE POSIX 1003.1c (1995). لغة C فقط.
        ◦ جزء من أنظمة التشغيل يونكس/لينكس (Unix/Linux)
        ◦ بني من منظور مكتبة
        ◦ يشار إليها عادة باسم Pthreads.
        ◦ جد متوازية؛ تتطلب اهتمام كبير من مبرمج بالتفاصيل.


    • OpenMP
        ◦ مقياس صناعي، تم تحديده بشكل مشترك وأيدته مجموعة من الموردين الكبار لأجهزة وبرمجيات الحاسوب، والمنظمات والأفراد.
        ◦ بني من منظور توجيه المترجم (Compiler)
        ◦ محمول / متعدد المنصات، بما في ذلك منصتي يونكس وويندوز
        ◦ متوفر في تطبيقات C / C ++ و Fortran
        ◦ يمكن أن يكون جد سهل وبسيط الاستخدام - يوفر "التوازي التدريجي". ويمكن أن يبدأ برمز تسلسلي.


    • آليات تنفيذ أخرى للخيوط، ولكن لم تتم مناقشتها هنا:
        ◦ خيوط ميكروسوفت
        ◦ خيوط جافا، خيوط بيثون
        ◦ خيوط CUDA لوحدات معالجة الرسومات (GPUs)


    • المزيد من المعلومات
    • دورة خيوط POSIX: computing.llnl.gov/tutorials/pthreads
    • دورة OpenMP: computing.llnl.gov/tutorials/openMP

الذاكرة الموزعة / نموذج تمرير رسالة - Distributed Memory / Message Passing Model


    • يوضح هذا النموذج الخصائص التالية:
        ◦ مجموعة من المهام التي تستخدم الذاكرة المحلية الخاصة بها أثناء الحساب. يمكن أن تتواجد مهام متعددة على نفس الجهاز الفيزيائي و/أو عبر عدد اعتباطي من الأجهزة.
        ◦ بيانات تبادل المهام من خلال الاتصالات بإرسال واستقبال الرسائل.
        ◦ عادة ما يتطلب نقل البيانات إجراء عمليات تعاونية من قبل كل عملية. على سبيل المثال، يجب أن تكون لعملية الإرسال عملية استقبال مطابقة.
    • آليات التنفيذ
    • من منظور البرمجة، عادة ما تتضمن آليات تنفيذ تمرير الرسائل مكتبة النُّهج الفرعية. ويتم تضمين الاستدعاءات إلى هذه النُّهج الفرعية في شفرة المصدر. ويكون المبرمج مسؤولا عن تحديد كل التوازي.
    • من الناحية التاريخية، كانت هناك مجموعة متنوعة من مكتبات تمرير الرسائل منذ الثمانينيات. وتختلف عمليات التنفيذ هذه اختلافا كبيرا عن بعضها البعض مما يجعل من الصعب على المبرمجين تطوير التطبيقات المحمولة.
    • في عام 1992، تم تشكيل منتدى MPI بهدف أساسي هو إنشاء واجهة قياسية لعمليات تنفيذ تمرير الرسائل.
    • تم إصدار الجزء 1 من واجهة تمرير الرسائل (MPI) عامَ 1994. بينما تم إصدار الجزء 2 (MPI-2) عامَ 1996 وMPI-3 عامَ 2012. جميع مواصفات MPI متوفرة على شبكة الإنترنت: //www.mpi- forum.org/docs/.
    • يعد MPI "بحكم الأمر الواقع" مقياسا صناعيا لتمرير الرسائل، وحلَّ تقريبا محل جميع عمليات التنفيذ المستخدمة الأخرى والخاصة بتمرير الرسائل في أعمال الإنتاج. وتوجد آليات التنفيذ في جميع منصات الحوسبة المتوازية الشهيرة تقريبا. لا تشمل جميع آليات التنفيذ كل شيء في MPI-1 أو MPI-2 أو MPI-3.

    • المزيد من المعلومات:
دورة MPI: computing.llnl.gov/tutorials/mpi

نموذج البيانات المتوازية - Data Parallel Model


    • قد يشار إليه أيضا كنموذج حيز العنوان العام المجزأ (  Partitioned Global Address Space PGAS).
    • يوضح النموذج المتوازي للبيانات الخصائص التالية:
        ◦ يتعامل مع حيز العنوان بشكل عام
        ◦ تركز معظم الأعمال المتوازية على أداء العمليات لمجموعة بيانات. وعادة ما تنظم مجموعة البيانات في بنية مشتركة، مثل مصفوفة أو مكعب.
        ◦ تعمل مجموعة من المهام بشكل جماعي على بنية البيانات نفسها، ومع ذلك، تعمل كل مهمة على جزء مختلف عن نفس بنية البيانات.
        ◦ تقوم المهام بتنفيذ نفس العملية في جزئها الخاص بالعمل، على سبيل المثال، "إضافة 4 إلى كل عنصر من مصفوفة".
    • على معماريات الذاكرة المشتركة، قد تكون لجميع المهام إمكانية الوصول إلى بنية البيانات من خلال الذاكرة الإجمالية.
    • على معماريات الذاكرة الموزعة، يمكن تقسيم بنية البيانات الإجمالية بشكل منطقي و/أو فيزيائي من خلال المهام.

    • آليات التنفيذ:
    • حاليا، هناك العديد من آليات التنفيذية الشهيرة نسبيا، وأحيانا تطورية، مبنية على أساس البيانات المتوازية/نموذج PGAS.
    • كوراي فورتران (Coarray Fortran): مجموعة صغيرة من ملحقات فورتران 95 للبرمجة المتوازية SPMD. تعتمد على المترجم. للمزيد من المعلومات: https://en.wikipedia.org/wiki/Coarray_Fortran
    • C المتوازي الموحد (UPC Unified Parallel C): امتداد للغة البرمجة C للبرمجة المتوازية SPMD. تعتمد على المترجم. للمزيد من المعلومات: http://upc.lbl.gov/
    • المصفوفات العامة Global Arrays: توفر بيئة برمجة نمط الذاكرة المشتركة في سياق بنيات بيانات المصفوفة الموزعة. مكتبة ذات ملكية عامة مع ارتباطات C و Fortran77. مزيد من المعلومات: https://en.wikipedia.org/wiki/Global_Arrays
    • X10: لغة برمجة متوازية على أساس PGAS يتم تطويرها من قبل شركة IBM في مركز أبحاث توماس ج. واتسون. للمزيد من المعلومات: http://x10-lang.org/
    • Chapel: مشروع لغة برمجة متوازية مفتوح المصدر يقوده كراي (Cray). للمزيد من المعلومات: http://chapel.cray.com/

النموذج الهجين - Hybrid Model

 


    • يجمع النموذج الهجين بين أكثر من نموذج من نماذج البرمجة الموصوفة سابقا.
    • حاليا، يوجد مثال شائع لنموذج هجين هو مزيج من نموذج تمرير الرسائل (MPI) مع نموذج الخيوط (OpenMP).
        ◦ تقوم الخيوط بالعمليات الحسابية المكثفة باستخدام البيانات المحلية للعقدة
        ◦ تحدث اتصالات بين العمليات على مختلف العقد عبر الشبكة باستخدام MPI
    • أثبت هذا النموذج الهجين بأنه يعمل بشكل رائع في البيئات الشهيرة للأجهزة العنقودية متعددة/عديدة الأنوية.
    • مثال آخر مماثل وشعبي على نحو متزايد لنموذج هجين هو استخدام MPI مع برمجة CPU-GPU (وحدة المعالجة المركزية - وحدة معالجة الرسومات).
        ◦ تشغل مهام MPI على وحدات المعالجة المركزية باستخدام الذاكرة المحلية والتواصل مع بعضها البعض عبر الشبكة.
        ◦ نوى مركزة حسابيا محملة على وحدات معالجة الرسومات على العقدة.
        ◦ تبادل البيانات بين الذاكرة عقدة المحلية و ووحدات المعالجات الرسومية باستخدام CUDA  (أو ما يعادله).


    • نماذج هجينة أخرى شائعة:
        ◦ MPI مع خيوط POSIX (Pthreads)
        ◦ MPI مع مسرعات غير وحدات معالجة الرسومات (non-GPU)
        ◦ ...

SPMD وMPMD


    • برنامج واحد متعدد البيانات - Single Program Multiple Data (SPMD):


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


    • متعددة بيانات متعددة البرامج - Multiple Program Multiple Data (MPMD):


    • مثل SPMD، يعتبر MPMD حاليا نموذج برمجة "عالية المستوى" والتي يمكن بناؤها على أساس أي مزيج من نماذج البرمجة الموازية المذكورة سابقا.
    • برامج متعدد: قد تنفذ المهام برامج مختلفة في وقت واحد. ويمكن أن تكون البرامج عبارة عن خيوط، تمرير رسائل، بيانات متوازنة أو هجينة.
    • بيانات متعددة: قد تستخدم جميع المهام بيانات مختلفة
    • لا تعد تطبيقات MPMD شائعة مثلما هو الأمر بالنسبة لتطبيقات SPMD، ولكنها قد تكون أكثر ملاءمة لأنواع معينة من المشاكل، لا سيما تلك التي تكون أفضل لتفكك وظيفي منه لتفكك مجالي (الذي ستتم مناقشته لاحقا في فصل التجزئة).

تصميم البرامج المتوازية

الموازاة اليدوية مقابل الموازاة التلقائية - Automatic vs. Manual Parallelization


    • كان تصميم وتطوير البرامج المتوازية عملية يدوية للغاية. حيث يكون المبرمج هو المسؤول عادة عن تحديد وحاليا عن تنفيذ التوازي.
    • في كثير من الأحيان، يستغرق تطوير الشفرات المتوازية يدويا وقتا طويلا، ويكون معقدا، وعرضة للخطأ وعملية تكرارية.
    • منذ عدة سنوات، أصبحت أدوات مختلفة متاحة لمساعدة المبرمج على تحويل البرامج التسلسلية إلى برامج متوازية. والنوع الأكثر شيوعا من الأدوات المستخدمة لموازاة برنامج تسلسلي تلقائيا هو مترجم الموازاة أو ما قبل المعالج.
    • يعمل مترجم الموازاة عموما بطريقتين مختلفتين:
تلقائية تامة - Fully Automatic
    • يحلل المترجم شفرة المصدر ويحدد فرص التوازي.
    • يشمل التحليل تحديد مثبطات التوازي وربما ترجيح التكلفة على ما إذا كان التوازي سيحسن الأداء فعلا أم لا.
    • تعتبر حلقات التكرار (do، for) الهدف الأكثر شيوعا للتوازي التلقائي.
مبرمج موجه - Programmer Directed
    • باستخدام "توجيهات المترجم" أو ربما أعلام المترجم، يقول المبرمج للمترجم بشكل واضح كيفية موازاة الشفرة البرمجية.
    • قد تكون قادرة على استخدامها جنبا إلى جنب مع بضع درجات من التوازي التلقائي أيضا.

    • يتم إنشاء مترجم الأكثر شيوعا للموازاة المولدة باستخدام الذاكرة المشتركة على العقدة والخيوط (مثل OpenMP).
    • إذا كنت تبدأ مع شفرة تسلسلية جاهزة ومقيد بوقت أو ميزانية، فإن التوازي التلقائي قد يكون هو الأفضل. ومع ذلك، هناك العديد من التحذيرات الهامة التي تنطبق على التوازي التلقائي:
        ◦ قد تنتج نتائج خاطئة
        ◦ قد يقل الأداء فعلا
        ◦ أقل مرونة من التوازي اليدوي
        ◦ تقتصر على مجموعة فرعية (معظمها حلقات التكرار) من الشفرة
        ◦ قد لا تكون الشفرة متوازية في الواقع إذا كان تحليل المترجم يشير إلى أن هناك مثبطات أو أن الشفرة معقدة جدا
    • ينطبق الجزء المتبقي من هذا الفصل على الطريقة اليدوية لتطوير الشفرات المتوازية.

فهم المشكلة والبرنامج


    • مما لا شك فيه، أن الخطوة الأولى في تطوير البرمجيات المتوازية هي أولا فهم المشكلة التي ترغب في حلها بالتوازي. إذا بدأت مع برنامج تسلسلي، فإن هذا يتطلب فهم الشفرات البرمجية الجاهزة أيضا.
    • قبل قضاء بعض الوقت في محاولة لتطوير حل متواز للمشكلة، حدد ما إذا كانت المشكلة هي التي يمكن أن تكون متوازية بالفعل أم لا.
        ◦ مثال على سهولة موازاة مشكلة:
احسب الطاقة المحتملة لكل من واحدة من عدة آلاف من التشكلات المستقلة لجزيئة. عندما تنتهي من ذلك، ابحث عن الحد الأدنى لطاقة التشكل.
هذه المشكلة لديها القابلية على أن تحل على التوازي. حيث يمكن تحديد كل واحدة من التشكلات الجزيئية بشكل مستقل. ويعد أيضا حساب الحد الأدنى من طاقة التشكل مشكلة متوازية.
    • مثال على مشكلة مع القليل من التوازي أو بدونه:
حساب سلسلة فيبوناتشي (Fibonacci) (0،1،1،2،3،5،8،13،21، ...) باستخدام الصيغة:
F(n) = F(n-1) + F(n-2)
يستخدم حساب القيمة F(n) قيمتي F(n-1) وF(n-2) التي يجب حسابهما أولا.


    • تحديد نقاط الحوسبة المكثفة في البرنامج hotspots :
        ◦ اعرف أين يتم معظم العمل الحقيقي. غالبا ما تحقق معظم البرامج العلمية والتقنية معظم عملها في أماكن قليلة.
        ◦ يمكن أن تساعدك المحللات وأدوات تحليل الأداء هنا
        ◦ ركز على موازاة نقاط الحوسبة المكثفة وتجاهل تلك الأقسام من البرنامج ذات الاستخدام القليل لوحدة المعالجة المركزية.
    • تحديد نقاط الاختناق (bottlenecks) في البرنامج:
        ◦ هل هناك مناطق بطيئة بشكل غير متناسب، أو تتسبب في وقف العمل أو إرجاءه؟ على سبيل المثال، ادخال/اخراج (I/O) هو عادة شيء يبطئ البرنامج.
        ◦ قد يكون من الممكن إعادة هيكلة البرنامج أو استخدام خوارزمية مختلفة لتقليل أو القضاء على المناطق البطيئة غير الضرورية
    • تحديد مثبطات التوازي. أحد الفئات الشائعة للمثبط هو الاعتماد على البيانات، كما يتضح من تسلسل فيبوناتشي أعلاه.
    • تحقق من الخوارزميات الأخرى إن أمكن. قد يكون هذا هو الاعتبار الأكثر أهمية عند تصميم تطبيق متواز.
    • استفد من إيجابيات برنامج المتوازي للطرف الثالث الأمثل ومكتبات الرياضيات المثالية المتاحة من كبار الموردين (IBM's ESSL، Intel's MKL، AMD's AMCL وما إلى ذلك).

التجزئة - Partitioning


    • واحدة من الخطوات الأولى في تصميم برنامج متواز هو تقسيم المشكلة إلى "قطع" منفصلة من الأعمال التي يمكن توزيعها على مهام متعددة. ويعرف هذا باسم التحلل أو التجزئة.
    • هناك طريقتان أساسيتان لتجزئة العمل الحسابي بين المهام المتوازية: التحلل المجالي والوظيفي.
    • التحلل المجالي - Domain Decomposition:
    • في هذا النوع من التجزئة، يتم تحليل البيانات المرتبطة بالمشكلة. ثم تعمل كل مهمة متوازية على جزء من البيانات.

    • هناك طرق مختلفة لتقسيم البيانات:



    • التحلل الوظيفي - Functional Decomposition:
    • في هذا النهج، ينصب التركيز على الحساب الذي يتعين القيام به وليس على البيانات التي تتم معالجتها بواسطة الحساب. وتتحلل المشكلة وفقا للعمل الذي يجب القيام به. كل مهمة تنفذ إذن جزءا من العمل الإجمالي.

    • يفسح التحلل الوظيفي المجال للمشاكل التي يمكن تقسيمها إلى مهام مختلفة. فمثلا:
نمذجة النظم الإيكولوجية - Ecosystem Modeling
يحسب كل برنامج عدد السكان من مجموعة معينة، حيث يعتمد نمو كل مجموعة على نمو جارتها. ومع مرور الوقت، تحسب كل عملية حالتها الحالية، ثم تتبادل المعلومات مع الكثافات السكانية المجاورة. تتقدم جميع المهام بعدها لحساب الحالة في الخطوة الزمنية التالية.

معالجة الإشارات - Signal Processing
يتم تمرير مجموعة بيانات إشارة الصوت من خلال أربعة مرشحات حسابية مختلفة. كل مرشح عبارة عن عملية منفصلة. يجب أن يمر الجزء الأول من البيانات من خلال المرشح الأول قبل التقدم إلى الثاني. وعندما يحدث ذلك، يمر الجزء الثاني من البيانات من خلال المرشح الأول. وبحلول الوقت الذي يكون فيه الجزء الرابع من البيانات في المرشح الأول، فإن جميع المهام الأربع تكون مشغولة.

نمذجة المناخ - Climate Modeling
يمكن اعتبار كل مكون نموذج كمهمة منفصلة. وتمثل الأسهم تبادل البيانات بين المكونات أثناء الحساب: يولد نموذج الغلاف الجوي بيانات سرعة الرياح التي يستخدمها نموذج المحيطات، ونموذج المحيطات يولد بيانات درجة حرارة سطح البحر التي يستخدمها نموذج الغلاف الجوي، وهلم جرا.

    • يعد الجمع بين هذين النوعين من تحلل المشكلة أمرا شائعا وطبيعيا.


الاتصالات - Communications


    • من يحتاج الاتصالات؟
تتوقف الحاجة إلى الاتصالات بين المهام على مشكلتك:
تحتاج إلى الاتصالات:
    • معظم التطبيقات المتوازية ليست بسيطة جدا، وتتطلب مهام لتبادل البيانات مع بعضها البعض.
    • على سبيل المثال، تتطلب مشكلة انتشار الحرارة 2-D مهمة لمعرفة درجات الحرارة التي تحسبها المهام التي لها بيانات مجاورة. للتغييرات على البيانات المجاورة تأثير مباشر على بيانات تلك المهمة.


أنت لا تحتاج إلى الاتصالات:
    • بعض أنواع المشاكل يمكن أن تتحلل وتنفذ بالتوازي دون أي حاجة تقريبا إلى المهام لتبادل البيانات. وغالبا ما توصف هذه الأنواع من المشاكل بالمتوازية المحرجة – وتكون هناك حاجة إلى اتصالات قليلة أو معدومة.
    • على سبيل المثال، تخيل عملية معالجة الصور حيث يحتاج كل بكسل في صورة بالأبيض والأسود إلى عكس لونه. يمكن بسهولة توزيع بيانات الصورة إلى مهام متعددة تتصرف بعد ذلك بشكل مستقل عن بعضها البعض للقيام بجزءها من العمل.

            
    • العوامل التي يجب مراعاتها:
هناك عدد من العوامل الهامة التي يجب مراعاتها عند تصميم الاتصالات بين المهام الخاصة ببرنامجك:


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

    • زمن الوصول مقابل حيز النطاق الترددي - Latency vs. Bandwidth
        ◦ زمن الوصول هو الوقت المستغرق لإرسال رسالة ذات الحجم الأدنى (0 بايت) من نقطة A إلى نقطة B. ويتم التعبير عنها بشكل عام بالميكروثانية.
        ◦ حيز النطاق الترددي هو مقدار البيانات التي يمكن توصيلها خلال وحدة زمنية. يعبر عنه عادة باسم ميغابايت/ثانية أو جيغابايت/ثانية.
        ◦ يمكن أن يسبب إرسال العديد من الرسائل الصغيرة جعل كلفة الاتصالات هي المسيطرة. في كثير من الأحيان يكون أكثر كفاءة تحزيم الرسائل الصغيرة في رسالة أكبر، وبالتالي زيادة عرض النطاق الفعال للاتصالات.

    • رؤية الاتصالات - Visibility of communications
        ◦ مع نموذج تمرير الرسائل، تكون الاتصالات صريحة وعموما واضحة تماما وتحت تحكم المبرمج.
        ◦ مع النموذج المتوازي للبيانات، غالبا ما تحدث الاتصالات بشفافية للمبرمج، وخاصة على بنيات الذاكرة الموزعة. قد لا يكون المبرمج قادرا حتى على معرفة كيفية إنجاز الاتصالات بين المهام بالضبط.

    • الاتصالات المتزامنة مقابل الاتصالات غير المتزامنة - Synchronous vs. asynchronous communications
        ◦ تتطلب الاتصالات المتزامنة نوعا من "المصافحة" بين المهام التي تشارك البيانات. يمكن أن يكون هذا منظما بشكل واضح في الشفرة من قبل المبرمج، أو أنه قد يحدث في مستوى أقل غير معروف بالنسبة للمبرمج.
        ◦ غالبا ما يشار إلى الاتصالات المتزامنة على أنها حاجبة للاتصالات لأن العمل الآخر يجب أن ينتظر حتى اكتمال الاتصالات.
        ◦ تسمح الاتصالات غير المتزامنة للمهام بنقل البيانات بشكل مستقل عن بعضها البعض. على سبيل المثال، يمكن للمهمة 1 إعداد وإرسال رسالة إلى المهمة 2، ثم تبدأ فورا بالقيام بأعمال أخرى. عندما تستقبل المهمة 2 البيانات التي لا تهم.
        ◦ غالبا ما يشار إلى الاتصالات غير المتزامنة على أنها اتصالات غير حاجبة لأنه يمكن القيام بالعمل الآخر في حين أن الاتصالات تجري.
        ◦ يعتبر الحساب البيني مع الاتصالات أكثر فائدة لاستخدام الاتصالات غير المتزامنة.

    • نطاق الاتصالات - Scope of communications
        ◦ يعتبر معرفة أي المهام التي يجب تتواصل مع بعضها البعض أمرا بالغ الأهمية خلال مرحلة تصميم الشفرة المتوازية. ويمكن تنفيذ كلا النطاقين الموصوفين أدناه بشكل متزامن أو غير متزامن.
        ◦ نقطة إلى نقطة (Point-to-point) - ينطوي على مهمتين بمهمة واحدة تعمل كمرسل/منتج للبيانات، والآخر يعمل كمستقبل/مستهلك.
        ◦ الجماعي (Collective) - ينطوي على تبادل البيانات بين أكثر من مهمتين، والتي غالبا ما يتم تحديدها على أنها أعضاء في مجموعة مشتركة، أو جماعي. بعض الاختلافات الشائعة (هناك المزيد):

    • كفاءة الاتصالات - Efficiency of communications
        ◦ في كثير من الأحيان، يملك المبرمج خيارات يمكن أن تؤثر على أداء الاتصالات. سيتم هنا ذكر عدد قليل منها فقط.
        ◦ ما هي عملية تنفيذ التي ينبغي استخدامها لنموذج معين؟ باستخدام نموذج تمرير الرسائل كمثال على ذلك، قد تكون عملية تنفيذ MPI أسرع على منصة أجهزة معينة أخرى.
        ◦ ما هو نوع عمليات الاتصال التي ينبغي استخدامها؟ كما تم ذكره سابقا، يمكن لعمليات الاتصالات غير المتزامنة أن تحسن الأداء العام للبرنامج.
        ◦ نسيج الشبكة - قد توفر بعض المنصات أكثر من شبكة واحدة للاتصالات. فأي واحدة هي الأفضل؟
    • التكلفة والتعقيد - Overhead and Complexity

    • وأخيرا، ندرك أن هذه ليست سوى قائمة جزئية من الأشياء التي يجب أخذها في عين الاعتبار !!!

المزامنة - Synchronization


    • إدارة تسلسل العمل والمهام التي تؤديه هو اعتبار حساس في التصميم لمعظم البرامج المتوازية.
    • يمكن أن يكون عاملا هاما في أداء البرنامج (أو عدم وجوده)
    • غالبا ما يتطلب "تسلسل" أجزاء من البرنامج.

    • أنواع المزامنة:


    • الحاجز - Barrier
        ◦ عادة ما يعني أن جميع المهام معنية
        ◦ تؤدي كل مهمة عملها حتى تصل إلى الحاجز. ثم تتوقف، أو "يتم منعها".
        ◦ عندما تصل المهمة الأخيرة إلى الحاجز، تتم مزامنة جميع المهام.
        ◦ ما يحدث من هنا يختلف. في كثير من الأحيان، يجب أن يتم الجزء التسلسلي من العمل. وفي حالات أخرى، يتم تحرير المهام تلقائيا لمواصلة عملها.
    • قفل / سيمافور (ملوحة) - Lock / semaphore
        ◦ يمكن أن ينطوي على أي عدد من المهام
        ◦ يستخدم عادة لتسلسل (حماية) الوصول إلى البيانات الإجمالية أو جزء من الشفرة. وقد تستخدم مهمة واحدة فقط في كل مرة القفل / السيمافور / العلم (الخاص بها).
        ◦ المهمة الأولى للحصول على قفل "يحدد" ذلك. يمكن بعدها لهذه المهمة الوصول إلى البيانات المحمية أو الشفرة بأمان (بشكل متسلسل).
        ◦ يمكن لمهام أخرى محاولة الحصول على القفل ولكن يجب الانتظار حتى المهمة التي تملك القفل الذي يحررها.
        ◦ يمكن أن يكون محظورا أو غير محظور

    • عمليات الاتصالات المتزامنة - Synchronous communication operations
        ◦ لا تشمل سوى تلك المهام التي تنفذ عملية الاتصال
        ◦ عندما تؤدي إحدى المهام عملية الاتصال، يستلزم الأمر وجود شكل من التنسيق مع المهمة (المهام) الأخرى المشاركة في الاتصالات. على سبيل المثال، قبل أن تقوم مهمة بتنفيذ عملية إرسال، يجب أن تتلقى أولا إقرارا من مهمة الاستلام بالموافقة على إرسالها.
        ◦ تمت مناقشتها سابقا في قسم الاتصالات.


تبعيات البيانات - Data Dependencies


    • تعريف:
    • توجد تبعية بين تعليمات البرنامج عندما يؤثر ترتيب تنفيذ التعليمة على نتائج البرنامج.
    • تنتج تبعية البيانات عن الاستخدامات المتعددة لنفس الموقع (المواقع) في التخزين بواسطة مهام مختلفة.
    • تعتبر التبعيات مهمة للبرامج المتوازية لأنها واحدة من المثبطات الأولية للتوازي.

    • أمثلة:
    • تبعية البيانات في حلقات التكرار - Loop carried data dependence

DO J = MYSTART,MYEND
A(J) = A(J-1) * 2.0
END DO


يجب حساب قيمة A (J-1) قبل قيمة A (J)، وبالتالي فإن A (J) تعرض تبعية البيانات على A (J-1). نقول أن التوازي مثبَّط.
إذا كانت المهمة 2 تحتوي على A(J) والمهمة 1 لها A (J-1)، فإن حساب القيمة الصحيحة لـ A (J) يستلزم ما يلي:

    • بنية الذاكرة الموزعة - يجب أن تحصل المهمة 2 على قيمة A (J-1) من المهمة 1 بعد انتهاء المهمة 1 من حسابها
    • بنية الذاكرة المشتركة – يجب على المهمة 2 أن تقرأ A (J-1) بعد تحديثها من طرف المهمة 1


task 1        task 2
------        ------

X = 2         X = 4
  .             .
  .             .
Y = X**2      Y = X**3


كما هو الحال في المثال السابق، يتم تثبيط التوازي. وتعتمد قيمة Y على:
    • بنية الذاكرة الموزعة - إذا أو عندما تتصل قيمة X بين المهام.
    • بنية الذاكرة المشتركة - المهمة التي يخزن الماضي قيمة X.

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

    • كيفية التعامل مع تبعيات البيانات:
    • بنيات الذاكرة الموزعة - توصيل البيانات المطلوبة في نقاط التزامن.
    • بنيات الذاكرة المشتركة – مزامنة عمليات القراءة/الكتابة بين المهام.

موازنة التحميل - Load Balancing


    • تشير موازنة التحميل إلى ممارسة توزيع كميات متساوية تقريبا من العمل بين المهام بحيث تبقى جميع المهام مشغولة في كل وقت. ويمكن اعتباره تقليلا من وقت خمول المهمة.
    • تعتبر موازنة التحميل مهمة للبرامج المتوازية لأسباب تتعلق بالأداء.على سبيل المثال، إذا كانت جميع المهام تخضع لنقطة تزامن الحاجز، فإن أبطأ مهمة تحدد الأداء العام.
 

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


محاكاة N -body – قد تهاجر الجسيمات عبر نطاقات المهام التي تتطلب المزيد من العمل لبعض المهام.


أساليب الشبكة التكيفية – قد تحتاج بعض المهام إلى تهذيب شبكتها حينما لا يقوم البعض الآخر بذلك.


المصفوفات غير الكثيفة - بعض المهام لديها بيانات فعلية للعمل عليها حينما يكون البعض الآخر في الغالب "مجرد أصفار".

        ◦ عندما يكون مقدار العمل الذي ستؤديه كل مهمة متغيرا عن قصد أو غير قادر على التنبؤ به، فقد يكون من المفيد استخدام نهج تجمع المهام المجدول (scheduler-task pool). عندما تُنهي كل مهمة عملها، فإنها تتلقى قطعة جديدة من قائمة انتظار العمل.

        ◦ في نهاية المطاف، قد يصبح من الضروري تصميم خوارزمية تكشف وتتعامل مع اختلالات التحميل لأنها تحدث ديناميكيا داخل الشفرة.

الحبوبية - Granularity


    • معدل الاتصالات /الحوسبة - Computation / Communication Ratio :
    • في الحوسبة المتوازية، تعتبر الحبوبية مقياسا نوعيا لمعدل الحساب في الاتصالات.
    • عادة ما يتم فصل فترات الحساب عن فترات الاتصالات بواسطة أحداث التزامن.
    • توازي الحَب-الدقيق - Fine-grain Parallelism :


    • يتم إنجاز كميات صغيرة نسبيا من العمل الحسابي بين أحداث الاتصالات
    • حوسبة منخفضة إلى مقدار الاتصالات
    • يسهل موازنة التحميل
    • يدل على كلفة الاتصالات وفرص قليلة لتحسين الأداء
    • إذا كانت الحبوبية دقيقة جدا فمن الممكن أن الكلفة المطلوبة للاتصالات والتزامن بين المهام سيستغرق وقتا أطول من الحساب.
    •  توازي الحَب- الخشن - Coarse-grain Parallelism  :


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

I / O (إدخال/إخراج)


الأخبار السيئة:
    • تعتبر عمليات الإدخال/الإخراج (I/O) عموما مثبطات للتوازي.
    • تتطلب عمليات الإدخال/الإخراج أوامر بحجم أكبر من عمليات الذاكرة.
    • قد تكون أنظمة الإدخال/الإخراج المتوازية غير ناضجة أو غير متاحة لجميع الأنظمة الأساسية.
    • في بيئة حيث تدرك كافة المهام نفس مساحة الملف، يمكن أن تؤدي عمليات الكتابة إلى الكتابة فوق الملف.
    • يمكن أن تتأثر عمليات القراءة بقدرة خادم الملفات على التعامل مع طلبات القراءة المتعددة في نفس الوقت.
    • الإدخال/الإخراج الذي يجب إجراؤه عبر الشبكة (NFS، غير محلية) يمكن أن يتسبب في اختناقات شديدة وقد يسبب حتى في تعطيب خوادم الملفات.
 الأخبار الجيدة:
    • أنظمة الملفات المتوازية متاحة. فمثلا:
        ◦ GPFS: النظام العام للملفات المتوازية (IBM). يسمى حاليا مقياس طيف IBM.
        ◦ Lustre: لعناقيد لينكس ( Intel)
        ◦ HDFS نظام الملفات الموزعة Hadoop (Apache)
        ◦ PanFS: نظام الملفات ActiveScale Panasas لعناقيد لينكس (Panasas ، Inc.)
        ◦ وللمزيد – انظر http://en.wikipedia.org/wiki/List_of_file_systems#Distributed_parallel_file_systems
    • قد أصبح تخصص برمجة الإدخال/الإخراج  المتوازية لـ MPI متاحة منذ عام 1996 كجزء من MPI-2. وأصبحت عمليات تنفيذ الحرة والخاصة بالموردين متاحة بشكل شائع.
    • بعض الإرشادات:
        ◦ القاعدة رقم 1: قلل الإدخال/الإخراج الإجمالي قدر الإمكان
        ◦ إذا كان لديك الوصول إلى نظام ملفات متوازية، استخدمه.
        ◦ كتابة أجزاء كبيرة من البيانات بدلا من قطع صغيرة وعادة ما تكون أكثر كفاءة بكثير.
        ◦ ملفات أقل وأكبر أداء أفضل من العديد من الملفات الصغيرة.
        ◦ احجز الإدخال/الإخراج في أجزاء تسلسلية محددة من الوظيفة، ثم استخدم الاتصالات المتوازية لتوزيع البيانات على المهام المتوازية.على سبيل المثال، يمكن للمهمة 1 قراءة ملف إدخال ثم بعدها توصل البيانات المطلوبة إلى مهام أخرى.وبالمثل، يمكن للمهمة 1 إجراء عملية الكتابة بعد تلقي البيانات المطلوبة من جميع المهام الأخرى.
        ◦ عمليات الإدخال/الإخراج الإجمالية عبر المهام - بدلا من تنفيذ العديد من مهام الإدخال/الإخراج، تؤدي مجموعة فرعية من المهام.

التصحيح - Debugging


    • يكون من الصعب تصحيح الشفرات المتوازية بشكل لا يصدق، لا سيما الشفرات ذات المستوى الصاعد.
    • الخبر السار هو أن هناك بعض المصححات الممتازة المتاحة للمساعدة:
    • pthreads  و OpenMPمخيطة
    • MPI
    • GPU  / مسرع
    • Hybrid
    • يمتلك مستخدمو حوسبة ليفرمور الوصول إلى العديد من أدوات التصحيح المتوازية المثبتة على عناقيد LC:
    • TotalView من RogueWave للبرمجيات
    • DDT من Allinea
    • Inspector من Intel
    • أداة تحليل التتبع المكدس  (STAT)- مطورة محليا
    • كل هذه الأدوات لديها منحنى تعلم مرتبط بها - أكثر من غيرها.
    • للحصول على تفاصيل ومعلومات للبدء، راجع:
        ◦ صفحات ويب LC في https://hpc.llnl.gov/software/development-environment-software
        ◦ برنامج TotalView التعليمي:  https://computing.llnl.gov/tutorials/totalview/

ضبط وتحليل الأداء - Performance Analysis and Tuning


    • كما هو الحال مع التصحيح، يمكن للتحليل و ضبط أداء البرنامج المتوازي أن يكون أكثر صعوبة بكثير من البرامج التسلسلية.
    • لحسن الحظ، هناك عدد من الأدوات الممتازة لتحليل أداء البرنامج المتوازي وضبطه.
    • لدى مستخدمو حوسبة ليفرمور امكانية الوصول إلى العديد من هذه الأدوات، ومعظمها متاح في جميع عناقيد الإنتاج.
    • بعض نقاط البدء للأدوات المثبتة على أنظمة LC:
        ◦ صفحات ويب LC في https://hpc.llnl.gov/software/development-environment-software
        ◦ TAU : http://www.cs.uoregon.edu/research/tau/docs.php
        ◦ HPCToolkit  :http://hpctoolkit.org/documentation.html
        ◦ Open|Speedshop  :  http://www.openspeedshop.org/
        ◦ Vampir / Vampirtrace  : http://vampir.eu/
        ◦ Valgrind  :http://valgrind.org/
        ◦ PAPI  :http://icl.cs.utk.edu/papi/
        ◦ Mpitrace : https://computing.llnl.gov/tutorials/bgq/index.html#mpitrace
        ◦ mpiP :http://mpip.sourceforge.net/
        ◦ MemP  :  http://memp.sourceforge.net/

أمثلة متوازية

معالجة المصفوفة - Array Processing


    • يوضح المثال التالي الحسابات على عناصر مصفوفة ثنائية الأبعاد. يتم تقييم الدالة في كل عنصر من المصفوفة.
    • الحساب على كل عنصر من المصفوفة مستقل عن العناصر الأخرى للمصفوفة.
    • المشكلة مكثفة حسابيا.
    • يحسب البرنامج التسلسلي عنصرا واحدا في وقت واحد ضمن ترتيب تسلسلي.
    • يمكن أن تكون الشفرة التسلسلية على الشكل التالي:

    • أسئلة يجب طرحها
    • هل هذه المشكلة قادرة على أن تكون متوازية؟
    • كيف يمكن تقسيم المشكلة؟
    • هل تحتاج  إلى اتصالات؟
    • هل هناك أي تبعيات للبيانات؟
    • هل هناك حاجة إلى التزامن؟
    • هل تكون موازنة التحميل مصدر قلق؟


معالجة المصفوفة - Array Processing
الحل المتوازي 1
    • حساب العناصر المستقلة عن بعضها البعض - يؤدي إلى حل متوازي محرج.
    • يتم توزيع عناصر المصفوفات بالتساوي بحيث تمتلك كل عملية جزء من المصفوفة (مصفوفة فرعية).
        ◦ يتم اختيار مخطط التوزيع للوصول إلى الذاكرة بكفاءة.على سبيل المثال خطوة واسعة لوحدة (خطوة واسعة لـ 1) عبر المصفوفات الفرعية. تزيد خطوة وحدة من استخدام المخبأة/الذاكرة.
        ◦ بما أنه من المرغوب فيه الحصول على خطوة وحدة من خلال مصفوفة فرعية، فإن اختيار مخطط التوزيع يعتمد على لغة البرمجة. للمزيد من الخيارات، راجع بلوك - الرسم البياني للتوزيعات الدوريةبلوك - مخطط توزيعات دورية.


    • يضمن الحساب المستقل من عناصر المصفوفة عدم الحاجة للاتصال أو التزامن بين المهام.
    • بما أن كمية العمل موزعة بالتساوي عبر العمليات، فلا ينبغي أن تكون هناك مخاوف تتعلق بموازنة التحميل.
    • بعد توزيع المصفوفة ، تنفذ كل مهمة جزء من حلقة تكرار المقابلة للبيانات التي تمتلكها.
على سبيل المثال، تظهر توزيعات فورتران (عمود - رئيسي) وC (صف - رئيسي):
 

do j = mystart, myend
do i = 1, n
a(i,j) = fcn(i,j)
end do
end do

for i (i = mystart; i 


    • لاحظ أن متغيرات الحلقة الخارجية فقط تختلف عن الحل التسلسلي.
    • أحد الحلول المحتملة:
    • عملية تنفيذ كنموذج بيانات متعددة برنامج واحد (SPMD) - كل مهمة تنفذ نفس البرنامج.
    • تهيئ العملية الرئيسية المصفوفة، وترسل المعلومات إلى العمليات العاملة وتتلقى النتائج.
    • تتلقى العملية العاملة معلومات، وتنفذ حصتها من الحساب وترسل النتائج إلى الرئيسة.
    • باستخدام مخطط تخزين فورتران، يكون أداء توزيع المصفوفة أكثر ذكاء.
    • حل الشفرة المستعارة: المميزة باللون الأحمرتتغير للتوازي.

find out if I am MASTER or WORKER
if I am MASTER
  initialize the array
  send each WORKER info on part of array it owns
  send each WORKER its portion of initial array
  receive from each WORKER results
else if I am WORKER
  receive from MASTER info on part of array I own
  receive from MASTER my portion of initial array

  # حساب نصيبي من المصفوفة
  do j = my first column,my last column
    do i = 1,n
      a(i,j) = fcn(i,j)
    end do
  end do

  send MASTER results

endif


    • أمثلة البرامج:
    • برنامج MPI في C:  https://computing.llnl.gov/tutorials/mpi/samples/C/mpi_array.c
    • برنامج MPI في فورتران:  https://computing.llnl.gov/tutorials/mpi/samples/Fortran/mpi_array.f

معالجة  المصفوفة


الحل المتوازي 2: تجمع المهام (Pool of Tasks)
    • أظهر حل المصفوفة السابق موازنة تحميل ثابتة:
        ◦ كل مهمة لديها كمية ثابتة من العمل للقيام بها
        ◦ قد يكون وقت الخمول كبيرا للمعالجات الأسرع أو الأكثر خفة في التحميل – تحدد المهام الأبطأ الأداء العام.
    • لا تعد موازنة التحميل الثابتة عادة مصدر قلق كبير إذا كانت جميع المهام تؤدي نفس كمية العمل على أجهزة مماثلة.
    • إذا كانت لديك مشكلة في موازنة التحميل (بعض المهام تعمل بشكل أسرع من غيرها)، يمكنك الاستفادة من استخدام نخطط "تجمع المهام".
    • مخطط تجمع المهام - Pool of Tasks Scheme :
    • يتم استخدام عمليتان
عملية رئيسية:
        ◦ تحتضن تجمع المهام للعمليات العاملة للقيام بها
        ◦ يرسل العامل المهمة عند طلبها
        ◦ تجمع النتائج من العمليات العاملة
عملية عاملة: تفعل ما يلي مرارا وتكرارا
        ◦ تحصل على مهمة من العملية الرئيسية
        ◦ تنفذ الحساب
        ◦ ترسل النتائج إلى العملية الرئيسية
    • لا تعرف العمليات العاملة قبليا وقت تشغيل أي جزء من المصفوفة التي سوف يتعاملن معها أو كمية المهام التي سوف يقمن بأدائها.
    • تحدث موازنة التحميل الديناميكي في وقت التشغيل: تحصل المهام الأسرع على المزيد من العمل للقيام به.
    • حل الشفرة المستعارة: الشفرة باللون الأحمر تتغير للتوازي.

find out if I am MASTER or WORKER

if I am MASTER

  do until no more jobs
    if request send to WORKER next job
    else receive results from WORKER
  end do

else if I am WORKER

  do until no more jobs
    request job from MASTER
    receive from MASTER next job

    calculate array element: a(i,j) = fcn(i,j)

    send results to MASTER
  end do

endif

    • مناقشة:
    • في مثال تجمع المهام أعلاه، تحسب كل مهمة عنصر مصفوفة فردية كمهمة. وتكون الحوسبة إلى مقدار الاتصالات ذات حبوبية دقيقة.
    • تحمل حلول الحبوبية الدقيقة المزيد من الاتصالات العامة من أجل تقليل وقت خمول مهمة.
    • قد يكون الحل الأمثل هو توزيع المزيد من العمل لكل وظيفة. والكمية "الصحيحة" من العمل هي المشكلة المعتمدة.

حساب PI


    • يمكن حساب قيمة PI بطرق مختلفة. إذا اعتبرنا طريقة مونتي كارلو (Monte Carlo) لتقريب : PI
        ◦ إدراج دائرة بنصف قطر r في مربع بطول  2r
        ◦ مساحة الدائرة هي Πr 2  ومساحة المربع 4r 2
        ◦ نسبة مساحة الدائرة من مساحة المربع هي:

Πr 2 / 4r 2 = Π / 4


        ◦ إذا كنت تولد عشوائيا N نقطة داخل المربع ، تقريبا
N * Π / 4من تلك النقاط ( M ) يجب أن تقع داخل الدائرة.
        ◦ Π  تقارب التالي:

N * Π / 4 = M
Π / 4 = M / N
Π = 4 * M / N


        ◦ لاحظ أن زيادة عدد النقاط يولد و  يحسن التقريب.
    • الشفرة المستعارة التسلسلية لهذا الإجراء:

npoints = 10000
circle_count = 0

do j = 1,npoints
  generate 2 random numbers between 0 and 1
  xcoordinate = random1
  ycoordinate = random2
  if (xcoordinate, ycoordinate) inside circle
  then circle_count = circle_count + 1
end do

PI = 4.0*circle_count/npoints


    • المشكلة مكثفة حسابيا - معظم الوقت ينفق في حلقة
    • أسئلة يجب طرحها:
        ◦ هل هذه المشكلة قادرة على أن تكون متوازية؟
        ◦ كيف يمكن تقسيم المشكلة؟
        ◦ هل تحتاج الى الاتصالات؟
        ◦ هل هناك أي تبعيات للبيانات؟
        ◦ هل هناك حاجة إلى التزامن؟
        ◦ هل تكون موازنة التحميل مصدر قلق؟

حساب PI
الحل المتوازي


    •  مشكلة أخرى يسهل موازنتها:
        ◦ جميع حسابات النقطة مستقلة؛ لا توجد تبعيات للبيانات
        ◦ يمكن تقسيم العمل بالتساوي؛ لا مخاوف من تحميل التوازن
        ◦ لا حاجة للاتصال أو التزامن بين المهام
    • الاستراتيجية الموازية:
        ◦ تقسيم الحلقة إلى أجزاء متساوية يمكن تنفيذها من قبل مجموعة من المهام
        ◦ تؤدي كل مهمة عملها بشكل مستقل
        ◦ يتم استخدام نموذج SPMD
        ◦ تتصرف مهمة واحدة كمهمة رئيسية لجمع النتائج وحساب قيمة PI
    • حل الشفرة المستعارة: المميزة باللون الأحمر تتغير للتوازي.



npoints = 10000
circle_count = 0

p = number of tasks
num = npoints/p

find out if I am MASTER or WORKER

do j = 1,num
  generate 2 random numbers between 0 and 1
  xcoordinate = random1
  ycoordinate = random2
  if (xcoordinate, ycoordinate) inside circle
  then circle_count = circle_count + 1
end do

if I am MASTER

  receive from WORKERS their circle_counts
  compute PI (use MASTER and WORKER calculations)

else if I am WORKER

  send to MASTER circle_count

endif


    • أمثلة البرامج:
    • برنامج MPI  في :   C https://computing.llnl.gov/tutorials/mpi/samples/C/mpi_pi_reduce.c
    • برنامج MPI في :   Fortran https://computing.llnl.gov/tutorials/mpi/samples/Fortran/mpi_pi_reduce.f


المعادلة الحرارية البسيطة - Simple Heat Equation


    • معظم المشاكل في الحوسبة المتوازية تتطلب التواصل بين المهام. وهناك عدد من المشاكل المشتركة تتطلب التواصل مع المهام المجاورة.
    • تصف معادلة الحرارة 2-D تغير درجة الحرارة مع مرور الوقت، نظرا لتوزيع درجة الحرارة الأولية وظروف الحدود.
    • يتم استخدام مخطط الفرق المحدود لحل معادلة الحرارة عدديا على منطقة مربعة.
        ◦ تمثل عناصر المصفوفة ثنائية الأبعاد درجة الحرارة عند النقاط على المربع.
        ◦ درجة الحرارة الأولية هي صفر على الحدود ومرتفعة في الوسط.
        ◦ تجرى درجة الحرارة الحدودية عند الصفر.
        ◦ يتم استخدام خوارزمية الوقت يخطو.
    • لحساب العنصر يتم  الاعتماد على قيم العنصر المجاورة:

    • يحتوي البرنامج التسلسلي على شفرة مثل:

do iy = 2, ny - 1
  do ix = 2, nx - 1
    u2(ix, iy) =  u1(ix, iy)  +
        cx * (u1(ix+1,iy) + u1(ix-1,iy) - 2.*u1(ix,iy)) +
        cy * (u1(ix,iy+1) + u1(ix,iy-1) - 2.*u1(ix,iy))
  end do
end do

    • أسئلة يجب طرحها:
        ◦ هل هذه المشكلة قادرة على أن تكون متوازية؟
        ◦ كيف يمكن تقسيم المشكلة؟
        ◦ هل تحتاج الى الاتصالات؟
        ◦ هل هناك أي تبعيات للبيانات؟
        ◦ هل هناك حاجة إلى التزامن؟
        ◦ هل تكون موازنة التحميل مصدر قلق؟

المعادلة الحرارية البسيطة
الحل المتوازي


    • هذه المشكلة أكثر صعوبة، حيث أن هناك تبعيات للبيانات، والتي تتطلب الاتصالات والتزامن.
    • يتم تقسيم مصفوفة كاملة وتوزيعها على شكل مصفوفات فرعية لجميع المهام. كل مهمة تمتلك جزء متساو من مجموع المصفوفة.
    • لأن كمية العمل متساوية، لا ينبغي أن يكون تحميلموازنة مصدر قلق
    • تحديد تبعيات البيانات:
        ◦  العناصر الداخلية التي تنتمي إلى مهمة مستقلة عن المهام الأخرى
        ◦ تعتمد العناصر الحدودية على بيانات المهمة المجاورة، مما يستلزم التواصل.

    • التنفيذ كنموذج: SPMD
        ◦ ترسل العملية الرئيسية المعلومات الأولية للعمليات العاملة، ثم تنتظر لجمع النتائج من جميع العاملات
        ◦ تحسب العمليات العاملة الحل ضمن عدد محدد من الخطوات الزمنية، وتتواصل عند الضرورة مع العمليات المجاورة
        ◦ حل الشفرة المستعارة: المميزة باللون الأحمر تتغير للتوازي.

find out if I am MASTER or WORKER

if I am MASTER
  initialize array
  send each WORKER starting info and subarray
  receive results from each WORKER

else if I am WORKER
  receive from MASTER starting info and subarray

  # Perform time steps
  do t = 1, nsteps
    update time
    send neighbors my border info
    receive from neighbors their border info
    update my portion of solution array
    
  end do
 
  send MASTER results
      
endif


    • أمثلة البرامج:
    • برنامج MPI  في :   C https://computing.llnl.gov/tutorials/mpi/samples/C/mpi_heat2D.c
    • برنامج MPI في :   Fortran https://computing.llnl.gov/tutorials/mpi/samples/Fortran/mpi_heat2D.f

معادلة الموجة 1-D  – 1-D Wave Equation


    • في هذا المثال، يتم حساب الاتساع على طول سلسلة موحدة، وتهتز بعد انقضاء فترة محددة من الزمن.
    • ويشمل الحساب ما يلي:
        ◦ الاتساع على المحور y
        ◦ i كمؤشر موضع على طول المحور x
        ◦ نقاط العقدة المفروضة على طول السلسلة
        ◦ تحديث السعة في خطوات زمنية منفصلة.

    • والمعادلة التي يتعين حلها هي معادلة الموجة أحادية البعد:

 A(i,t+1) = (2.0 * A(i,t)) - A(i,t-1) + (c * (A(i-1,t) - (2.0 * A(i,t)) + A(i+1,t))) 


حيث c ثابت
    • لاحظ أن السعة ستعتمد على الجداول الزمنية السابقة (t, t-1) والنقاط المجاورة  (i-1, i+1)
    • أسئلة يجب طرحها:
        ◦ هل هذه المشكلة قادرة على أن تكون متوازية؟
        ◦ كيف يمكن تقسيم المشكلة؟
        ◦ هل تحتاج للاتصالات؟
        ◦ هل هناك أي تبعيات للبيانات؟
        ◦ هل هناك حاجة إلى التزامن؟
        ◦ هل تكون موازنة التحميل مصدر قلق؟

معادلة الموجة 1-D - 1-D Wave Equation
الحل المتوازي
    • هذا مثال آخر عن مشكلة تتعلق بتبعيات البيانات. وسيتضمن الحل المتوازي كلا من الاتصالات والتزامن.
    • يتم تقسيم مصفوفة السعة بأكملها وتوزيعها على أنها مصفوفات فرعية لجميع المهام. كل مهمة تمتلك جزءا متساويا من إجمالي المصفوفة.
    • موازنة التحميل: تتطلب جميع النقاط عملا متساويا، لذلك يجب تقسيم النقاط بالتساوي
    • من شأن تفكيك الكتلة أن يقسم العمل إلى عدد من المهام كقطع، مما يسمح لكل مهمة بتملك نقاط بيانات متجاورة في الغالب.
    • تحتاج الاتصالات فقط ان تحدث على حدود البيانات. وكلما زاد حجم الكتلة كلما قل الاتصال على حدود البيانات.

    • التنفيذ كنموذج :SPMD
        ◦ ترسل العملية الرئيسية المعلومات الأولية إلى العمليات العاملة، ثم تنتظر جمع النتائج من جميع العمليات العاملة
        ◦ تقوم العمليات العاملة بحساب الحل ضمن عدد محدد من الخطوات الزمنية، والتواصل عند الضرورة مع العمليات المجاورة
    • حل الشفرة المستعارة: يدل اللون الأحمر على التغيرات للتوازي.

find out number of tasks and task identities

#Identify left and right neighbors
left_neighbor = mytaskid - 1
right_neighbor = mytaskid +1
if mytaskid = first then left_neigbor = last
if mytaskid = last then right_neighbor = first

find out if I am MASTER or WORKER
if I am MASTER
  initialize array
  send each WORKER starting info and subarray
else if I am WORKER`
  receive starting info and subarray from MASTER
endif

#Perform time steps
#In this example the master participates in calculations
do t = 1, nsteps
  send left endpoint to left neighbor
  receive left endpoint from right neighbor
  send right endpoint to right neighbor
  receive right endpoint from left neighbor

  #Update points along line
  do i = 1, npoints
    newval(i) = (2.0 * values(i)) - oldval(i)
    + (sqtau * (values(i-1) - (2.0 * values(i)) + values(i+1)))
  end do

end do

#Collect results and write to file
if I am MASTER
  receive results from each WORKER
  write results to file
else if I am WORKER
  send results to MASTER
endif


    • أمثلة البرامج:
    • برنامج MPI في C: https://computing.llnl.gov/tutorials/mpi/samples/C/mpi_wave.c
    • برنامج MPI في Fortran: https://computing.llnl.gov/tutorials/mpi/samples/Fortran/mpi_wave.f
هذا يكون البرنامج التعليمي قد اكتمل.
يرجى إكمال نموذج التقييم عبر الإنترنت

المراجع والمزيد من المعلومات


    • الكاتب :بليز بارني (Blaise Barney)، حوسبة ليفرمور.
    • سيؤدي بك البحث عن "البرمجة المتوازية" أو "الحوسبة المتوازية" على WWW إلى مجموعة واسعة من المعلومات.
    • اقتراحات للقراءة:
        ◦ "تصميم وبناء برامج متوازية." إيان فوستر(Ian Foster) .
        ◦ " مدخل إلى الحوسبة المتوازية ." أنانث غراما (Ananth Grama)، أنشول غوبتا (Anshul Gupta)، جورج كاريبيس (George Karypis)، فيبين كومار (Vipin Kumar) .
        ◦ "نظرة عامة على الحواسيب الفائقة الأخيرة ." آج فان دير ستين (A.J. van der Steen)، جاك دونجارا (Jack Dongarra) .
    • تم إنشاء الصور/الرسومات من قبل المؤلف، أو من قبل الموظفين الآخرين لـ LLNL ، أو تم الحصول عليها من غير حقوق طبع ونشر، أو من مصادر حكومية أو عامة (مثل  http://commons.wikimedia.org/)، أو تم استخدامها بإذن من المؤلفين من عروض أخرى وصفحات ويب.
    • التاريخ: تم تطوير هذه المواد من المصادر التالية، التي لم تعد محفوظة أو متاحة.
        ◦ برامج تعليمية موجودة في "ورشة البرمجة المتوازية SP" لمركزMaui High Performance Computing.
        ◦  برامج تعليمية موجودة في صفحة الويب "التعليم والتدريب" لمركز كورنيل ثوري (Cornell Theory).

Fahadالثلاثاء, 2017/09/19 - 2:13م
disqus

دروس في تعلم برنامج جمب من الصفر إلى الاحتراف

$
0
0
دروس في تعلم برنامج جمب من الصفر إلى الاحتراف

GIMP-2-6-ui-layout-big.jpg

بحمد الله قمنا بترجمة كامل الدروس التعليمية الرسميةفي موقع برنامج الرسم الاحترافي الحرة جمب ، وسنقوم بنشرها تحت تصنيف gimpعلى دفعات. في هذه الصفحة نعرض كل الدروس لتكون مرجع سهل لمتابعة الشروح.

المستوى: مبتدئ

1- جمب على السريع

2- SIMPLE FLOATING LOGO الشعار العائم البسيط

3- الرسم بحدود محددة Borders on selection

4- استخدم المسارات البسيطة (منحنيات بيزيه) باحترافية

5- القناع السريع

6- إزالة العين الحمراء Red eye removal

7- الخطوط المستقيمة Straight Line

8- أقنعة الطبقات (الشفافة) Layer Masks

المستوى: متوسط

9- رسم الأشكال باستخدام أداة المسار The Path Tool

10- درس في إزالة التسنن من خاصية العتبة Anti-Aliased Threshold

11- درس تعليمي عن الحبيبات الفلمية

12- تغيير لون الخلفية 1

13 - تغيير لون الخلفية 2

14 - تلوين سكتش (رسم تخطيطي) بالأبيض والأسود

15 - تصميم شعار عائم ثلاثي الأبعاد 3D

16- إنشاء تراكيب قابلة للتكرار Tilable Textures

17- تحريك رسومي بسيط (أنيميشن)

18- الدرس التعليمي للفراشي المخصصة

 

المستوى: متقدم

 

19 - أنابيب الصور Image Pipes

20- أنبوب الصور Image pipes 2

21- النص الذهبي Golden text

22- تأثير فلتر التمريرة العالية (لعمل مخطط سكتش )

23- تحويل صور إلى رسم photo to sketch

24- رسم فرشاة باستخدام جمب

25- إنشاء أيقونات icons باستخدام جمب

26- استخدام حزمة جمب للرسوم المتحركة GAP

27 - درس الرسوم المتحركة المتقدمة

28- التلوين الانتقائي في جمب

29- تخفيف تشويش CCD في الصورة باستخدام جمب

30- إزالة التشويش بواسطة تمويه البقع الانتقائي

31- إنشاء قناع تباين

32- التحويل إلى الأبيض والأسود الرقمي بشكل احترافي

33- تغيير تدرج اللون إلى البني الداكن Sepia Toning

34- التمويه الضبابي بالتراكب

35-إنقاذ جودة صورة ذات بقع إضاءة مشعة

36- مزج التعريض Blending Exposures

37- تقنية الشحذ الذكي “Smart” Sharpening

38- أقنعة اللمعان Luminosity Masks

39- تقطيع الصور للوب باستخدام جمب gimp

40- خريطة الصورة Image Map

41- كتابة ملحقات لجمب 1: العمل مع الصور

Fahadالثلاثاء, 2017/10/03 - 10:13ص
disqus

صدور PostgreSQL 10

$
0
0
صدور PostgreSQL 10

PostgreSQL_Logo.png

أعلنت مجموعة تطوير PostgreSQL العالمية عن الإصدار العاشرمن قاعدة البيانات مفتوحة المصدر PostgreSQL ، و هذا الإصدار ثمرة سنة كاملة من التطوير منذ الإصدار الماضي 9.6.

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

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


الميزة الثانية هي جعل ميزة تقسيم الجدول مضمنة في تعريف الجدول حين إنشاءه، و تقسيم الجدول أجزاء أصغر تسهل عملية إدارة البيانات و صيانتها ، كانت عملية تقسيم الجداول تتم بشكل يدوي في السابق ولكن الآن أصبح بالإمكان إتمامها بشكل آلي سهل بدون الحاجة إنشاء مطلقات trigger

الميزة الثالثة هو تحسين الاستعلامات المتوازية حيث استمرت الجهود في استغلال تعدد الأنوية لتحسين الأداء ، وفي هذه الإصدارة دعم أنواع مختلفة من المسح مثل Bitmap Heap Scan و Index Scan و Index-Only Scan ، و حسن كذلك عملية إعادة تجميع المخرجات.

الميزة الرابعة هو تدشين نظام التصويت Quorum Commit للتزامن ، وهو نظام يعطي كل عقدة من العقد التزامن صوت ، و عندما تجتمع عدة أصوات يمكن أتأكد بعدها أن المعلومات قد كتبت بأمان في عدة عقد، في هذه الإصدارة أصبح مدير قاعدة البيانات طريقتين لتجميع الأصوات الأولى بالأولوية وثانية بدون أولوية ، مما يتيح مرونة ضبط التزامن في أنظمة التكرار المعقدة.

و الميزة الخامسة هو دعم نظام التصاريح SCRAM-SHA-256 لتحسين أمان كلمات السر وطرق إرسالها و استقبالها.


وهناك المزيد يمكن الإطلاع عليه في صفحةما هو الجديدفي PostgreSQL10.
 

زايدالسبت, 2017/10/07 - 12:15م
disqus

بوستجريسكل كتاب الوصفات

$
0
0
بوستجريسكل كتاب الوصفات

cover-ar.jpg

أكثر من 90 وصفة عملية لإدارة فعالة، وتصميم الحلول باستخدام PostgreSQL


يسر فريق وادي التقنية إصدار " كتاب بوستجريسكل كتاب الوصفات ، أكثر من 90 وصفة عملية لإدارة فعالة و تصميم الحلول باستخدام PostgreSQL " ، تأليف تشيتيج تشوهان ، و هذا أول مرجع عربي حول قاعدة بيانات «PostgreSQL» هي قاعدة بيانات تتوفر على مجموعة واسعة من المنصات وهي واحدة من قواعد البيانات المفتوحة المصدر الأكثر شعبية المنتشرة في بيئات الإنتاج في جميع أنحاء العالم.

كما أنها واحدة من قواعد البيانات الأكثر تطورا، وتحوي مجموعة واسعة من المميزات التي تنافس حتى العديد من قواعد البيانات المملوكة التجارية.

هذا الكتاب يقدم لك نظرة ثاقبة ومعمقة في مختلف هذه الميزات وتطبيقاتها على «بوستجريسكل». فهو يهدف إلى أن يكون دليلاً عمليا لمديري قواعد البيانات ومطوري البرامج على حد سواء، مع تقديم الحلول المتعلقة بترحيل البيانات، تقسيم الجدولة، إمكانية توافر عالية وقابلية النسخ، أداء قاعدة البيانات، واستخدام لغات بيرل " Perl" وبايثون " Python" للتكامل مع «بوستجريسكل».


ماهي النقاط التي يغطيها هذا الكتاب؟


الفصل 1، إدارة قواعد البيانات وخادم «بوستجريسكل»، يساعدك هذا الفصل على إنشاء قواعد البيانات واستيعاب مفهوم المخططات والأدوار والمستخدمين والمجموعات، والجداول في خادم «بوستجريسكل».


الفصل 2، السيطرة على الأمن، يتيح لك رؤية وفهم الضوابط الأمنية ومستويات الأمن الموجودة في «بوستجريسكل», فبعد قراءتك لهذا الفصل، يجب أن تكون قادرا على فهم وضبط عناصر التحكم الأمنية الموجودة في خادم ««بوستجريسكل» ويجب أن تكون قادرا أيضا على استخدام اتصالات " طبقة المقابس الآمنة " "SSL" في «بوستجريسكل» من أجل تشفير البيانات.


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

الفصل 4، يقدم مهام الصيانة الروتينية، معلومات عن الصيانة الدورية للمهام التي تنفذ لتحقيق الأداء الأمثل.

الفصل 5، مراقبة النظام باستخدام أدوات "يونكس" "Unix"، ويغطي مختلف أوامر "يونكس" "Unix"/ "لينكس" "Linux" التي تفيد في استكشاف أخطاء وحدة المعالجة المركزية "CPU" والذاكرة و مشاكل الإدخال/الإخراج ذات الصلة. بعد قراءة هذا الفصل، يجب أن تكون قادرا على استكشاف الأخطاء وإصلاحها فيما يخص وحدة المعالجة المركزية "CPU"، والذاكرة، ومشاكل تنازع القرص بنجاح باستخدام مختلف أوامر "يونكس" "Unix".

الفصل 6، مراقبة نشاط قاعدة البيانات والتحقيق في قضايا الأداء، يعلمك الجوانب المختلفة المتعلقة بتحسين أداء «بوستجريسكل». فبعد قراءة هذا الفصل، يجب أن تكون قادرا على حل تناقضات القفل، والعثور على عبارات تشغيل SQL بطيئة ، وجمع الإحصاءات، ودراسة استخدام الفهرس، والتحقيق وحل مشاكل قاعدة بيانات «بوستجريسكل» المختلفة في بيئة الوقت الحقيقي.

الفصل 7، التوافر العالي وقابلية النسخ، هذا القسم يشرح مفهوم التوافر العالي وقابلية النسخ في «بوستجريسكل». وبعد قراءة هذا الفصل، سوف تكون قادرا على تنفيذ ميزة التوافر العالي وخيارات النسخ باستخدام تقنيات مختلفة بما في ذلك تدفق النسخ، تقنية "سلوني" "Slony" للنسخ المتماثل، النسخ باستخدام "بوكاردو" "Bucardo"، والنسخ باستخدام "لونغديست" "Longdiste". وفي نهاية المطاف، سوف تكون قادرا على تنفيذ جميع خدمات باقة، ، «بوستجريسكل» النشطة / غير النشطة المتاحة بشكل واسع باستخدام أدوات مفتوحة المصدر مثل "دربد" "DRBD"، "بايسمايكر" "Pacemaker"، و "كوروسينك" " Corosync".

الفصل 8 ، تجميع الاتصالات، ويتناول أساليب تجميع الاتصالات مثل "بي جي بول" "pgpool" و "بي جي باونس" "Pgbounce". التي تساعد على تقليل الفائض في قاعدة البيانات عندما يكون هناك عدد كبير من الاتصالات المتزامنة. وبعد قراءة هذا الفصل، يجب أن تكون قادرا على إعداد أساليب "بي جي بول" "pgpool" و"بي جي باونس" "Pgbounce".

الفصل 9، تقسيم الجدول ، ويشرح أساليب التقسيم المختلفة وتنفيذ الفصل المنطقي لبيانات الجدول إلى أقسام. كما يوفر هذا القسم أيضا حصولك على دراية بتطبيق التقسيم الأفقي باستخدام "بي أل/ بروكسي" "PL/Proxy".

الفصل 10، النفاذ إلى «بوستجريسكل» من خلال "بيرل" "Perl"، هذا الفصل يجعلك على دراية بإنشاء قاعدة البيانات والاتصالات، والنفاذ إلى البيانات، وأداء عمليات DML على قاعدة بيانات «بوستجريسكل» باستخدام برمجة "بيرل" "Perl".

الفصل 11، النفاذ إلى «بوستجريسكل» من خلال "بايثون" "Python"، ويظهر لك هذا الفصل كيفية إنشاء الاتصالات الخاصة بقاعدة بيانات والنفاذ إلى البيانات، وتنفيذ عمليات DML على قاعدة بيانات «بوستجريسكل» باستخدام برمجة "بايثون" "Python"،.

الفصل 12، نقل البيانات من قواعد البيانات الأخرى وتحديث باقة «بوستجريسكل»، ويغطي هذا الفصل التلقائيات المختلفة المتاحة لبدء التحديثات الرئيسية والثانوية لنسخة «بوستجريسكل». كما يزودك هذا الفصل أيضا بطريقة استخدام أداة "أوراكل غولدنغايت" "Oracle GoldenGate" لنسخ البيانات من قواعد البيانات الأخرى إلى «بوستجريسكل».

الترجمة العربية  مرخّصة برخصة المشاع الإبداعي نَسب المُصنَّف 4.0 دولي.

لتنزيل الكتاب: اضغط هنا. لتنزيل الشفرة المصدرية للأمثلة من هنا.

Fahadالاثنين, 2017/10/09 - 11:46ص
disqus

صدور كدي بلازما ٥.١١

$
0
0
صدور كدي بلازما ٥.١١

plasma-5.11.png

أعلن مجتمع سطح المكتب كدي عن إطلاق النسخةبلازما ٥.١١، التي أتت بالعديد من المميزات الجديدة من مثل إعادة تصميم تطبيق الإعدادات و تحسين نظام التنبيهات، و إضافة تطبيق "Vault" وهو  تطبيق يسمح للمستخدمين بأن يشفروا مجموعة من الملجدات أو الملفات بطريقة سهلة وآمنة.


أهم المميزات في بلازما ٥.١١


إعادة تصميم تطبيق الإعدادات


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

تحسين نظام التنبيهات


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

تحسين مدير المهام


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

خزانة بلازما


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

 

Fahadالأربعاء, 2017/10/11 - 10:27ص
disqus

كتاب تعلم البرمجة بلغة الـC

$
0
0
كتاب تعلم البرمجة بلغة الـC

Learn-to-program-with-C_AR.jpg
بعد 4 سنوات من العمل عليه،  أطلق حمزة عباد و عدن بلواضح  كتاب "تعلم البرمجة بلغة الـC" الّذي هو ترجمة لدرس Apprenez à programmer en Cالمكتوب باللغة الفرنسية، الخاص بموقع OpenClassroomsالشهير، لمؤلّفه Mathieu Nebra.

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


يتكوّن الكتاب من 31 فصلا موزّعة على 4 أجزاء. فصول الجزء الأوّل تحوّل القارئ من شخص لا علاقة له بالبرمجة إلى مبرمج مبتدئ قادر على استخدام أدوات البرمجة و مستوعب للمفاهيم الأساسيّة كأنواع البيانات، المتغيّرات، الشروط، الحلقات التكراريّة و الدوال. في الجزء الثاني، يتعلّم القارئ مفاهيم أكثر تقدّما في البرمجة، كالمؤشّرات، الجداول، السلاسل المحرفيّة و الهياكل بالإضافة إلى الحجز الحيّ للذاكرة و التعامل مع الملفّات. بعد ذلك، يتناول الجزء الثالث مبدأ استخدام المكتبات البرمجيّة مركّزا على استغلال مكتبة SDL لإنشاء النوافذ و الرسم فيها و مكتبة FMOD لتشغيل الصوت و استعمالهما لإنشاء برامج و ألعاب حقيقيّة. في الأخير، فصول الجزء الرابع تتناول مواضيع مكمّلة في لغة الـC تتمثّل في تقنيّات شائعة الاستخدام لتخزين البيانات، كالقوائم المتسلسلة، جداول التجزئة، المكدّسات و الطوابير.

يقول المترجم والمراجع:"لقد حرصنا على نقل كلّ الأفكار التي قدّمها الكاتب في الدرس الأصلي من بدايته إلى نهايته. كما بذلنا جهدنا في أن يكون النص بسيطا قدر الإمكان و مفهوما للقارئ العربي العادي. و في النهاية، لا يسعنا سوى أن نتطلّع بلهفة إلى تجريب برنامجك الخارق الّذي ستنئشئه بعد ختامك لهذا الكتاب ! "

 

فصول الكتاب

  • تقديم
  • مقدمة
  • أساسيّات البرمحة بلغة الـC
    • قلت برمجة ؟
    • الحصول على الأدوات اللازمة
    • برنامجك الأوّل
    • عالم المتغيّرات
    • حسابات سهلة
    • الشروط
    • الحلقات التكراريّة
    • عمل تطبيقي: "أكثر أو أقل"، لعبتك الأولى
    • الدوال
  • تقنيات متقدّمة في لغة الـC
    • البرمجة المجزأة
    • المؤشّرات
    • الجداول
    • السلاسل المحرفيّة
    • المعالج القبلي
    • أنشئ أنواع متغيّرات خاصة بك
    • قراءة و كتابة الملفّات
    • الحجز الحيّ للذاكرة
    • عمل تطبيقي: لعبة الـPendu
    • إدخال نص بشكل أكثر أمانا
  • إنشاء ألعاب 2D في SDL
    • تثبيت SDL
    • إنشاء نافذة و مساحات
    • إظهار صور
    • معالجة الأحداث
    • عمل تطبيقي: Mario Sokoban
    • تحكّم في الوقت
    • كتابة نصوص باستخدام SDL_ttf
    • تشغيل الصوت بـFMOD
    • عمل تطبيقي: الإظهار الطيفيّ للصوت
  • هياكل البيانات
    • القوائم المتسلسلة
    • المكدّسات و الطوابير
    • جداول التجزئة
  • الخاتمة

محتوى الكتاب حر و منشور تحت ترخيص المشاع الإبداعي، نسب المصنف - غير تجاري - الترخيص بالمثل، النسخة الثانية (CC-BY-NC-SA 2.0). الكتاب منشئ بلغة LaTeX و مترجم بمترجم XeLaTeX. يمكنكم إيجاد الشفرة المصدرية الكاملة لمحتوى الكتاب مع مزيد من المعلومات في المستودع الخاص بهذا الكتاب على GitHub.
لتنزيل الكتاب، يرجى الذهاب إلى صفحة الإصداراتالخاصة بالمستودع.

نوفر رابط بديل من هنا.

Fahadالسبت, 2017/10/14 - 1:01م
disqus

صدور أوبنتو 17.10

$
0
0
صدور أوبنتو 17.10

ubuntu-17.10-desktop.jpg
أطلقت شركة كانونيكلالإصدارة ١٧.١٠من توزيعة أوبنتو تحت مسمى (Artful Aardvark)، هذه التوزيعة جاءت بتغييرات تعتبر جذرية من ناحية توجهات شركة كانونيكل بخصوص سطح المكتب.

أول هذه التغييرات هو اعتماد سطح مكتب جنوم بشكل رئيسي لسطح المكتب واستبعاد سطح مكتب يونتي،  وثاني هذه التغييرات هي اعتماد Wayland بدلا عن Mir ، كذلك اعتماد GDM بدلا عن LightDM كمدير للعرض.

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

من ناحية البرامج فهذه الإصدارة تأتي بحزمة ليبرأوفيس ٥.٤ و نواة لينكس ٤.١٣

يمكنكم تنزيل هذه الإصدارة عبر هذا الرابط

Fahadالأحد, 2017/10/22 - 12:55م
disqus

كتاب " خطوة بخطوة لنحترف GIMP "

$
0
0
كتاب " خطوة بخطوة لنحترف GIMP "

step_by_step_to_learn_gimp_itwadi.com.png

اليوم نوفر كتاب " خطوة بخطوة لنحترف GIMP “ ليكون متوفرا لتنزيل بشكل مجاني للجميع، ليستفيد من كل أفراد الوطن العربي.

جاء كتاب "خطوة بخطوة لنحترف GIMP “ بدعم منهيئة تقنية المعلوماتبسلطنة عمان، لتوفير الكتب العربية حول البرمجيات الحرة بشكل مجاني. الكتاب طبع ووزع في عام ٢٠١٥م.

الكتاب من تأليف الأستاذة منى باعمر و الأستاذة موزة الوهيبية، هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي نَسب المُصنَّف - الترخيص بالمثل 4.0 دولي.

جاء في المقدمة:

" منذ دخولنا لمجال الحاسوب لم يكن في مخيلتنا أن يكون لنا هذا الإسهام البسيط في تقديم مادة تعليمية تسهم في نشر المعرفة ولو جزءًا بسيطًا من بحرها في وطننا الحبيب.

ولكن بعد معرفتنا بتطبيقات البرمجيات الحرة واقتحامها لأفكارنا فرضت علينا احترامها فتمنينا أن لا نحبس هذه المعلومة بداخلنا وأن نسعى لنشر العلم وذلك تطبيقا لقوله صلى الله عليه وسلم « لا خير في كاتم العلم».

ولا شك أن انضمامنا لفريق تدريب البرمجيات الحرة كان الدافع بأن نقدم ما لدينا إيمانًا ويقينًا بدورنا كناشرات لعلم جديد في عالم تقنية المعلومات الذي أصبح جزءًا مهمًا من حياتنا وعالمنا.

ولذلك عزمنا النية على أن نسهم بجهدنا لسد أي فجوة في المادة التعليمية لتلك البرمجيات الحرة، ورأينا أن هذا البرنامج الحيوي والمهم للغاية دروسُه قليلةٌ جدًا وفكرنا في أن نبدأ في تقديم دورة له وهي « خطوة بخطوة لنحترف الجمب» .

وبعد التحاقنا بدورة في البرمجيات الحرة وتعرفنا على البرنامج شرعنا في تعلمه بشكل أعمق وعلى الرغم من عدم وجود أي مصادر عربية لهذا البرنامج إلا أننا اعتمدنا على بعض وثائق البرنامج وكانت باللغة الانجليزية.

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

 

فهرس الكتاب:

المقدمة

الجزء الأول: ((دليل استخدام برنامج الجمب)

الفصل الأول: مقدمة حول البرمجيات الحرة

الفصل الثاني: مقدمة حول برنامج الجمب

تعريف برنامج الجمب

تأسيس برنامج الجمب

مميزات النسخة الجديدة 2.8 من الجم

الحصول على برنامج الجمب

فتح برنامج الجمب

الفصل الثالث: واجهة برنامج الجمب

تفصيل واجهة الجمب

أولًا: شرح سريع لصندوق الأدوات

شريط الخيارات المتغيرة

ثانيًا: الألواح و الإطارات

الفصل الرابع: العمل مع برنامج الجمب

العمل مع البرنامج

إنشاء ملف جديد

طريقة فتح الصور في البرنامج

شرح عناصر نافذة الصورة

احفظ عملك

طرق الحفظ

نوع ملف الحفظ

الفصل الخامس: مقدمة حول قوائم برنامج الجمب

القوائم

قائمة File

قائمة Edit

قائمة Select

قائمة View

قائمة Image

قائمة Layer

قائمة Color

قائمة Tools

قائمة Filter

قائمة Windows

قائمة Help

الفصل السادس: الرسم في الجمب

إنشاء صورة جديدة

استخدام الطبقات للرسم

خصائص النافذة الحوارية للطبقات

رسم الخطوط والمنحنيات

الرسم بخطوط حادة: أداة القلم

خيارات عرض أيقونات فرش جمب

الفرش

أنواع الفرش

خصائص الفرش

مقارنة بين الفرش البارا مترية والفرش الصورة

خيارات أدوات الرسم

أنماط أدوات الرسم

رسم خطوط ضبابية أو ناعمة: أداة فرشاة التلوين

الاختلافات بين أداة القلم و أداة فرشاة التلوين

مميزات أداة فرشاة التلوين

أداة فرشاة الهواء

خصائص أداة فرشاة الهواء

أداة الحبر

خصائص أداة الحبر

أداة الممحاة

خصائص أداة الممحاة

ظروف مختلفة لاستخدام خاصية مضاد المسح

رسم الدوائر والمستطيلات وأشكال أخرى

رسم حواف التحديد.

خصائص النافذة الحوارية رسم حواف التحديد

أداة التحديد الحر

ملء المناطق

أداة الملء بالدلو

خصائص أداة الملء بالدلو

الأنماط

أداة المزج

اختيار التدرجات

خصائص أخرى للتدرجات

عندما لا تستطيع الرسم في الجمب

الفصل السابع: الطبقات في الجمب

استخدام الطبقات لإضافة النص

إضافة النص

استخدام أداة النقل

تغيير الألوان

الظل الساقط

تطبيق المؤثرات

استخدام الطبقات للنسخ

عناصر صندوق الحوار

الجزء الثاني: ((تدريبات عملية في برنامج الجمب))

تطبيقات على النص باستخدام قائمة Filter و الأداة blend

الدرس الأول: استعمال خصائص الكتابة

الطريقة الأولى: استخدام قائمة Filter.

بعض التطبيقات للطريقة الأولى

الطريقة الثانية: استخدام الأداة blend.

بعض التطبيقات للطريقة الثانية

الدرس الثاني: انعكاس النص.

بعض التطبيقات لتغيير زاوية الكتابة

الدرس الثالث: صنع بلورة في الجمب

بعض التطبيقات لصنع البلورة

الدرس الرابع: عمل تأثيرات للصور باستخدام Quick Mask

تطبيقات لتأثيرات الصور باستخدام Quick Mask

الدرس الخامس: انعكاس الصورة على الماء

بعض التطبيقات لانعكاس الصورة على الماء

الدرس السادس: البخار المتصاعد من كوب قهوة ساخن

بعض التطبيقات على البخار المتصاعد

الدرس السابع: خروج الأشياء من إطار الصورة

بعض التطبيقات لخروج الأشياء من إطار الصورة

لتنزيل الكتاب من هنا.

Fahadالثلاثاء, 2017/11/14 - 10:45ص
disqus

كتاب " تعلم برنامج Inkscape خطوة ... خطوة "

$
0
0
كتاب " تعلم برنامج Inkscape خطوة ... خطوة "

learn_inkscape_setp_by_step_itwadi.com.png

يسعدنا اليوم أن نقدم الكتاب الثاني "تعلم Inkscape خطوة .. خطوة " تأليف الأستاذة حنان بنت حمدان العبرية، وبدعم منهيئة تقنية المعلوماتبسلطنة عمان، لتوفير الكتب العربية حول البرمجيات الحرة بشكل مجاني. الكتاب طبع ووزع في عام ٢٠١٥م.

تقول المؤلفة في المقدمة:

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

فهرس الكتاب:

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

لتنزيل الكتاب من هنا.

Fahadالأحد, 2017/11/19 - 11:23ص
disqus

كتاب " تعلم بسهولة برنامج ليبر أوفيس كالك "

$
0
0
كتاب " تعلم بسهولة برنامج ليبر أوفيس كالك "

learn_libreoffic_calc_easily_itwadi.com.png

يسعدنا اليوم أن نقدم الكتاب الثالث "تعلم بسهولة برنامج ليبر أوفيس كالك " تأليف الأستاذة فوزية بينت سعيد العامرية و الإستاذ أحمد بن محمد الرحبي، وبدعم منهيئة تقنية المعلوماتبسلطنة عمان، لتوفير الكتب العربية حول البرمجيات الحرة بشكل مجاني. الكتاب طبع ووزع في عام ٢٠١٥م. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي نَسب المُصنَّف - الترخيص بالمثل 4.0 دولي.

يقول المؤلفان في المقدمة:

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

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

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

فهرس الكتاب

هذا الكتاب يشرح برنامج الجداول الالكترونية Calc وقد تم تقسيمه إلى مقدمة وعدة فصول.

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

هذا وسنناقش أيضا إمكانية عرض البيانات في رسوم بيانية باستخدام المخططات البيانية وتحليل بيانات أوراق العمل . وأيضا إمكانية عرض البيانات في رسوم بيانية باستخدام المخططات البيانية ، وتحليل بيانات أوراق العمل كما تبدو في الجداول أو الرسوم البيانية .

وأخيرا سنتطرق إلى شرح قائمة البيانات وكيفية عمل التصفية المتقدمة والمجاميع الفرعية والصلاحية والدمج والتجميع والتخطيط وأخيرا سنتطرق إلى الأمر Pivot Table .”

لتنزيل الكتاب من هنا.

Fahadالاثنين, 2017/11/27 - 7:12ص
disqus
Viewing all 580 articles
Browse latest View live