কম্পিউট ইঞ্জিনে পাই গণনা করুন

1. ভূমিকা

এই কোডল্যাব খোলার জন্য আপনাকে ধন্যবাদ! কম্পিউট ইঞ্জিনে কিছু সংখ্যা ক্রাঞ্চ করতে প্রস্তুত?

এই কোডল্যাবে, আমরা কীভাবে একটি নতুন ভার্চুয়াল মেশিন শুরু করতে হয় এবং পাই গণনা করার জন্য একটি প্রোগ্রাম চালাতে হয় তা দেখব।

আপনি একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করবেন, ডাউনলোড করবেন, কম্পাইল করবেন এবং পাই গণনা করার জন্য একটি প্রোগ্রাম চালাবেন। আপনি কনসোল বা কমান্ড লাইন থেকে একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করতে পারেন। এই ল্যাবটি আপনাকে কমান্ড লাইন টুল ব্যবহার করে নিয়ে যাবে।

ComputeEngine_128px.png

কম্পিউট ইঞ্জিন বিভিন্ন আকারে চলমান ভার্চুয়াল মেশিন অফার করে, যেমন বিভিন্ন সংখ্যার কোর, মেমরির আকার এবং স্টোরেজ। প্রয়োজনে আপনি 100 টিরও বেশি কোর এবং কয়েকশ GB মেমরি সহ একটি মেশিন ব্যবহার করতে পারেন, তবে এই উদাহরণে আমরা একটি পূর্বনির্ধারিত 2 vCPU, 8 GB মেমরি ভার্চুয়াল মেশিন চালু করব।

আমরা এই কোডল্যাবে N2 মেশিন সিরিজ ব্যবহার করব। এটি একটি সাধারণ-উদ্দেশ্য মেশিন পরিবার VM যা বেশিরভাগ মানক এবং ক্লাউড-নেটিভ ওয়ার্কলোডকে লক্ষ্য করে। N2 সিরিজের প্রতি-থ্রেড পারফরম্যান্স এবং সাধারণ-উদ্দেশ্য মেশিন পরিবার অফার করে এমন সমস্ত নমনীয়তা রয়েছে।

এখন, শুরু করা যাক!

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন এবং এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

গুগল ক্লাউড শেল

যদিও Google ক্লাউড এবং কম্পিউট ইঞ্জিন আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আমরা Google ক্লাউড শেল ব্যবহার করব, ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

এই ডেবিয়ান-ভিত্তিক ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জামগুলির সাথে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এর মানে হল যে এই কোডল্যাবের জন্য আপনার যা দরকার তা হল একটি ব্রাউজার (হ্যাঁ, এটি একটি Chromebook এ কাজ করে)।

  1. ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল ক্লাউড শেল সক্রিয় করুন ক্লিক করুন b125d9eb26a46cc5.png (পরিবেশের সাথে সংযোগ স্থাপন এবং সংযোগের জন্য এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে)।

1067942a9a93f70.png

স্ক্রীন শট 2017-06-14 10.13.43 PM.png এ

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID তে সেট করা আছে।

gcloud auth list

কমান্ড আউটপুট

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি, কোন কারণে, প্রকল্পটি সেট করা না হয়, কেবল নিম্নলিখিত কমান্ডটি জারি করুন:

gcloud config set project <PROJECT_ID>

আপনার PROJECT_ID খুঁজছেন? সেটআপ ধাপে আপনি কোন আইডি ব্যবহার করেছেন তা দেখুন বা ক্লাউড কনসোল ড্যাশবোর্ডে দেখুন:

cc3895eeac80db2c.png

ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা আপনার ভবিষ্যত কমান্ড চালানোর সময় কার্যকর হতে পারে।

echo $GOOGLE_CLOUD_PROJECT

কমান্ড আউটপুট

<PROJECT_ID>
  1. অবশেষে, ডিফল্ট জোন এবং প্রকল্প কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন জোন বিভিন্ন চয়ন করতে পারেন. আরও তথ্যের জন্য, অঞ্চল এবং অঞ্চল দেখুন।

3. একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করুন

প্রথমে, আমরা gcloud কমান্ড-লাইন টুল দিয়ে একটি ভার্চুয়াল মেশিন তৈরি করব। আপনি চাইলে কনসোলও ব্যবহার করতে পারেন, তবে কমান্ড লাইনটি পুনরাবৃত্তি করা এবং ব্যাখ্যা করা সহজ।

চলুন প্রথমে অপারেটিং সিস্টেম হিসাবে ডেবিয়ান 11 এর সাথে pi-codelab নামে একটি n2-standard-2 উদাহরণ তৈরি করি। আমরা বুট ভলিউমের জন্য ব্যালেন্সড পারসিস্টেন্ট ডিস্ক (পিডি) ব্যবহার করব। ভারসাম্যপূর্ণ পিডিগুলি সলিড-স্টেট ড্রাইভ (SSD) দ্বারা সমর্থিত এবং কর্মক্ষমতা এবং খরচের ভারসাম্য বজায় রাখে। আপনি সেটআপ এবং প্রয়োজনীয়তা বিভাগে ডিফল্ট জোন নির্বাচন না করলে কোন অঞ্চলটি ব্যবহার করবেন তা জিজ্ঞাসা করবে।

gcloud compute instances create pi-codelab \
--machine-type=n2-standard-2 \
--image-project=debian-cloud \
--image-family=debian-11 \
--boot-disk-type=pd-balanced

কমান্ডের ফলাফল এই মত হওয়া উচিত:

Created [https://www.googleapis.com/compute/v1/projects/xxx/zones/us-central1-f/instances/pi-codelab].
NAME: pi-codelab
ZONE: us-central1-f
MACHINE_TYPE: n2-standard-2
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.XX
EXTERNAL_IP: XX.XX.XX.XX
STATUS: RUNNING

অনুগ্রহ করে মনে রাখবেন INTERNAL_IP এবং EXTERNAL_IP ক্ষেত্রগুলি যখনই আপনি একটি নতুন VM তৈরি করেন তখন পরিবর্তন হয়৷

আপনি যদি gcloud compute instances create কমান্ড সম্পর্কে আরও জানতে চান, অনুগ্রহ করে রেফারেন্স পৃষ্ঠা দেখুন।

4. ইনস্ট্যান্সে SSH

কমান্ড লাইন থেকে উদাহরণে SSH করতে, নিম্নলিখিত কমান্ডটি চালান।

gcloud compute ssh pi-codelab

তাই তো! এখন আপনি ভার্চুয়াল মেশিনে আছেন। আপনি হোস্টনাম কমান্ডটি চালিয়ে আপনার বর্তমান হোস্ট নিশ্চিত করতে পারেন।

hostname

কমান্ডটি বর্তমান শেল পরিবেশের হোস্টনাম প্রদর্শন করবে।

pi-codelab

5. নির্ভরতা ইনস্টল করুন

এখন আমরা পাই গণনা করার জন্য প্রোগ্রাম কম্পাইল করার জন্য প্রয়োজনীয় নির্ভরতা ইনস্টল করব।

sudo apt update
sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev

প্রক্রিয়াটি সম্পূর্ণ হতে কয়েক মিনিট সময় নেয়। এখন আপনার একটি কাজ C++ কম্পাইলার আছে কিনা তা পরীক্ষা করা যাক।

c++ --version

সঠিকভাবে ইনস্টল করা হলে এই কমান্ডটি কম্পাইলারের সংস্করণ তথ্য আউটপুট করবে।

c++ (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

6. প্রোগ্রাম কম্পাইল

এখন পাই গণনা করার জন্য C++ প্রোগ্রাম কম্পাইল করা যাক। আপনি আগে C++ এ বিকাশ না করলেও এটি শোনার চেয়ে সহজ। সমস্ত পূর্বশর্ত পূর্ববর্তী ধাপে ইনস্টল করা আছে, তাই আমাদের শুধু উৎস কোড আনতে এবং কম্পাইল করতে হবে।

প্রথমে সোর্স কোডটি আনুন এবং সংরক্ষণ করুন। এই ধাপটি GitHub থেকে একটি উৎস ফাইল ডাউনলোড করে এবং বর্তমান ডিরেক্টরিতে pi.cc হিসাবে সংরক্ষণ করে।

curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc

এরপরে, সংরক্ষিত সোর্স কোড কম্পাইল করতে C++ কম্পাইলার চালান।

c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt

কম্পাইলার সাফল্যের ক্ষেত্রে কিছু আউটপুট করে না। আসুন পরীক্ষা করে দেখি আপনার এক্সিকিউটেবল ফাইল আছে:

ls pi

এই ls কমান্ডটি প্রোগ্রামের ফাইলের নাম আউটপুট করা উচিত যদি এটি বিদ্যমান থাকে।

pi

7. Pi গণনা করুন

pi প্রোগ্রামটি গণনা করতে একটি আর্গুমেন্ট নেয়, সংখ্যার সংখ্যা। উদাহরণস্বরূপ, আসুন পাই এর প্রথম 100 দশমিক গণনা করি।

./pi 100

প্রোগ্রামটি এক সেকেন্ডেরও কম সময়ের মধ্যে শেষ হবে এবং এর মতো কিছু আউটপুট করবে:

Calculating 100 digits of pi...
Internal precision = 348 bits
Number of terms = 9, digits per term = 14.181647462725477
Summation series complete. Final steps...
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

শেষ লাইনটি পাই এর প্রথম 100 দশমিক। অভিনন্দন, আপনি শুধু কম্পিউটারকে আপনার জন্য গণিত করতে দিয়েছেন!

প্রোগ্রামটি আরও সংখ্যা গণনা করতে পারে (বর্তমানে 100 বিলিয়ন সংখ্যায় ক্যাপ করা হয়েছে)। এখন 10 মিলিয়ন সংখ্যা গণনা করা যাক এবং এটি কতক্ষণ সময় নেয় তা পরিমাপ করা যাক। আমরা আউটপুটটিকে একটি ফাইলে রিডাইরেক্ট করি কারণ কমান্ড লাইন কনসোলে 10 মিলিয়ন ডিজিট পাই দেখতে একটু বেশি লম্বা।

time ./pi 10000000 > pi10m.txt

প্রোগ্রাম এই মত কিছু আউটপুট:

Calculating 10000000 digits of pi...
Internal precision = 33219296 bits
Number of terms = 705138, digits per term = 14.181647462725477
Summation series complete. Final steps...

real    0m9.702s
user    0m14.839s
sys     0m0.364s

এটি এই সময়ে অঙ্কগুলি অন্তর্ভুক্ত করে না কারণ সেগুলি pi10m.txt ফাইলে সংরক্ষিত হয়েছে। শেষ তিনটি লাইন বর্ণনা করে যে প্রোগ্রামটি চালানোর জন্য কত সময় নিয়েছে এবং এটি কতটা cpu ব্যবহার করেছে।

  • বাস্তব: শুরু থেকে শেষ পর্যন্ত প্রকৃত সময়, যার মানে উপরের উদাহরণে পাই এর 10 মিলিয়ন সংখ্যা গণনা করতে 9.7 সেকেন্ড সময় লেগেছে।
  • ব্যবহারকারী: এটি কতটা CPU সময় ব্যবহার করেছে, যা "বাস্তব" থেকে বড় কারণ মেশিনে দুটি CPU কোর রয়েছে এবং প্রতিটি কোর মোট হিসাবে গণনা করে।
  • sys: নেটওয়ার্ক এবং I/O এর মতো সিস্টেমের কাজগুলি প্রক্রিয়া করার জন্য প্রোগ্রামটি চালানোর জন্য অপারেটিং সিস্টেমের প্রয়োজনীয় সময়। এই সময় এটি প্রায় 0.4 সেকেন্ড সময় নিয়েছে, যা বেশিরভাগ সময় ডিস্কে ফলাফল লিখতে।

আমরা pi10m.txt এ একবার নজর দিতে পারি এবং প্রতিটি প্রথম এবং শেষ 100টি সংখ্যা দেখতে পারি।

এর প্রথম সংখ্যা পরীক্ষা করা যাক. এই কমান্ডটি প্রথম 100 দশমিক (এবং প্রথম 3 এবং দশমিক বিন্দু) আউটপুট করে।

head -c 102 pi10m.txt

ফলাফল এই মত দেখতে হবে.

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

পরবর্তী কমান্ড শেষ 100 দশমিক আউটপুট.

tail -c 100 pi10m.txt

ফলাফল এই মত দেখতে হবে.

610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897

8. ক্লাস্টার পরিষ্কার করুন

আপনার কম্পিউট ইঞ্জিন ইন্সট্যান্স বন্ধ করতে ভুলবেন না, অন্যথায় এটি চলতে থাকবে এবং খরচ সংগ্রহ করতে থাকবে।

আপনি যদি VM এ থাকেন (SSH এর সাথে সংযুক্ত), প্রথমে exit কমান্ডটি চালিয়ে প্রথমে লগ আউট করুন।

exit

তারপরে, ইনস্ট্যান্স এবং সংশ্লিষ্ট ডিস্কগুলি মুছতে নিম্নলিখিত gcloud compute instances delete কমান্ডটি চালান। এটি আপনাকে সম্পদ মুছে ফেলার বিষয়টি নিশ্চিত করতে বলবে।

gcloud compute instances delete pi-codelab

9. পরবর্তী কি?

অভিনন্দন, আপনি এই কম্পিউট ইঞ্জিন কোডল্যাবটি সম্পূর্ণ করেছেন এবং পাই এর 10 মিলিয়ন সংখ্যা গণনা করেছেন!

আমরা 2022 সালে পাই-এর 100 ট্রিলিয়ন সংখ্যা গণনা করতে একই পরিকাঠামো ব্যবহার করেছি। আমরা কীভাবে করেছি তা দেখতে ঘোষণাটি পড়ুন। সম্পূর্ণ ফলাফল আমাদের pi.delivery ডেমো সাইটে উপলব্ধ।

Google ক্লাউড ব্লগে কম্পিউট এবং হাই পারফরম্যান্স কম্পিউটিং সম্পর্কে সর্বশেষ খবরের সাথে আপ টু ডেট থাকুন!

আরও কম্পিউট ইঞ্জিন বৈশিষ্ট্য

কম্পিউট ইঞ্জিনের বৈশিষ্ট্যগুলির একটি সমৃদ্ধ সেট রয়েছে। আপনি এর মধ্যে কয়েকটিতে ডুব দিতে চাইতে পারেন:

আমাদের আপনার মতামত দিন

  • আমাদের খুব সংক্ষিপ্ত সমীক্ষা সম্পূর্ণ করার জন্য একটু সময় নিন