أكثر

Grass GIS: عدد أنوية وحدة المعالجة المركزية المطلوب استخدامها

Grass GIS: عدد أنوية وحدة المعالجة المركزية المطلوب استخدامها


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

هل هذا ممكن أيضًا في Grass GIS؟


لم يتم تحسين GRASS بشكل كامل مع التشغيل بالتوازي لأنه لا يقفل الملفات التي تتم معالجتها. من ويكي GRASS:

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

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

ومع ذلك ، توجد مكتبة المعادلات التفاضلية الجزئية GRASS (GPDE) المصممة للعمل مع OpenMP وهي قادرة على خيوط المعالجة المتعددة.

كان هناك أيضًا بعض التطوير في مكتبات gpde و gmath حيث تستفيد وظائف معينة من الأنظمة متعددة النواة:


هناك العديد من الطرق للتوازي. تتم موازاة بعض وحدات GRASS GIS داخليًا باستخدام OpenMP أو pthreads عندما يتم تجميع GRASS GIS بالطريقة التي يتم دعمها بها. ينطبق هذا على الوحدات المكتوبة بلغة C ، حيث تستخدم الوحدات المتوازية المكتوبة بلغة Python طرقًا مختلفة في Python للتوازي بناءً على العمليات. هذه الوحدات عادة ما يكون لها خيارnprocلتعيين عدد العمليات التي سيتم استخدامها. مثال على ذلكص الشمس يوميافي مستودع إضافات GRASS GIS (ملاحظةnproc = 4):

r.sun.daily الارتفاع = elev_lid792_1m glob_rad_basename = daily_rad  start_day = 255 end_day = 302 -t nproc = 4

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

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

لدى Python عدة طرق لمساعدتك في موازاة الأشياء. تقدم GRASS GIS نفسها أدوات متخصصة في GRASS GIS والمهام الجغرافية المكانية ، وهيParallelModuleQueueوالشبكة:

يحتوي GRASS wiki على اقتراحات حول كيفية القيام بالتوازي بنفسك في Python و Bash:

في Bash ، الموازاة الأساسية على مستوى العمليات تافهة: مجرد إضافة&في نهاية الأوامر وباستخدامانتظرلربط العمليات مرة أخرى:

ينام 10 وينام 10 وينام 10 وينام 10 وينتظر

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

اقرأ أيضًا دعنا نتوازي! بواسطة Graeme Bell (عرض تقديمي من FOSS4G-E Como) والذي يعطي الكثير من الأفكار الجيدة للمعالجة المتوازية من وجهة نظر GIS والبرمجة: