1. Introduzione
Grazie per aver aperto questo codelab. Pronto a elaborare alcuni numeri su Compute Engine?
In questo codelab, vedremo come avviare una nuova macchina virtuale ed eseguire un programma per calcolare pi greco.
Creerai un'istanza Compute Engine, scaricherai, compilerai ed eseguirai un programma per calcolare pi greco. Puoi creare un'istanza Compute Engine dalla console o dalla riga di comando. Questo lab ti guiderà nell'utilizzo degli strumenti a riga di comando.

Compute Engine offre macchine virtuali in esecuzione in varie forme, ad esempio con un numero diverso di core, dimensioni della memoria e spazio di archiviazione. Se necessario, puoi utilizzare una macchina con più di 100 core e diverse centinaia di GB di memoria, ma in questo esempio avvieremo una macchina virtuale predefinita con 2 vCPU e 8 GB di memoria.
In questo codelab utilizzeremo la serie di macchine N2. Si tratta di una VM della famiglia di macchine per uso generico che ha come target la maggior parte dei workload standard e cloud-native. La serie N2 offre prestazioni per thread superiori e tutta la flessibilità della famiglia di macchine per uso generico.
Iniziamo.
2. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.



- Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarlo in qualsiasi momento.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, devi fare riferimento all'ID progetto (in genere è identificato come
PROJECT_ID). Se non ti piace l'ID generato, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto. - Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Per arrestare le risorse in modo da non incorrere in costi di fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o l'intero progetto. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Google Cloud Shell
Sebbene Google Cloud e Compute Engine possano essere gestiti da remoto dal tuo laptop, in questo codelab utilizzeremo Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Ciò significa che per questo codelab ti servirà solo un browser (sì, funziona su Chromebook).
- Per attivare Cloud Shell dalla console Cloud, fai clic su Attiva Cloud Shell
(bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente).


Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo PROJECT_ID.
gcloud auth list
Output comando
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
Se per qualche motivo il progetto non è impostato, esegui questo comando:
gcloud config set project <PROJECT_ID>
Stai cercando PROJECT_ID? Controlla l'ID che hai utilizzato nei passaggi di configurazione o cercalo nella dashboard della console Cloud:

Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, che potrebbero essere utili quando esegui i comandi futuri.
echo $GOOGLE_CLOUD_PROJECT
Output comando
<PROJECT_ID>
- Infine, imposta la zona e la configurazione del progetto predefinite.
gcloud config set compute/zone us-central1-f
Puoi scegliere una serie di zone diverse. Per saperne di più, consulta Regioni e zone.
3. Crea un'istanza di Compute Engine
Innanzitutto, creeremo una macchina virtuale con lo strumento a riga di comando gcloud. Se preferisci, puoi anche utilizzare la console, ma la riga di comando è più facile da ripetere e spiegare.
Creiamo innanzitutto un'istanza n2-standard-2 denominata pi-codelab con Debian 11 come sistema operativo. Utilizzeremo anche il Persistent Disk (PD) bilanciato per il volume di avvio. I dischi permanenti bilanciati sono supportati da unità a stato solido (SSD) e bilanciano prestazioni e costi. Ti verrà chiesto quale zona utilizzare se non hai selezionato la zona predefinita nella sezione Configurazione e requisiti.
gcloud compute instances create pi-codelab \ --machine-type=n2-standard-2 \ --image-project=debian-cloud \ --image-family=debian-11 \ --boot-disk-type=pd-balanced
Il risultato del comando dovrebbe essere simile al seguente:
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
Tieni presente che i campi INTERNAL_IP ed EXTERNAL_IP cambiano ogni volta che crei una nuova VM.
Se vuoi saperne di più sul comando gcloud compute instances create, visita la pagina di riferimento.
4. Accedi all'istanza tramite SSH
Per accedere all'istanza tramite SSH dalla riga di comando, esegui questo comando.
gcloud compute ssh pi-codelab
È tutto. Ora sei sulla macchina virtuale. Puoi confermare l'host attuale eseguendo il comando hostname.
hostname
Il comando mostrerà il nome host dell'ambiente shell corrente.
pi-codelab
5. Installa le dipendenze
Ora installiamo le dipendenze necessarie per compilare il programma per calcolare pi greco.
sudo apt update sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev
Il completamento della procedura richiede alcuni minuti. Ora controlliamo se hai un compilatore C++ funzionante.
c++ --version
Se installato correttamente, questo comando restituirà le informazioni sulla versione del compilatore.
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. Compilare il programma
Ora compiliamo il programma C++ per calcolare pi greco. È più semplice di quanto sembri, anche se non hai mai sviluppato in C++. Tutti i prerequisiti sono stati installati nel passaggio precedente, quindi dobbiamo solo recuperare e compilare il codice sorgente.
Innanzitutto, recupera e salva il codice sorgente. Questo passaggio scarica un file di origine da GitHub e lo salva come pi.cc nella directory corrente.
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc
Quindi, esegui il compilatore C++ per compilare il codice sorgente salvato.
c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt
In caso di esito positivo, il compilatore non restituisce alcun output. Verifichiamo che tu abbia il file eseguibile:
ls pi
Questo comando ls dovrebbe restituire il nome file del programma, se esiste.
pi
7. Calcola Pi
Il programma pi accetta un argomento, il numero di cifre da calcolare. Ad esempio, calcoliamo le prime 100 cifre decimali di pi greco.
./pi 100
Il programma terminerà in meno di un secondo e restituirà un output simile al seguente:
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
L'ultima riga è costituita dalle prime 100 cifre decimali del pi greco. Congratulazioni, hai appena fatto fare i calcoli al computer.
Il programma può calcolare più cifre (attualmente il limite è di 100 miliardi di cifre). Ora calcoliamo 10 milioni di cifre e misuriamo il tempo necessario. Reindirizziamo l'output a un file, in quanto 10 milioni di cifre del pi greco sono un po' troppo lunghe da visualizzare nella console della riga di comando.
time ./pi 10000000 > pi10m.txt
Il programma restituisce un output simile al seguente:
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
Questa volta non include le cifre perché sono salvate nel file pi10m.txt. Le ultime tre righe descrivono il tempo impiegato dal programma per essere eseguito e la quantità di CPU utilizzata.
- reale: il tempo effettivo dall'inizio alla fine, il che significa che nell'esempio precedente sono stati necessari 9,7 secondi per calcolare 10 milioni di cifre del pi greco.
- user: quanto tempo della CPU ha utilizzato, che è maggiore di "real" perché la macchina ha due core della CPU e ogni core viene conteggiato nel totale.
- sys: il tempo necessario al sistema operativo per eseguire il programma per elaborare le attività di sistema come la rete e l'I/O. Questa volta ci sono voluti circa 0,4 secondi, ovvero principalmente il tempo necessario per scrivere il risultato sul disco.
Possiamo esaminare pi10m.txt e vedere le prime e le ultime 100 cifre.
Controlliamo le prime cifre. Questo comando restituisce i primi 100 decimali (e i primi 3 e il punto decimale).
head -c 102 pi10m.txt
Il risultato dovrebbe essere simile a questo.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Il comando successivo restituisce gli ultimi 100 decimali.
tail -c 100 pi10m.txt
Il risultato dovrebbe essere simile a questo.
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. Pulire il cluster
Non dimenticare di arrestare l'istanza Compute Engine, altrimenti continuerà a essere eseguita e a maturare costi.
Se ti trovi sulla VM (connessa tramite SSH), esci prima eseguendo il comando exit.
exit
Poi, esegui il seguente comando gcloud compute instances delete per eliminare l'istanza e i dischi associati. Ti verrà chiesto di confermare l'eliminazione della risorsa.
gcloud compute instances delete pi-codelab
9. Passaggi successivi
Congratulazioni, hai completato questo codelab di Compute Engine e calcolato 10 milioni di cifre del pi greco.
Abbiamo utilizzato la stessa infrastruttura per calcolare 100 trilioni di cifre del pi greco nel 2022. Leggi l'annuncio per scoprire come è andata. I risultati completi sono disponibili sul nostro sito dimostrativo pi.delivery.
Rimani al corrente delle ultime novità su Compute e High Performance Computing sul blog di Google Cloud.
Altre funzionalità di Compute Engine
Compute Engine offre un ricco insieme di funzionalità. Ti consigliamo di approfondire alcuni di questi argomenti :
- VM prerilasciabili - https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Nodi single-tenant - https://cloud.google.com/compute/docs/nodes/create-nodes
- GPU e TPU - https://cloud.google.com/compute/docs/gpus/add-gpus
- Istanze Windows - https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Etichettatura delle risorse - https://cloud.google.com/compute/docs/labeling-resources
- Migrazione delle VM a Compute Engine - https://cloud.google.com/compute/docs/vm-migration/
Inviaci il tuo feedback
- Ti invitiamo a dedicare qualche istante per completare il nostro brevissimo sondaggio.