Hitung Pi di Compute Engine

1. Pengantar

Terima kasih telah membuka codelab ini. Siap memproses beberapa angka di Compute Engine?

Dalam codelab ini, kita akan mempelajari cara memulai mesin virtual baru dan menjalankan program untuk menghitung pi.

Anda akan membuat instance Compute Engine, mendownload, mengompilasi, dan menjalankan program untuk menghitung pi. Anda dapat membuat instance Compute Engine dari Konsol atau command line. Lab ini akan memandu Anda menggunakan alat command line.

ComputeEngine_128px.png

Compute Engine menawarkan virtual machine yang berjalan dalam berbagai bentuk, seperti jumlah core, ukuran memori, dan penyimpanan yang berbeda. Anda dapat menggunakan mesin dengan lebih dari 100 core dan memori beberapa ratus GB jika perlu, tetapi dalam contoh ini, kita akan meluncurkan mesin virtual 2 vCPU dan memori 8 GB yang telah ditentukan sebelumnya.

Kita akan menggunakan seri mesin N2 dalam codelab ini. VM ini adalah kelompok mesin tujuan umum yang menargetkan sebagian besar workload standar dan berbasis cloud. Seri N2 memiliki performa per thread yang lebih tinggi dan semua fleksibilitas yang ditawarkan kelompok mesin tujuan umum.

Sekarang, mari kita mulai.

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (biasanya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan melihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Google Cloud Shell

Meskipun Google Cloud dan Compute Engine dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, kita akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Mesin virtual berbasis Debian ini memuat semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).

  1. Untuk mengaktifkan Cloud Shell dari Cloud Console, cukup klik Aktifkan Cloud Shellb125d9eb26a46cc5.png (hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan).

1067942a9a93f70.png

Screen Shot 2017-06-14 at 10.13.43 PM.png

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID.

gcloud auth list

Output perintah

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

Output perintah

[core]
project = <PROJECT_ID>

Jika, untuk beberapa alasan, project belum disetel, cukup jalankan perintah berikut:

gcloud config set project <PROJECT_ID>

Mencari PROJECT_ID Anda? Periksa ID yang Anda gunakan di langkah-langkah penyiapan atau cari di dasbor Cloud Console:

cc3895eeac80db2c.png

Cloud Shell juga menetapkan beberapa variabel lingkungan secara default, yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.

echo $GOOGLE_CLOUD_PROJECT

Output perintah

<PROJECT_ID>
  1. Terakhir, tetapkan zona dan konfigurasi project default.
gcloud config set compute/zone us-central1-f

Anda dapat memilih berbagai zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.

3. Membuat instance Compute Engine

Pertama, kita akan membuat virtual machine dengan alat command line gcloud. Anda juga dapat menggunakan Konsol jika mau, tetapi command line lebih mudah diulang dan dijelaskan.

Pertama, buat instance n2-standard-2 bernama pi-codelab dengan Debian 11 sebagai sistem operasi. Kita juga akan menggunakan Persistent Disk (PD) Seimbang untuk volume boot. PD seimbang didukung oleh solid state drive (SSD) dan menyeimbangkan performa dan biaya. Aplikasi akan menanyakan zona mana yang akan digunakan jika Anda tidak memilih zona default di bagian Penyiapan dan Persyaratan.

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

Hasil perintah akan terlihat seperti ini:

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

Perhatikan bahwa kolom INTERNAL_IP dan EXTERNAL_IP berubah setiap kali Anda membuat VM baru.

Jika Anda ingin mempelajari lebih lanjut perintah gcloud compute instances create, buka halaman referensi.

4. Menghubungkan SSH ke Instance

Untuk melakukan SSH ke instance dari command line, jalankan perintah berikut.

gcloud compute ssh pi-codelab

Selesai! Sekarang Anda berada di virtual machine. Anda dapat mengonfirmasi host saat ini dengan menjalankan perintah hostname.

hostname

Perintah ini akan menampilkan nama host lingkungan shell saat ini.

pi-codelab

5. Menginstal Dependensi

Sekarang kita akan menginstal dependensi yang diperlukan untuk mengompilasi program guna menghitung pi.

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

Proses ini membutuhkan waktu beberapa menit hingga selesai. Sekarang, mari kita periksa apakah Anda memiliki compiler C++ yang berfungsi.

c++ --version

Perintah ini akan menampilkan informasi versi compiler jika diinstal dengan benar.

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. Kompilasi Program

Sekarang, mari kita kompilasi program C++ untuk menghitung pi. Proses ini lebih sederhana daripada yang terlihat, meskipun Anda belum pernah mengembangkan di C++ sebelumnya. Semua prasyarat telah diinstal pada langkah sebelumnya, jadi kita hanya perlu mengambil dan mengompilasi kode sumber.

Pertama, ambil dan simpan kode sumber. Langkah ini akan mendownload file sumber dari GitHub dan menyimpannya sebagai pi.cc di direktori saat ini.

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

Selanjutnya, jalankan compiler C++ untuk mengompilasi kode sumber yang disimpan.

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

Kompiler tidak menghasilkan apa pun jika berhasil. Mari kita periksa apakah Anda memiliki file yang dapat dieksekusi:

ls pi

Perintah ls ini akan menampilkan nama file program jika ada.

pi

7. Menghitung Pi

Program pi menggunakan satu argumen, yaitu jumlah digit yang akan dihitung. Misalnya, mari kita hitung 100 desimal pertama pi.

./pi 100

Program akan selesai dalam waktu kurang dari satu detik dan menghasilkan output seperti ini:

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

Baris terakhir adalah 100 desimal pertama pi. Selamat, Anda baru saja meminta komputer menghitung untuk Anda.

Program ini dapat menghitung lebih banyak digit (saat ini dibatasi hingga 100 miliar digit). Sekarang, mari kita hitung 10 juta digit dan ukur berapa lama waktu yang dibutuhkan. Kita mengalihkan output ke file karena 10 juta digit pi terlalu panjang untuk dilihat di konsol command line.

time ./pi 10000000 > pi10m.txt

Program ini menghasilkan output seperti ini:

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

Kali ini tidak menyertakan digit karena disimpan dalam file pi10m.txt. Tiga baris terakhir menjelaskan berapa lama waktu yang dibutuhkan program untuk berjalan dan berapa banyak CPU yang digunakan.

  • real: waktu sebenarnya dari awal hingga akhir, yang berarti dibutuhkan waktu 9,7 detik untuk menghitung 10 juta digit pi dalam contoh di atas.
  • pengguna: berapa banyak waktu CPU yang digunakan, yang lebih besar daripada "nyata" karena mesin memiliki dua core CPU dan setiap core dihitung ke dalam total.
  • sys: waktu yang dibutuhkan sistem operasi untuk menjalankan program guna memproses tugas sistem seperti jaringan dan I/O. Kali ini, waktu yang diperlukan sekitar 0,4 detik, yang sebagian besar merupakan waktu untuk menulis hasil ke disk.

Kita dapat melihat pi10m.txt dan melihat 100 digit pertama dan terakhir.

Mari kita periksa digit pertama. Perintah ini menghasilkan 100 desimal pertama (dan 3 desimal pertama serta titik desimal).

head -c 102 pi10m.txt

Hasilnya akan terlihat seperti ini.

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Perintah berikutnya akan menampilkan 100 desimal terakhir.

tail -c 100 pi10m.txt

Hasilnya akan terlihat seperti ini.

610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897

8. Membersihkan Cluster

Jangan lupa untuk menonaktifkan instance Compute Engine Anda, jika tidak, instance akan terus berjalan dan dikenai biaya.

Jika Anda berada di VM (terhubung dengan SSH), logout terlebih dahulu dengan menjalankan perintah keluar terlebih dahulu.

exit

Kemudian, jalankan perintah gcloud compute instances delete berikut untuk menghapus instance dan disk terkait. Anda akan diminta untuk mengonfirmasi penghapusan resource.

gcloud compute instances delete pi-codelab

9. Apa langkah selanjutnya?

Selamat, Anda telah menyelesaikan codelab Compute Engine ini dan menghitung 10 juta digit pi.

Kami menggunakan infrastruktur yang sama untuk menghitung 100 triliun digit pi pada tahun 2022. Baca pengumuman untuk melihat hasil kerja kami. Seluruh hasilnya tersedia di situs demo pi.delivery kami.

Ikuti terus berita terbaru tentang Compute dan High Performance Computing di Blog Google Cloud.

Fitur Compute Engine lainnya

Compute Engine memiliki serangkaian fitur yang lengkap. Anda mungkin ingin mempelajari beberapa di antaranya :

Kirimkan masukan Anda

  • Luangkan waktu Anda untuk menyelesaikan survei singkat kami