1. Introduzione
Grazie per aver aperto questo codelab. Vuoi calcolare alcuni dati su Compute Engine?
In questo codelab, vedremo come avviare una nuova macchina virtuale ed eseguire un programma per calcolare Pi.
Dovrai creare un'istanza Compute Engine, scaricare, compilare ed eseguire un programma per calcolare Pi. Puoi creare un'istanza Compute Engine dalla console o dalla riga di comando. Questo lab illustra come utilizzare gli strumenti a riga di comando.
Compute Engine offre macchine virtuali in esecuzione in varie forme, ad esempio con numeri diversi di core, dimensioni della memoria e spazio di archiviazione. Puoi usare una macchina con più di 100 core e diverse centinaia di GB di memoria, se necessario, ma in questo esempio lanceremo una macchina virtuale predefinita con 2 vCPU e 8 GB di memoria.
In questo codelab utilizzeremo la serie di macchine N2. È una VM della famiglia di macchine per uso generico che ha come target la maggior parte dei carichi di lavoro standard e cloud-native. La serie N2 offre prestazioni per thread più elevate e tutta la flessibilità offerta dalla famiglia di macchine per uso generico.
Iniziamo.
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo 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 progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarla in qualsiasi momento.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere è identificato come
PROJECT_ID
). Se l'ID generato non ti soddisfa, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto. - Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, puoi eliminare le risorse che hai creato o eliminare l'intero progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Google Cloud Shell
Mentre Google Cloud e Compute Engine possono 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 necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Ciò significa che per questo codelab è sufficiente un browser (sì, funziona su Chromebook).
- Per attivare Cloud Shell dalla console Cloud, fai semplicemente clic su Attiva Cloud Shell (il provisioning e la connessione all'ambiente dovrebbero richiedere solo pochi minuti).
Dopo la connessione a Cloud Shell, dovresti vedere che hai già eseguito l'autenticazione e che il progetto è già impostato su 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, invia semplicemente il seguente comando:
gcloud config set project <PROJECT_ID>
Stai cercando il tuo PROJECT_ID
? Controlla l'ID utilizzato nei passaggi di configurazione o cercalo nella dashboard della console Cloud:
Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, cosa che può essere utile quando eseguirai 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 zone diverse. Per ulteriori informazioni, consulta Regioni e Zone.
3. Crea un'istanza di Compute Engine
Per prima cosa, creeremo una macchina virtuale con lo strumento a riga di comando gcloud. Se preferisci, puoi anche usare la console, ma è più facile ripetere e spiegare la riga di comando.
Innanzitutto, creiamo un'istanza n2-standard-2 denominata pi-codelab con Debian 11 come sistema operativo. Utilizzeremo anche il disco permanente bilanciato (PD) per il volume di avvio. I DP bilanciati sono supportati da unità a stato solido (SSD) e bilancia 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.
Per scoprire di più sul comando gcloud compute instances create
, visita la pagina di riferimento.
4. Accedi tramite SSH all'istanza
Per connetterti all'istanza tramite SSH dalla riga di comando, esegui questo comando.
gcloud compute ssh pi-codelab
È tutto. Ora sei nella macchina virtuale. Puoi confermare il tuo host attuale eseguendo il comando hostname.
hostname
Il comando mostrerà il nome host dell'ambiente shell attuale.
pi-codelab
5. Installa le dipendenze
Ora installeremo le dipendenze necessarie per compilare il programma per calcolare Pi.
sudo apt update sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev
Il completamento della procedura richiede alcuni minuti. Ora controlla se hai un compilatore C++ funzionante.
c++ --version
Questo comando restituirà le informazioni sulla versione del compilatore, se installato correttamente.
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. Compila il programma
Ora compiliamo il programma C++ per calcolare il pi greco. È più semplice di quanto sembri anche se non hai mai sviluppato C++ prima d'ora. 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 attuale.
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
Il compilatore non restituisce nulla in caso di esito positivo. Verifica che tu abbia il file eseguibile:
ls pi
Questo comando ls dovrebbe restituire il nome file del programma, se esistente.
pi
7. Calcola Pi
Il programma pi
utilizza un argomento, il numero di cifre da calcolare. Ad esempio, calcoliamo i primi 100 decimali del pi greco.
./pi 100
Il programma terminerà in meno di un secondo e restituirà un risultato simile a questo:
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 indica i primi 100 decimali del pi greco. Congratulazioni, hai appena chiesto al computer di fare i calcoli al posto tuo!
Il programma può calcolare più cifre (al momento il limite è di 100 miliardi di cifre). Ora calcoliamo 10 milioni di cifre e misuriamo quanto tempo ci vuole. Reindirizziamo l'output a un file perché 10 milioni di cifre di pi greco sono un po' troppo lunghi per essere visualizzati nella console della riga di comando.
time ./pi 10000000 > pi10m.txt
Il programma genera 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 state salvate nel file pi10m.txt
. Le ultime tre righe descrivono quanto tempo è stato necessario per l'esecuzione del programma e quanta CPU ha utilizzato.
- Real: il tempo effettivo dall'inizio alla fine, il che significa che ci sono voluti 9,7 secondi per calcolare 10 milioni di cifre di pi greco nell'esempio precedente.
- utente: la quantità di tempo di CPU utilizzata, che è maggiore del valore "reale" poiché la macchina ha due core CPU e ciascun core viene conteggiato nel totale.
- sys: il tempo impiegato dal 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 il tempo necessario per scrivere il risultato sul disco.
Possiamo dare un'occhiata al file pi10m.txt e vedere la prima e l'ultima 100 cifre ciascuna.
Controlliamo le prime cifre. Questo comando restituisce i primi 100 decimali (e i primi 3 decimali).
head -c 102 pi10m.txt
Il risultato dovrebbe essere simile al seguente.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Il comando successivo restituisce gli ultimi 100 decimali.
tail -c 100 pi10m.txt
Il risultato dovrebbe essere simile al seguente.
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. esegui la pulizia del cluster
Non dimenticare di arrestare l'istanza Compute Engine, altrimenti continuerà a funzionare e ad accumulare costi.
Se ti trovi sulla VM (connessa a SSH), esegui prima il comando di uscita per uscire.
exit
Quindi, esegui questo 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
Complimenti, hai completato questo codelab su Compute Engine e calcolato 10 milioni di cifre di pi greco.
Abbiamo usato la stessa infrastruttura per calcolare 100 trilioni di cifre di pi greco nel 2022. Leggi l'annuncio per scoprire i nostri risultati. I risultati completi sono disponibili sul nostro sito dimostrativo pi.delivery.
Stai al passo con le ultime novità su computing e computing ad alte prestazioni nel blog di Google Cloud.
Altre funzionalità di Compute Engine
Compute Engine offre un ricco insieme di funzionalità. Ti consigliamo di approfondire alcuni di questi aspetti :
- 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
- Risorse di etichettatura - https://cloud.google.com/compute/docs/labeling-resources
- Migrazione delle VM in Compute Engine: https://cloud.google.com/compute/docs/vm-migration/
Inviaci il tuo feedback
- Dedica qualche istante a completare il nostro breve sondaggio