1. Giriş
Bu codelab'i açtığınız için teşekkür ederiz. Compute Engine'de bazı sayıları işlemeye hazır mısınız?
Bu codelab'de, yeni bir sanal makine başlatma ve pi sayısını hesaplamak için program çalıştırma adımları açıklanmaktadır.
Compute Engine örneği oluşturacak, pi sayısını hesaplamak için bir program indirip derleyip çalıştıracaksınız. Compute Engine örneğini Console'dan veya komut satırından oluşturabilirsiniz. Bu laboratuvarda, komut satırı araçlarını kullanma konusunda adım adım rehberlik sağlanacaktır.

Compute Engine, farklı sayıda çekirdek, bellek boyutu ve depolama alanı gibi çeşitli şekillerde çalışan sanal makineler sunar. Gerekirse 100'den fazla çekirdeğe ve birkaç yüz GB belleğe sahip bir makine kullanabilirsiniz ancak bu örnekte önceden tanımlanmış 2 vCPU'lu ve 8 GB bellekli bir sanal makine başlatacağız.
Bu codelab'de N2 makine serisini kullanacağız. Bu, çoğu standart ve buluta özel iş yükünü hedefleyen genel amaçlı bir makine ailesi VM'sidir. N2 serisi, iş parçası başına daha yüksek performansa ve genel amaçlı makine ailesinin sunduğu tüm esnekliğe sahiptir.
Şimdi başlayalım.
2. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Google Cloud Console'da oturum açın ve 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.



- 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. Dilediğiniz zaman bunu güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Google Cloud Shell
Google Cloud ve Compute Engine, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacağız.
Bu Debian tabanlı sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu nedenle, bu codelab için ihtiyacınız olan tek şey bir tarayıcıdır (Chromebook'ta da çalışır).
- Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir 'i
tıklamanız yeterlidir (ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer).


Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, PROJECT_ID'nize ayarlandığını görürsünüz.
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 verin:
gcloud config set project <PROJECT_ID>
PROJECT_ID cihazınızı mı arıyorsunuz? Kurulum adımlarında hangi kimliği kullandığınızı kontrol edin veya Cloud Console kontrol panelinde arayın:

Cloud Shell, gelecekteki komutları çalıştırırken faydalı olabilecek bazı ortam değişkenlerini de varsayılan olarak ayarlar.
echo $GOOGLE_CLOUD_PROJECT
Komut çıkışı
<PROJECT_ID>
- 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 bölgeler arasından seçim yapabilirsiniz. Daha fazla bilgi için Bölgeler ve Alt Bölgeler başlıklı makaleyi inceleyin.
3. Compute Engine örneği oluşturma
İlk olarak, gcloud komut satırı aracıyla bir sanal makine oluşturacağız. İsterseniz Console'u da kullanabilirsiniz ancak komut satırının tekrarı ve açıklaması daha kolaydır.
Öncelikle işletim sistemi olarak Debian 11'in kullanıldığı pi-codelab adlı bir n2-standard-2 örneği oluşturalım. Önyükleme birimi için dengeli kalıcı diski (PD) de kullanırız. Dengeli kalıcı diskler, katı hal sürücüleri (SSD) tarafından desteklenir ve performans ile maliyet arasında denge sağlar. Kurulum ve Gereksinimler bölümünde varsayılan bölgeyi seçmediyseniz hangi bölgenin kullanılacağı 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 aşağıdaki gibi 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
INTERNAL_IP ve EXTERNAL_IP alanlarının her yeni sanal makine oluşturduğunuzda değiştiğini lütfen unutmayın.
gcloud compute instances create komutu hakkında daha fazla bilgi edinmek isterseniz lütfen referans sayfasını ziyaret edin.
4. Örneğe SSH ile bağlanma
Komut satırından örneğe SSH ile bağlanmak için aşağıdaki komutu çalıştırın.
gcloud compute ssh pi-codelab
İşte bu kadar. Artık sanal makinedesiniz. Ana makine adı komutunu çalıştırarak mevcut ana makinenizi onaylayabilirsiniz.
hostname
Komut, mevcut kabuk ortamının ana makine adını gösterir.
pi-codelab
5. Bağımlılıkları yükleme
Şimdi, pi sayısını hesaplamak için programı derlemek üzere 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 de çalışan bir C++ derleyiciniz olup olmadığını kontrol edelim.
c++ --version
Bu komut, derleyici doğru şekilde yüklendiyse derleyicinin sürüm bilgilerini 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ı Derleme
Şimdi de pi sayısını hesaplamak için C++ programını derleyelim. Daha önce C++ ile geliştirme yapmamış olsanız bile bu işlem, göründüğünden daha basittir. Tüm ön koşullar önceki adımda yüklendiğinden yalnızca kaynak kodu getirmemiz ve derlememiz gerekir.
Öncelikle kaynak kodunu getirip kaydedin. Bu adımda, GitHub'dan bir kaynak dosya indirilir ve geçerli dizine pi.cc olarak kaydedilir.
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc
Ardından, kaydedilen kaynak kodu derlemek için C++ derleyicisini çalıştırın.
c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt
Derleyici, başarılı olması durumunda herhangi bir çıkış vermez. Yürütülebilir dosyanızın olup olmadığını kontrol edelim:
ls pi
Bu ls komutu, varsa programın dosya adını çıkarmalıdır.
pi
7. Pi'yi hesaplama
pi programı, hesaplanacak basamak sayısını içeren bir 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 kısa bir süre içinde tamamlanır ve aşağıdaki gibi bir çıktı 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ğını içerir. Tebrikler, bilgisayar sizin için hesaplamayı yaptı.
Program daha fazla hane hesaplayabilir (şu anda 100 milyar hane ile sınırlıdır). Şimdi 10 milyon basamağı hesaplayalım ve ne kadar sürdüğünü ölçelim. Çıkışı bir dosyaya yönlendiriyoruz. Çünkü pi sayısının 10 milyon basamağı, komut satırı konsolunda görüntülemek için biraz uzun.
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
Bu sefer rakamlar pi10m.txt dosyasına kaydedildiği için dahil edilmiyor. Son üç satırda, programın çalışması için ne kadar süre gerektiği ve ne kadar CPU kullandığı açıklanmaktadır.
- gerçek: Başlangıçtan bitişe kadar geçen süre.Yukarıdaki örnekte, pi sayısının 10 milyon basamağının hesaplanması 9,7 saniye sürmüştür.
- user: Ne kadar CPU süresi kullandığı. Makinede iki CPU çekirdeği olduğundan ve her çekirdek toplam süreye dahil edildiğinden bu süre "gerçek" süreden daha uzundur.
- sys: İşletim sisteminin, programı çalıştırmak için ağ ve G/Ç gibi sistem görevlerini işlemesi gereken süre. Bu sefer yaklaşık 0,4 saniye sürdü.Bu süre, sonucu diske yazma süresidir.
pi10m.txt dosyasına göz atıp ilk ve son 100 basamağı görebiliriz.
İlk rakamları kontrol edelim. Bu komut, ilk 100 ondalık basamağı (ve ilk 3 ile ondalık işareti) verir.
head -c 102 pi10m.txt
Sonuç aşağıdaki gibi görünmelidir.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Aşağıdaki komut, son 100 ondalık basamağı verir.
tail -c 100 pi10m.txt
Sonuç aşağıdaki gibi görünmelidir.
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. Kümeyi temizleme
Compute Engine örneğinizi kapatmayı unutmayın. Aksi takdirde, örnek çalışmaya ve maliyet tahakkuk etmeye devam eder.
Sanal makinedeyseniz (SSH ile bağlıysanız) önce exit 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. Nasıl bir performans sergilediğimizi görmek için duyuruyu okuyun. Sonuçların tamamına pi.delivery adlı demo sitemizden ulaşabilirsiniz.
Google Cloud Blog'da Compute ve Yüksek Performanslı Bilgi İşlem ile ilgili en son haberleri takip edin.
Diğer Compute Engine özellikleri
Compute Engine, zengin bir özellik setine sahiptir. Aşağıdaki konuları inceleyebilirsiniz :
- Öncelikli Sanal Makineler - https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Tek kiracılı düğümler: https://cloud.google.com/compute/docs/nodes/create-nodes
- GPU'lar ve TPU'lar: https://cloud.google.com/compute/docs/gpus/add-gpus
- Windows örnekleri - https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Etiketleme Kaynakları: https://cloud.google.com/compute/docs/labeling-resources
- Sanal makineleri Compute Engine'e taşıma: https://cloud.google.com/compute/docs/vm-migration/
Görüşlerinizi bizimle paylaşın
- Lütfen birkaç dakikanızı ayırarak çok kısa anketimizi doldurun.