نظرة عامة على الحوسبة

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

وحدات EECU

نظرة عامة

وحدة الحوسبة في Earth Engine‏ (EECU) هي آلية لتمثيل مقدار قوة المعالجة الفورية. يتتبّع Earth Engine إجمالي البصمة الحسابية للمهام كدالة لاستخدام EECU بمرور الوقت (ثواني EECU وساعات EECU وما إلى ذلك). بما أنّ Google لديها العديد من الأنواع المختلفة من أنوية المعالجات والبُنى وما إلى ذلك، تُعدّ وحدات EECU تجريدًا مفيدًا للحديث عن القوة الحاسوبية.

الحافز

غالبًا ما يريد مستخدمو EE إجراء تقديرات حول مقدار قوة المعالجة المطلوبة لسير العمل، وتوفر وحدات EECU مقياسًا ثابتًا لإجراء المقارنات.

المقارنة مع مقاييس وحدة المعالجة المركزية (CPU)

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

الثبات وإمكانية التوقّع

قد يؤدي إرسال الطلبات نفسها (أو طلبات مشابهة) إلى Earth Engine في بعض الأحيان إلى كميات مختلفة جدًا من العمليات الحسابية. تشمل العوامل الشائعة للاختلافات ما يلي:

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

مقاييس الأداء

استكشاف نماذج مقاييس أداء عمليات الحوسبة في Earth Engine

مقاييس الطلبات التي تعذّر تنفيذها

لا يوفّر Earth Engine مقاييس أداء للطلبات أو المهام التي تعذّر تنفيذها، لأنّ هذه الأرقام ستكون غير دقيقة أو مضلِّلة. على سبيل المثال، إذا تعذّر إكمال مهمة بسبب عدم استجابة إحدى مهام العامل، لن يتم احتساب استهلاك المعالجة لهذا العامل ضمن الإجمالي.

المحلّل

يوفّر المحلّل معلومات عن وقت EECU واستخدام الذاكرة (لكل خوارزمية ومادة عرض) الناتج عن العمليات الحسابية التي يتم إجراؤها أثناء تفعيله. يتوافق كل صف في مخرجات المحلّل مع خوارزمية أو عملية حسابية أو تحميل مادة عرض أو عملية إضافية كما هو موضّح في عمود "الوصف". الأعمدة في أداة التحليل هي:

الوصف
وصف نصي للعملية الحسابية أو الخوارزمية أو تحميل مادة العرض أو العملية الإضافية التي يتم تحليلها
العدد
مؤشر يتناسب مع عدد مرات استدعاء العملية الموضحة في "الوصف".
الحوسبة
مؤشر على وقت EECU الذي استغرقته العمليات
الذاكرة الحالية

لا يظهر هذا العمود إلا إذا حدث خطأ بسبب النص البرمجي

استخدمت مساحة كبيرة جدًا من الذاكرة. ويعرض مقدار الذاكرة قيد الاستخدام على أي عقدة حوسبة واحدة في لحظة حدوث الخطأ.

أعلى معدّل استخدام للذاكرة

الحد الأقصى للذاكرة المستخدَمة في أي عقدة حوسبة واحدة للعملية

جارٍ تفعيل أداة التحليل

أداة تعديل الرموز

استخدِم زر "التشغيل باستخدام أداة تحليل الأداء"، كما هو موضّح في دليل أداة تعديل الرموز.

Python

أدرِج الرمز التالي في نص Python البرمجي لتفعيل المحلِّل:

with ee.profilePrinting():
   print(ee.Number(3.14).add(0.00159).getInfo())

ستتم طباعة الملف الشخصي عند انتهاء السياق، سواء حدث أي خطأ في السياق أم لا.

لالتقاط الملف الشخصي كسلسلة، اكتب الملف الشخصي في مخزن مؤقت للسلسلة:

import io

out = io.StringIO()
with ee.profilePrinting(destination=out) as p:
    print(ee.Number(3.14).add(0.00159).getInfo())

print('Output:')
print(out.getvalue())

في ما يلي اقتراح لتحويل سلسلة الملف الشخصي إلى جدول لتسهيل تحليلها في Colab ودفاتر ملاحظات Jupyter (يُرجى العِلم أنّ هذه مجرد طريقة واحدة وقد لا تكون مناسبة لجميع الحالات):

import re
import pandas as pd

lines = out.getvalue().split('\n')

column_names = re.split(r'\s{1,}', lines[0])
column_names = [name.strip() for name in column_names if name.strip()]

data = [
    [element for element in re.split(r'\s{2,}', line) if element.strip()]
    for line in lines[1:-1]
]

df = pd.DataFrame(data, columns=column_names)
display(df)