1. Introdução
Agradecemos por abrir este codelab. Pronto para processar números no Compute Engine?
Neste codelab, mostraremos como iniciar uma nova máquina virtual e executar um programa para calcular o pi.
Você criará uma instância do Compute Engine, fará o download, compilará e executará um programa para calcular o pi. É possível criar uma instância do Compute Engine no console ou na linha de comando. Este laboratório mostra como usar as ferramentas de linha de comando.
O Compute Engine oferece máquinas virtuais em execução em vários formatos, como números diferentes de núcleos, tamanho da memória e armazenamento. É possível usar uma máquina com mais de 100 núcleos e várias centenas de GB de memória, se necessário, mas neste exemplo vamos lançar uma máquina virtual predefinida com 2 vCPUs e 8 GB de memória.
Vamos usar a série de máquinas N2 neste codelab. É uma VM com uma família de máquinas de uso geral destinada à maioria das cargas de trabalho padrão e nativas da nuvem. A série N2 tem maior desempenho por thread e toda a flexibilidade que a família de máquinas de uso geral oferece.
Agora vamos começar.
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google Você pode atualizar a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto. - Para sua informação, há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Google Cloud Shell
Embora o Google Cloud e o Compute Engine possam ser operados remotamente do seu laptop, neste codelab vamos usar o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
O Cloud Shell é uma máquina virtual com base em Debian que contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Isso significa que tudo que você precisa para este codelab é um navegador (sim, funciona em um Chromebook).
- Para ativar o Cloud Shell no Console do Cloud, basta clicar em Ativar o Cloud Shell
. Leva apenas alguns instantes para provisionar e se conectar ao ambiente.
Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto estará configurado com seu PROJECT_ID
.
gcloud auth list
Resposta ao comando
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se, por algum motivo, o projeto não estiver definido, basta emitir o seguinte comando:
gcloud config set project <PROJECT_ID>
Quer encontrar seu PROJECT_ID
? Veja qual ID você usou nas etapas de configuração ou procure-o no painel do Console do Cloud:
O Cloud Shell também define algumas variáveis de ambiente por padrão, o que pode ser útil ao executar comandos futuros.
echo $GOOGLE_CLOUD_PROJECT
Resposta ao comando
<PROJECT_ID>
- Defina a zona padrão e a configuração do projeto:
gcloud config set compute/zone us-central1-f
É possível escolher uma variedade de zonas diferentes. Para mais informações, consulte Regiões e zonas.
3. Criar uma instância do Compute Engine
Primeiro, criaremos uma máquina virtual com a ferramenta de linha de comando gcloud. Você também pode usar o Console se preferir, mas a linha de comando é mais fácil de repetir e explicar.
Primeiro, vamos criar uma instância n2-standard-2 chamada pi-codelab com o Debian 11 como sistema operacional. Também usaremos o disco permanente equilibrado (DP, na sigla em inglês) para o volume de inicialização. Os DPs equilibrados são respaldados por unidades de estado sólido (SSD) e equilibram desempenho e custo. Caso você não tenha selecionado a zona padrão na seção Configuração e requisitos, ele perguntará qual zona usar.
gcloud compute instances create pi-codelab \ --machine-type=n2-standard-2 \ --image-project=debian-cloud \ --image-family=debian-11 \ --boot-disk-type=pd-balanced
O resultado do comando será semelhante a este:
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
Observe que os campos INTERNAL_IP e EXTERNAL_IP mudam sempre que você cria uma nova VM.
Se você quiser saber mais sobre o comando gcloud compute instances create
, acesse a página de referência.
4. Acesse a instância via SSH
Para usar o SSH na instância pela linha de comando, execute o comando a seguir.
gcloud compute ssh pi-codelab
Pronto! Agora você está na máquina virtual. Para confirmar seu host atual, execute o comando do nome do host.
hostname
O comando vai mostrar o nome do host do ambiente shell atual.
pi-codelab
5. Instalar dependências
Agora, instalaremos as dependências necessárias para compilar o programa e calcular o pi.
sudo apt update sudo apt -y install build-essential libgmp-dev libmpfr-dev libfmt-dev
O processo leva alguns minutos para ser concluído. Agora, vamos verificar se você tem um compilador C++ em funcionamento.
c++ --version
Esse comando vai gerar informações sobre a versão do compilador se ele for instalado corretamente.
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. Compilar o programa
Agora, vamos compilar o programa em C++ para calcular o Pi. Isso é mais simples do que parece, mesmo que você não tenha desenvolvido em C++ antes. Todos os pré-requisitos foram instalados na etapa anterior, então só precisamos buscar e compilar o código-fonte.
Primeiro, busque e salve o código-fonte. Esta etapa faz o download de um arquivo de origem do GitHub e o salva como pi.cc no diretório atual.
curl -OL https://raw.githubusercontent.com/GoogleCloudPlatform/pi-delivery/main/codelab/pi.cc
Em seguida, execute o compilador C++ para compilar o código-fonte salvo.
c++ -opi pi.cc -std=c++17 -O3 -march=native -lgmp -lmpfr -lpthread -lfmt
O compilador não gera nada em caso de sucesso. Verifique se você tem o arquivo executável:
ls pi
Esse comando "ls" deve gerar o nome do arquivo do programa, se houver.
pi
7. Calcular Pi
O programa pi
usa um argumento, o número de dígitos a serem calculados. Por exemplo, vamos calcular os primeiros 100 decimais de Pi.
./pi 100
O programa vai terminar em menos de um segundo e vai gerar algo parecido com este:
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
A última linha são os 100 primeiros decimais de Pi. Parabéns, você pediu para o computador fazer as contas para você!
O programa pode calcular mais dígitos (atualmente limitado a 100 bilhões de dígitos). Agora, vamos calcular 10 milhões de dígitos e medir quanto tempo isso leva. Redirecionamos a saída para um arquivo porque 10 milhões de dígitos de pi são longos demais para serem vistos no console da linha de comando.
time ./pi 10000000 > pi10m.txt
A resposta do programa é semelhante a esta:
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
Desta vez, ele não inclui os dígitos porque eles estão salvos no arquivo pi10m.txt
. As três últimas linhas descrevem quanto tempo o programa levou para ser executado e a quantidade de CPU usada.
- real: o tempo real do início ao fim, o que significa que levou 9,7 segundos para calcular 10 milhões de dígitos de pi no exemplo acima.
- usuário: quanto tempo de CPU foi usado, que é maior do que "real" porque a máquina tem dois núcleos de CPU, e cada um deles é contabilizado no total.
- sys: o tempo que o sistema operacional precisa para executar o programa e processar tarefas do sistema, como rede e E/S. Desta vez, demorou cerca de 0,4 segundo, que é principalmente o tempo para gravar o resultado no disco.
Podemos dar uma olhada em pi10m.txt e ver os primeiros e os últimos 100 dígitos de cada um.
Vamos verificar os primeiros dígitos. Esse comando gera os primeiros 100 decimais (e os três primeiros e o ponto decimal).
head -c 102 pi10m.txt
O resultado ficará assim:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
O próximo comando gera os últimos 100 decimais.
tail -c 100 pi10m.txt
O resultado ficará assim:
610515549257985759204553246894468742702504639790565326553194060999469787333810631719481735348955897
8. Limpar o cluster
Não se esqueça de desligar sua instância do Compute Engine. Caso contrário, ela continuará em execução e acumulando custos.
Se você estiver na VM (conectada com SSH), execute primeiro o comando de saída para fazer logout.
exit
Em seguida, execute o seguinte comando gcloud compute instances delete
para excluir a instância e os discos associados. Você vai precisar confirmar a exclusão do recurso.
gcloud compute instances delete pi-codelab
9. A seguir
Parabéns, você concluiu este codelab do Compute Engine e calculou 10 milhões de dígitos de pi.
Usamos a mesma infraestrutura para calcular 100 trilhões de dígitos de pi em 2022. Leia o comunicado para saber como foi nosso desempenho. Os resultados completos estão disponíveis no nosso site de demonstração pi.delivery.
Fique por dentro das últimas notícias sobre computação e computação de alto desempenho no blog do Google Cloud.
Mais recursos do Compute Engine
O Compute Engine tem um amplo conjunto de recursos. Talvez você queira mergulhar em alguns destes tópicos :
- VMs preemptivas: https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Nós de locatário individual: https://cloud.google.com/compute/docs/nodes/create-nodes
- GPUs e TPUs: https://cloud.google.com/compute/docs/gpus/add-gpus
- Instâncias do Windows: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Como rotular recursos - https://cloud.google.com/compute/docs/labeling-resources
- Como migrar VMs para o Compute Engine - https://cloud.google.com/compute/docs/vm-migration/
Envie um feedback
- Reserve um momento para completar nossa pesquisa curta