Compute Engine'de Pi'yi hesaplama

1. Giriş

Bu codelab'i açtığınız için teşekkür ederiz. Compute Engine'de hesaplama yapmaya hazır mısınız?

Bu codelab'de, yeni bir sanal makineyi nasıl başlatacağınızı ve pi sayısını hesaplamak için bir programı nasıl çalıştıracağınızı adım adım açıklayacağız.

Compute Engine örneği oluşturup pi değerini hesaplamak için bir program indirecek, derleyecek ve çalıştıracaksınız. Console'dan veya komut satırından Compute Engine örneği oluşturabilirsiniz. Bu laboratuvar, komut satırı araçlarını kullanma konusunda size yol gösterecektir.

ComputeEngine_128px.png

Compute Engine; farklı çekirdek sayıları, bellek boyutları ve depolama alanları gibi çeşitli şekillerde çalışan sanal makineler sunar. Gerekirse 100'den fazla çekirdek ve yüzlerce GB belleğe sahip bir makine kullanabilirsiniz. Ancak bu örnekte, önceden tanımlanmış 2 vCPU ve 8 GB bellekli bir sanal makineyi kullanıma sunacağız.

Bu codelab'de N2 makine serisini kullanacağız. Çoğu standart ve bulutta yerel iş yükünü hedefleyen genel amaçlı bir makine ailesi sanal makinesidir. N2 serisi, iş parçacığı başına daha yüksek performansa ve genel amaçlı makine ailesinin sunduğu tüm esnekliğe sahiptir.

Başlayalım o halde.

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle PROJECT_ID olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Google Cloud Shell

Google Cloud ve Compute Engine, dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacağız.

Bu Debian tabanlı sanal makine, ihtiyacınız olan tüm geliştirme araçlarıyla yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (Evet, Chromebook'ta çalışır).

  1. Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir b125d9eb26a46cc5.png simgesini tıklamanız yeterlidir (sağlanması ve ortama bağlanması yalnızca birkaç dakika sürer).

1067942a9a93f70.png

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

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJECT_ID olarak ayarlanmış olduğunu göreceksiniz.

gcloud auth list

Komut çıkışı

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

Komut çıkışı

[core]
project = <PROJECT_ID>

Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:

gcloud config set project <PROJECT_ID>

PROJECT_ID cihazınızı mı arıyorsunuz? Kurulum adımlarında kullandığınız kimliği kontrol edin veya Cloud Console kontrol panelinden arayın:

cc3895eeac80db2c.png

Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.

echo $GOOGLE_CLOUD_PROJECT

Komut çıkışı

<PROJECT_ID>
  1. Son olarak, varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın.
gcloud config set compute/zone us-central1-f

Çeşitli farklı alt bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.

3. Compute Engine örneği oluşturma

Öncelikle gcloud komut satırı aracıyla bir sanal makine oluşturacağız. İsterseniz Konsol'u da kullanabilirsiniz ancak komut satırının tekrarlanması ve açıklaması daha kolaydır.

Öncelikle işletim sistemi olarak Debian 11'i kullanarak pi-codelab adlı bir n2-standard-2 örneği oluşturalım. Ayrıca, başlatma birimi için Dengeli Kalıcı Disk (PD) kullanılır. Dengeli PD'ler, katı hal sürücüleri (SSD) ile desteklenir ve performans ile maliyeti dengeler. Kurulum ve Koşullar bölümünde varsayılan alt bölgeyi seçmediyseniz hangi alt bölgeyi kullanacağınız sorulur.

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

Komutun sonucu şu şekilde görünmelidir:

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

Oluşturduğunuz her yeni sanal makinede INTERNAL_IP ve EXTERNAL_IP alanlarının değiştiğini lütfen unutmayın.

gcloud compute instances create komutu hakkında daha fazla bilgi edinmek için lütfen referans sayfasını ziyaret edin.

4. Örneğe SSH

Komut satırından örneğe SSH uygulamak için aşağıdaki komutu çalıştırın.

gcloud compute ssh pi-codelab

İşte bu kadar. Şimdi sanal makinedesiniz. Ana makine adı komutunu çalıştırarak mevcut ana makinenizi onaylayabilirsiniz.

hostname

Bu komut, geçerli kabuk ortamının ana makine adını görüntüler.

pi-codelab

5. Bağımlılıkları Yükleme

Şimdi, pi sayısını hesaplayacak programı derlemek için gereken bağımlılıkları yükleyeceğiz.

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

İşlemin tamamlanması birkaç dakika sürer. Şimdi çalışan bir C++ derleyiciniz olup olmadığını kontrol edelim.

c++ --version

Bu komut, doğru yüklenirse derleyicinin sürüm bilgilerinin çıktısını verir.

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. Programı derleyin

Şimdi, Pi'yi hesaplamak için C++ programını derleyelim. Daha önce C++'ta geliştirmemiş olsanız bile bu, göründüğünden daha basittir. Tüm ön koşullar önceki adımda yüklendiğinden yalnızca kaynak kodunu getirip derlememiz gerekir.

İlk olarak kaynak kodunu getirin ve kaydedin. Bu adımda, GitHub'dan bir kaynak dosya indirilir ve bu dosya, geçerli dizinde pi.cc olarak kaydedilir.

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

Sonra, kaydedilen kaynak kodunu derlemek için C++ derleyiciyi çalıştırın.

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

Derleyici, başarılı olması durumunda hiçbir çıktı sağlamaz. Yürütülebilir dosyanın sizde olup olmadığını kontrol edelim:

ls pi

Bu ls komutu, (varsa) programın dosya adını vermelidir.

pi

7. Pi'yi hesaplayın

pi programı, hesaplanacak basamak sayısı olan tek bağımsız değişken alır. Örneğin, pi sayısının ilk 100 ondalık basamağını hesaplayalım.

./pi 100

Program bir saniyeden daha kısa sürede tamamlanır ve şuna benzer bir çıkış verir:

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

Son satır, pi sayısının ilk 100 ondalık basamağıdır. Tebrikler, bilgisayar hesaplamasını sizin yerinize yaptınız!

Program daha fazla basamak hesaplayabilir (şu anda 100 milyar basamakla sınırlanmıştır). Şimdi 10 milyon basamağı hesaplayıp bunun ne kadar sürdüğünü ölçelim. Pi sayısının 10 milyon basamağı komut satırı konsolunda görüntülenemeyecek kadar uzun olduğundan, çıkışı bir dosyaya yönlendiririz.

time ./pi 10000000 > pi10m.txt

Program aşağıdaki gibi bir çıktı verir:

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 dosyasına kaydedildiğinden şu anda rakamlar eklenmiyor. Son üç satır, programın çalışmasının ne kadar sürdüğünü ve ne kadar CPU kullandığını açıklar.

  • real: başından sonuna kadar geçen gerçek süredir.Yukarıdaki örnekte, 10 milyon pi sayısının hesaplanması 9,7 saniye sürmüştür.
  • user: ne kadar CPU süresi kullandığını belirtir, "gerçek" değerinden büyüktür çünkü makinenin iki CPU çekirdeği vardır ve her çekirdek, toplama dahil edilir.
  • sys: ağ ve G/Ç gibi sistem görevlerini işlemek için işletim sisteminin programı çalıştırmak için ihtiyaç duyduğu süre. Bu işlem yaklaşık 0,4 saniye sürdü.Bu, sonucu diske yazmak için çoğunlukla gereken süredir.

pi10m.txt dosyasını inceleyip her birinin ilk ve son 100 rakamını görebiliriz.

İlk basamakları kontrol edelim. Bu komut ilk 100 ondalık basamağı (ve ilk 3 ve ondalık basamağı) verir.

head -c 102 pi10m.txt

Sonuç aşağıdaki gibi görünmelidir.

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

Sonraki komut son 100 ondalık sayıyı verir.

tail -c 100 pi10m.txt

Sonuç aşağıdaki gibi görünmelidir.

610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897

8. Kümeyi temizleyin

Compute Engine örneğinizi kapatmayı unutmayın. Aksi takdirde örneğiniz çalışmaya ve maliyet oluşturmaya devam eder.

Sanal makine üzerindeyseniz (SSH'ye bağlıysanız) önce çıkış komutunu çalıştırarak çıkış yapın.

exit

Ardından örneği ve ilişkili diskleri silmek için aşağıdaki gcloud compute instances delete komutunu çalıştırın. Kaynağın silinmesini onaylamanız istenir.

gcloud compute instances delete pi-codelab

9. Sırada ne var?

Tebrikler, bu Compute Engine codelab'ini tamamladınız ve pi sayısının 10 milyon basamağını hesapladınız.

2022'de pi sayısının 100 trilyon basamağını hesaplamak için aynı altyapıyı kullandık. Performansımızı görmek için duyuruyu okuyun. Sonuçların tamamına pi.delivery demo sitemizden ulaşabilirsiniz.

Google Cloud Blogu'nda Hesaplama ve Yüksek Performanslı Bilgi İşlem ile ilgili en son gelişmeleri takip edin.

Diğer Compute Engine özellikleri

Compute Engine, zengin bir özellik grubuna sahiptir. Bunlardan bazılarını öğrenmek isteyebilirsiniz :

Geri bildiriminizi paylaşın

  • Lütfen çok kısa bir süre ayırarak anketimizi doldurun.