بررسی اجمالی محاسبات

Earth Engine بر روی ابزارها و خدمات گوگل برای انجام محاسبات در مقیاس عظیم ساخته شده است. برای سهولت اجرای تجزیه و تحلیل‌های بزرگ جغرافیایی، پلتفرم Earth Engine و API بسیاری از پیچیدگی‌های زیرساخت‌های پردازش موازی زیرین را پنهان می‌کنند.

EECU ها

نمای کلی

یک واحد محاسباتی موتور زمین (EECU) مکانیزمی برای نمایش مقداری از قدرت پردازش آنی است. Earth Engine کل ردپای محاسباتی وظایف را به عنوان تابعی از استفاده از EECU آنها در طول زمان (EECU-ثانیه، EECU-ساعت و غیره) ردیابی می کند. از آنجایی که گوگل انواع مختلفی از هسته‌های پردازشگر، معماری‌ها و غیره دارد، EECU یک انتزاع مفید برای صحبت در مورد قدرت محاسباتی است.

انگیزه

کاربران EE اغلب می خواهند در مورد میزان توان پردازشی مورد نیاز برای گردش کار خود تخمین بزنند و EECU معیاری ثابت برای انجام مقایسه ارائه می دهد.

مقایسه با معیارهای CPU

تعداد، نوع و معماری ماشین‌هایی که روی یک نتیجه خاص کار می‌کنند می‌تواند در طول زمان تغییر کند. از آنجایی که هسته های فیزیکی مختلف می توانند ویژگی های عملکرد متفاوتی داشته باشند، Earth Engine تمام پردازش ها را با استفاده از EECU خلاصه می کند. یک ساعت EECU (یا هر واحد دیگری از زمان EECU) با زمان ساعت دیواری مطابقت ندارد، بنابراین کاری که 10 ساعت EECU مصرف می کند ممکن است تنها چند دقیقه زمان اجرا مشاهده شده داشته باشد.

ثبات و قابل پیش بینی

ارسال درخواست‌های یکسان (یا مشابه) به Earth Engine گاهی اوقات می‌تواند به مقادیر بسیار متفاوتی از محاسبات منجر شود. محرک های رایج تفاوت ها عبارتند از:

  • ذخیره سازی ، مانند استفاده مجدد از نتایج محاسبات قبلی (از جمله نتایج جزئی یا میانی)
  • داده‌های زیربنایی مختلف ، مانند تعداد متفاوت تصاویر ماهواره‌ای، هندسه‌هایی با پیچیدگی‌های مختلف و غیره.
  • تغییرات الگوریتم در پلتفرم EE، از جمله بهینه سازی عملکرد، رفع اشکال و غیره.
  • تغییرات در کتابخانه های سرویس گیرنده ، به خصوص اگر به کد یا بسته های EE کاربران دیگر وابسته باشید

معیارها

نمونه معیارهای محاسباتی Earth Engine را کاوش کنید.

معیارهای درخواست های ناموفق

Earth Engine معیارهای عملکرد را برای درخواست‌ها/وظایف ناموفق ارائه نمی‌کند، زیرا این اعداد نادرست یا گمراه‌کننده هستند. به عنوان مثال، اگر یک شغل به دلیل عدم پاسخگویی یک کار کارگر شکست بخورد، مصرف پردازشی آن کارگر نمی تواند در کل محاسبه شود.

نمایه ساز

نمایه ساز اطلاعاتی درباره زمان EECU و میزان مصرف حافظه (به ازای هر الگوریتم و دارایی) حاصل از محاسبات انجام شده در زمانی که فعال است، ارائه می دهد. هر سطر در خروجی پروفایل مربوط به یک الگوریتم، محاسبات، بار دارایی یا عملیات سربار است که در ستون "توضیحات" توضیح داده شده است. ستون های پروفایلر عبارتند از:

توضیحات
شرح متنی محاسبات، الگوریتم، بار دارایی یا عملیات سربار که نمایه می شود.
بشمار
یک نشانگر متناسب با تعداد دفعاتی که عملیات توصیف شده در "توضیحات" فراخوانی شده است.
محاسبه کنید
نشانگر EECU-زمان گرفته شده توسط عملیات (ها).
یادداشت فعلی

این ستون فقط در صورتی ظاهر می شود که به دلیل اسکریپت خطایی وجود داشته باشد

حافظه زیادی استفاده کرد مقدار حافظه مورد استفاده در هر گره محاسباتی را در لحظه وقوع خطا نشان می دهد.

قله مم

حداکثر حافظه مورد استفاده در هر گره محاسباتی برای عملیات.

فعال کردن نمایه ساز

ویرایشگر کد

همانطور که در راهنمای ویرایشگر کد توضیح داده شده است، از دکمه "اجرا با پروفایلر" استفاده کنید.

پایتون

کد زیر را در اسکریپت پایتون خود وارد کنید تا پروفایلر فعال شود:

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)