1. Einführung
Vielen Dank, dass Sie dieses Codelab geöffnet haben. Sind Sie bereit, sich mit der Compute Engine vertraut zu machen?
In diesem Codelab erfahren Sie, wie Sie eine neue virtuelle Maschine starten und ein Programm zur Berechnung von Pi ausführen.
Sie erstellen eine Compute Engine-Instanz, laden ein Programm zur Berechnung von Pi herunter, kompilieren es und führen es aus. Sie können eine Compute Engine-Instanz über die Console oder die Befehlszeile erstellen. In diesem Lab lernen Sie die Befehlszeilentools kennen.
Compute Engine bietet virtuelle Maschinen, die in unterschiedlichen Formen ausgeführt werden, z. B. mit unterschiedlicher Anzahl von Kernen, Arbeitsspeichergröße und Speicherplatz. Sie können bei Bedarf eine Maschine mit mehr als 100 Kernen und mehreren hundert GB Arbeitsspeicher verwenden. In diesem Beispiel starten wir jedoch eine vordefinierte virtuelle Maschine mit 2 vCPUs und 8 GB Arbeitsspeicher.
In diesem Codelab verwenden wir die N2-Maschinenserie. Es ist eine VM für Maschinenfamilien für allgemeine Zwecke, die auf die meisten standardmäßigen und cloudnativen Arbeitslasten ausgerichtet ist. Die N2-Serie bietet eine höhere Leistung pro Thread und die gesamte Flexibilität, die die Maschinen für allgemeine Zwecke bieten.
Fangen wir an!
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.
- Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die üblicherweise als
PROJECT_ID
gekennzeichnet ist. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID erstellen. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen herunterfahren möchten, um über diese Anleitung hinaus keine Kosten zu verursachen, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
Google Cloud Shell
Sie können Google Cloud und die Compute Engine per Fernzugriff von Ihrem Laptop aus bedienen. In diesem Codelab verwenden wir jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Diese Debian-basierte virtuelle Maschine verfügt über alle erforderlichen Entwicklungstools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser – ja, er funktioniert auf Chromebooks.
- Klicken Sie einfach auf Cloud Shell aktivieren , um Cloud Shell über die Cloud Console zu aktivieren. Die Bereitstellung und Verbindung mit der Umgebung dauert einen Moment.
Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie bereits authentifiziert sind und dass das Projekt bereits auf Ihre PROJECT_ID
eingestellt ist.
gcloud auth list
Befehlsausgabe
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Sollte das Projekt aus irgendeinem Grund nicht eingerichtet sein, geben Sie einfach den folgenden Befehl ein:
gcloud config set project <PROJECT_ID>
Du suchst dein Gerät (PROJECT_ID
)? Sehen Sie nach, welche ID Sie bei den Einrichtungsschritten verwendet haben, oder rufen Sie sie im Dashboard der Cloud Console auf:
Cloud Shell legt außerdem standardmäßig einige Umgebungsvariablen fest, die bei der Ausführung zukünftiger Befehle nützlich sein können.
echo $GOOGLE_CLOUD_PROJECT
Befehlsausgabe
<PROJECT_ID>
- Legen Sie schließlich die Standardzone und die Projektkonfiguration fest.
gcloud config set compute/zone us-central1-f
Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.
3. Compute Engine-Instanz erstellen
Zuerst erstellen Sie mit dem gcloud-Befehlszeilentool eine virtuelle Maschine. Sie können auch die Console verwenden, aber die Befehlszeile ist einfacher zu wiederholen und zu erklären.
Erstellen Sie zuerst eine n2-standard-2-Instanz namens pi-codelab mit Debian 11 als Betriebssystem. Außerdem verwenden wir den Balanced Persistent Disk (PD) für das Boot-Volume. Abgestimmte PDs werden von Solid State Drives (SSD) unterstützt und sorgen für ein Gleichgewicht zwischen Leistung und Kosten. Sie werden gefragt, welche Zone verwendet werden soll, wenn Sie nicht die Standardzone im Abschnitt „Einrichtung und Anforderungen“ ausgewählt haben.
gcloud compute instances create pi-codelab \ --machine-type=n2-standard-2 \ --image-project=debian-cloud \ --image-family=debian-11 \ --boot-disk-type=pd-balanced
Das Ergebnis des Befehls sollte so aussehen:
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
Beachten Sie, dass sich die Felder INTERNAL_IP und EXTERNAL_IP jedes Mal ändern, wenn Sie eine neue VM erstellen.
Weitere Informationen zum Befehl gcloud compute instances create
finden Sie auf der Referenzseite.
4. SSH-Verbindung zur Instanz herstellen
Führen Sie den folgenden Befehl aus, um über die Befehlszeile eine SSH-Verbindung zur Instanz herzustellen.
gcloud compute ssh pi-codelab
Fertig! Jetzt befinden Sie sich auf der virtuellen Maschine. Sie können Ihren aktuellen Host bestätigen, indem Sie den Befehl „hostname“ ausführen.
hostname
Der Befehl zeigt den Hostnamen der aktuellen Shell-Umgebung an.
pi-codelab
5. Abhängigkeiten installieren
Jetzt installieren wir die Abhängigkeiten, die zum Kompilieren des Programms zur Berechnung von Pi erforderlich sind.
sudo apt update sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev
Der Vorgang kann einige Minuten dauern. Jetzt überprüfen wir, ob Sie einen funktionierenden C++-Compiler haben.
c++ --version
Dieser Befehl gibt bei ordnungsgemäßer Installation Versionsinformationen des Compilers aus.
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. Programm zusammenstellen
Lassen Sie uns nun das C++-Programm kompilieren, um Pi zu berechnen. Das ist einfacher, als es klingt, selbst wenn Sie noch nie in C++ entwickelt haben. Alle erforderlichen Komponenten wurden im vorherigen Schritt installiert, sodass wir nur den Quellcode abrufen und kompilieren müssen.
Rufen Sie zuerst den Quellcode ab und speichern Sie ihn. In diesem Schritt wird eine Quelldatei von GitHub heruntergeladen und als pi.cc im aktuellen Verzeichnis gespeichert.
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc
Führen Sie als Nächstes den C++-Compiler aus, um den gespeicherten Quellcode zu kompilieren.
c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt
Der Compiler gibt im Erfolgsfall nichts aus. Überprüfen Sie, ob Sie über die ausführbare Datei verfügen:
ls pi
Mit diesem ls -Befehl sollte der Dateiname des Programms ausgegeben werden, sofern vorhanden.
pi
7. Pi berechnen
Das Programm pi
verwendet ein Argument, die Anzahl der zu berechnenden Ziffern. Berechnen wir zum Beispiel die ersten 100 Dezimalstellen von Pi.
./pi 100
Das Programm ist in weniger als einer Sekunde beendet und gibt in etwa Folgendes aus:
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
Die letzte Zeile enthält die ersten 100 Dezimalzahlen von Pi. Herzlichen Glückwunsch! Der Computer hat gerade die Berechnungen für Sie erledigt!
Das Programm kann mehr Stellen berechnen (derzeit auf 100 Milliarden Ziffern begrenzt). Berechnen wir nun 10 Millionen Stellen und messen wir, wie lange es dauert. Wir leiten die Ausgabe in eine Datei um, da 10 Millionen Pi-Ziffern etwas zu lang sind, um sie in der Befehlszeilenkonsole anzusehen.
time ./pi 10000000 > pi10m.txt
Das Programm gibt in etwa folgende Ausgabe aus:
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
Die Ziffern sind diesmal aber nicht enthalten, da sie in der Datei pi10m.txt
gespeichert sind. Die letzten drei Zeilen beschreiben, wie viel Zeit das Programm für die Ausführung benötigt hat und wie viel CPU es genutzt hat.
- real: die tatsächliche Zeit vom Anfang bis zum Ende.Die Berechnung von 10 Millionen Pi-Stellen im obigen Beispiel dauerte also 9, 7 Sekunden.
- Nutzer: verbrauchte CPU-Zeit (größer als „real“) da die Maschine zwei CPU-Kerne hat und jeder Kern zur Gesamtzahl zählt.
- sys: Die Zeit, die das Betriebssystem zum Ausführen des Programms benötigt hat, um Systemaufgaben wie Netzwerk und E/A zu verarbeiten. Dieses Mal dauerte es etwa 0,4 Sekunden.Das ist in der Regel die Zeit, das Ergebnis auf die Festplatte zu schreiben.
Wir können in pi10m.txt die ersten und letzten 100 Ziffern sehen.
Überprüfen wir die ersten Ziffern. Dieser Befehl gibt die ersten 100 Dezimalstellen sowie die ersten drei und das Dezimalzeichen aus.
head -c 102 pi10m.txt
Das Ergebnis sollte so aussehen.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Der nächste Befehl gibt die letzten 100 Dezimalzahlen aus.
tail -c 100 pi10m.txt
Das Ergebnis sollte so aussehen.
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. Cluster bereinigen
Denken Sie daran, Ihre Compute Engine-Instanz herunterzufahren, da sie andernfalls weiter ausgeführt wird und Kosten verursacht.
Wenn Sie sich auf der VM befinden, die mit SSH verbunden ist, melden Sie sich zuerst ab, indem Sie zuerst den Befehl „exit“ ausführen.
exit
Führen Sie dann den folgenden gcloud compute instances delete
-Befehl aus, um die Instanz und die zugehörigen Laufwerke zu löschen. Sie werden aufgefordert, das Löschen der Ressource zu bestätigen.
gcloud compute instances delete pi-codelab
9. Nächste Schritte
Herzlichen Glückwunsch! Sie haben dieses Compute Engine-Codelab abgeschlossen und 10 Millionen Pi-Stellen berechnet.
2022 haben wir dieselbe Infrastruktur verwendet, um 100 Billionen Ziffern Pi zu berechnen. In dieser Mitteilung erfahren Sie, wie zufrieden Sie mit uns waren. Die gesamten Ergebnisse sind auf unserer Demowebsite pi.delivery verfügbar.
Im Google Cloud-Blog bleiben Sie mit den neuesten Nachrichten über Computing und Hochleistungs-Computing auf dem Laufenden.
Weitere Compute Engine-Funktionen
Compute Engine bietet eine Vielzahl von Funktionen. Weitere Informationen :
- VMs auf Abruf – https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Knoten für einzelne Mandanten: https://cloud.google.com/compute/docs/nodes/create-nodes
- GPUs und TPUs – https://cloud.google.com/compute/docs/gpus/add-gpus
- Windows-Instanzen: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Ressourcen mit Labels versehen – https://cloud.google.com/compute/docs/labeling-resources
- VMs zu Compute Engine migrieren – https://cloud.google.com/compute/docs/vm-migration/
Feedback geben
- Bitte nehmen Sie sich einen Moment Zeit, um an unserer kurzen Umfrage teilzunehmen.