আর্থ ইঞ্জিন ব্যাপক আকারে গণনা সম্পাদনের জন্য Google-এর সরঞ্জাম এবং পরিষেবাগুলির উপরে তৈরি করা হয়েছে৷ বৃহৎ ভূ-স্থানিক বিশ্লেষণ চালানো সহজ করার জন্য, আর্থ ইঞ্জিন প্ল্যাটফর্ম এবং API অন্তর্নিহিত সমান্তরাল-প্রক্রিয়াকরণ অবকাঠামোর অনেক জটিলতা লুকিয়ে রাখে।
EECU
ওভারভিউ
একটি আর্থ ইঞ্জিন কম্পিউট ইউনিট (EECU) তাত্ক্ষণিক প্রক্রিয়াকরণ শক্তির পরিমাণের প্রতিনিধিত্ব করার জন্য একটি প্রক্রিয়া। আর্থ ইঞ্জিন সময় (EECU-সেকেন্ড, EECU-ঘন্টা, ইত্যাদি) তাদের EECU ব্যবহারের ফাংশন হিসাবে কার্যগুলির মোট গণনামূলক পদচিহ্ন ট্র্যাক করে। যেহেতু Google এর বিভিন্ন ধরণের প্রসেসর কোর, আর্কিটেকচার ইত্যাদি রয়েছে, তাই EECU গুলি গণনাগত শক্তি সম্পর্কে কথা বলার জন্য একটি দরকারী বিমূর্ততা।
প্রেরণা
EE ব্যবহারকারীরা প্রায়ই তাদের কর্মপ্রবাহের জন্য প্রয়োজনীয় প্রক্রিয়াকরণ শক্তির পরিমাণ সম্পর্কে অনুমান করতে চায় এবং EECU তুলনা করার জন্য একটি সামঞ্জস্যপূর্ণ মেট্রিক প্রদান করে।
CPU মেট্রিক্সের সাথে তুলনা
একটি নির্দিষ্ট ফলাফলে কাজ করা মেশিনের সংখ্যা, ধরন এবং আর্কিটেকচার সময়ের সাথে পরিবর্তিত হতে পারে। যেহেতু বিভিন্ন ভৌত কোরের বিভিন্ন কর্মক্ষমতা বৈশিষ্ট্য থাকতে পারে, আর্থ ইঞ্জিন EECU ব্যবহার করে সমস্ত প্রক্রিয়াকরণকে বিমূর্ত করে। একটি EECU-ঘন্টা (অথবা EECU-সময়ের অন্য কোনো একক) প্রাচীর ঘড়ির সময়ের সাথে সঙ্গতিপূর্ণ নয়, তাই যে কাজটি 10 EECU-ঘন্টা খরচ করে তার কয়েক মিনিটের একটি পর্যবেক্ষণ রানটাইম থাকতে পারে।
স্থিতিশীলতা এবং অনুমানযোগ্যতা
আর্থ ইঞ্জিনে একই (বা অনুরূপ) অনুরোধ পাঠানোর ফলে কখনও কখনও গণনার খুব ভিন্ন পরিমাণ হতে পারে। পার্থক্যের সাধারণ ড্রাইভারগুলির মধ্যে রয়েছে:
- ক্যাশিং , যেমন পূর্ববর্তী গণনার ফলাফল পুনরায় ব্যবহার করা (আংশিক বা মধ্যবর্তী ফলাফল সহ)
- বিভিন্ন অন্তর্নিহিত তথ্য , যেমন বিভিন্ন সংখ্যক স্যাটেলাইট চিত্র, বিভিন্ন জটিলতার জ্যামিতি ইত্যাদি।
- EE প্ল্যাটফর্মে অ্যালগরিদম পরিবর্তন , কর্মক্ষমতা অপ্টিমাইজেশান, বাগফিক্স, ইত্যাদি সহ।
- ক্লায়েন্ট লাইব্রেরিতে পরিবর্তন , বিশেষ করে যদি আপনি অন্য ব্যবহারকারীদের EE কোড বা প্যাকেজের উপর নির্ভর করেন
মানদণ্ড
নমুনা আর্থ ইঞ্জিন গণনা বেঞ্চমার্কগুলি অন্বেষণ করুন৷
ব্যর্থ অনুরোধের মেট্রিক্স
আর্থ ইঞ্জিন ব্যর্থ অনুরোধ/কাজের জন্য পারফরম্যান্স মেট্রিক্স প্রদান করে না, যেহেতু এই সংখ্যাগুলি ভুল বা বিভ্রান্তিকর হবে। একটি উদাহরণ হিসাবে, যদি একটি কাজ ব্যর্থ হয় কারণ একটি কর্মীর কাজ প্রতিক্রিয়াহীন হয়ে পড়ে, সেই কর্মীর প্রক্রিয়াকরণ খরচ মোটের মধ্যে ফ্যাক্টর করতে সক্ষম হবে না।
প্রোফাইলার
প্রোফাইলার 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 Notebook-এ সহজ বিশ্লেষণের জন্য প্রোফাইল স্ট্রিংকে টেবিলে পরিণত করার জন্য এখানে একটি পরামর্শ দেওয়া হল (মনে রাখবেন এটি শুধুমাত্র একটি পদ্ধতি এবং সব ক্ষেত্রে উপযুক্ত নাও হতে পারে):
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)