1. Introduction
Merci d'avoir ouvert cet atelier de programmation ! Prêt à traiter des données sur Compute Engine ?
Dans cet atelier de programmation, nous allons vous montrer comment démarrer une machine virtuelle et exécuter un programme pour calculer pi.
Vous allez créer une instance Compute Engine, puis télécharger, compiler et exécuter un programme pour calculer pi. Vous pouvez créer une instance Compute Engine depuis la console ou la ligne de commande. Dans cet atelier, vous apprendrez à utiliser les outils de ligne de commande.

Compute Engine propose des machines virtuelles de différentes formes, par exemple avec un nombre de cœurs, une taille de mémoire et un espace de stockage différents. Si nécessaire, vous pouvez utiliser une machine avec plus de 100 cœurs et plusieurs centaines de Go de mémoire. Toutefois, dans cet exemple, nous allons lancer une machine virtuelle prédéfinie avec 2 processeurs virtuels et 8 Go de mémoire.
Dans cet atelier de programmation, nous utiliserons la série de machines N2. Il s'agit d'une VM de la famille de machines à usage général qui cible la plupart des charges de travail standards et cloud natives. La série N2 offre des performances par thread plus élevées et toute la flexibilité de la famille de machines à usage général.
C'est parti !
2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID du projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
Google Cloud Shell
Bien que Google Cloud et Compute Engine puissent être utilisés à distance depuis votre ordinateur portable, nous allons utiliser Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous aurez besoin. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Cela signifie que tout ce dont vous avez besoin pour cet atelier de programmation est un navigateur (oui, tout fonctionne sur un Chromebook).
- Pour activer Cloud Shell à partir de Cloud Console, cliquez simplement sur Activer Cloud Shell
(l'opération de provisionnement et la connexion à l'environnement ne devraient prendre que quelques minutes).


Une fois connecté à Cloud Shell, vous êtes normalement déjà authentifié et le projet PROJECT_ID est sélectionné :
gcloud auth list
Résultat de la commande
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si, pour une raison quelconque, le projet n'est pas défini, exécutez simplement la commande suivante :
gcloud config set project <PROJECT_ID>
Vous recherchez votre PROJECT_ID ? Vérifiez l'ID que vous avez utilisé pendant les étapes de configuration ou recherchez-le dans le tableau de bord Cloud Console :

Par défaut, Cloud Shell définit certaines variables d'environnement qui pourront s'avérer utiles pour exécuter certaines commandes dans le futur.
echo $GOOGLE_CLOUD_PROJECT
Résultat de la commande
<PROJECT_ID>
- Pour finir, définissez la configuration du projet et de la zone par défaut :
gcloud config set compute/zone us-central1-f
Vous pouvez choisir parmi différentes zones. Pour en savoir plus, consultez la page Régions et zones.
3. Créer une instance Compute Engine
Nous allons d'abord créer une machine virtuelle avec l'outil de ligne de commande gcloud. Si vous préférez, vous pouvez également utiliser la console, mais la ligne de commande est plus facile à répéter et à expliquer.
Commençons par créer une instance n2-standard-2 nommée pi-codelab avec Debian 11 comme système d'exploitation. Nous utiliserons également le disque persistant avec équilibrage pour le volume de démarrage. Les disques persistants avec équilibrage sont sauvegardés par des disques durs SSD et offrent un bon équilibre entre performances et coûts. Il vous demandera quelle zone utiliser si vous n'avez pas sélectionné la zone par défaut dans la section "Configuration et exigences".
gcloud compute instances create pi-codelab \ --machine-type=n2-standard-2 \ --image-project=debian-cloud \ --image-family=debian-11 \ --boot-disk-type=pd-balanced
Le résultat de la commande devrait ressembler à ceci :
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
Notez que les champs INTERNAL_IP et EXTERNAL_IP changent chaque fois que vous créez une VM.
Pour en savoir plus sur la commande gcloud compute instances create, consultez la page de référence.
4. Se connecter en SSH à l'instance
Pour vous connecter en SSH à l'instance à partir de la ligne de commande, exécutez la commande suivante.
gcloud compute ssh pi-codelab
Et voilà ! Vous êtes maintenant sur la machine virtuelle. Vous pouvez confirmer votre hôte actuel en exécutant la commande hostname.
hostname
La commande affichera le nom d'hôte de l'environnement shell actuel.
pi-codelab
5. Installer des dépendances
Nous allons maintenant installer les dépendances nécessaires à la compilation du programme pour calculer pi.
sudo apt update sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev
Cette opération prend quelques minutes. Vérifions maintenant si vous disposez d'un compilateur C++ fonctionnel.
c++ --version
Si le compilateur est correctement installé, cette commande affichera des informations sur sa version.
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. Compiler le programme
Compilons maintenant le programme C++ pour calculer pi. C'est plus simple que ça n'y paraît, même si vous n'avez jamais développé en C++. Tous les prérequis ont été installés à l'étape précédente. Il ne nous reste plus qu'à récupérer et compiler le code source.
Tout d'abord, récupérez et enregistrez le code source. Cette étape télécharge un fichier source depuis GitHub et l'enregistre sous le nom "pi.cc" dans le répertoire actuel.
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc
Ensuite, exécutez le compilateur C++ pour compiler le code source enregistré.
c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt
Le compilateur n'affiche rien en cas de réussite. Vérifions que vous disposez du fichier exécutable :
ls pi
Cette commande ls doit générer le nom de fichier du programme s'il existe.
pi
7. Calculer Pi
Le programme pi accepte un argument, à savoir le nombre de chiffres à calculer. Par exemple, calculons les 100 premières décimales de pi.
./pi 100
Le programme se termine en moins d'une seconde et génère un résultat semblable à celui-ci :
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
La dernière ligne correspond aux 100 premières décimales de pi. Félicitations, vous venez de faire faire les calculs par l'ordinateur !
Le programme peut calculer plus de chiffres (actuellement limité à 100 milliards de chiffres). Calculons maintenant 10 millions de chiffres et mesurons le temps nécessaire. Nous redirigeons la sortie vers un fichier, car 10 millions de décimales de pi sont un peu trop longues à afficher dans la console de ligne de commande.
time ./pi 10000000 > pi10m.txt
Le programme génère un résultat semblable à celui-ci :
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
Cette fois, les chiffres ne sont pas inclus, car ils sont enregistrés dans le fichier pi10m.txt. Les trois dernières lignes décrivent le temps d'exécution du programme et la quantité de processeur utilisée.
- "real" : temps réel écoulé entre le début et la fin de l'opération.Dans l'exemple ci-dessus, il a fallu 9,7 secondes pour calculer 10 millions de décimales de pi.
- le temps CPU utilisé, qui est supérieur au temps "réel" car la machine dispose de deux cœurs de processeur et que chaque cœur est comptabilisé dans le total.
- sys : temps nécessaire au système d'exploitation pour exécuter le programme afin de traiter les tâches système telles que le réseau et les E/S. Cette fois, l'opération a duré environ 0,4 seconde, ce qui correspond principalement au temps nécessaire pour écrire le résultat sur le disque.
Nous pouvons examiner le fichier pi10m.txt et voir les 100 premiers et les 100 derniers chiffres.
Vérifions les premiers chiffres. Cette commande affiche les 100 premières décimales (ainsi que les trois premiers chiffres et le point décimal).
head -c 102 pi10m.txt
Le résultat doit ressembler à ceci.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
La commande suivante affiche les 100 dernières décimales.
tail -c 100 pi10m.txt
Le résultat doit ressembler à ceci.
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. Nettoyer le cluster
N'oubliez pas d'arrêter votre instance Compute Engine, sinon elle continuera de s'exécuter et d'engendrer des coûts.
Si vous êtes sur la VM (connectée avec SSH), déconnectez-vous d'abord en exécutant la commande exit.
exit
Exécutez ensuite la commande gcloud compute instances delete suivante pour supprimer l'instance et les disques associés. Vous serez invité à confirmer la suppression de la ressource.
gcloud compute instances delete pi-codelab
9. Étape suivante
Félicitations, vous avez terminé cet atelier de programmation Compute Engine et calculé 10 millions de décimales de pi !
Nous avons utilisé la même infrastructure pour calculer 100 000 milliards de chiffres de pi en 2022. Pour en savoir plus, consultez l'annonce. L'ensemble des résultats est disponible sur notre site de démonstration pi.delivery.
Tenez-vous informé des dernières actualités concernant Compute et le calcul hautes performances sur le blog Google Cloud.
Autres fonctionnalités de Compute Engine
Compute Engine propose un large éventail de fonctionnalités. Voici quelques exemples :
- VM préemptives : https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Nœuds à locataire unique : https://cloud.google.com/compute/docs/nodes/create-nodes
- GPU et TPU : https://cloud.google.com/compute/docs/gpus/add-gpus
- Instances Windows : https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Ajouter des libellés aux ressources : https://cloud.google.com/compute/docs/labeling-resources
- Migrer des VM vers Compute Engine : https://cloud.google.com/compute/docs/vm-migration/
Votre avis nous intéresse !
- Veuillez prendre quelques minutes pour répondre à notre courte enquête.