Crie uma instância de VM pronta para HPC

As cargas de trabalho de computação de alto desempenho (HPC) fortemente acopladas usam frequentemente a interface de passagem de mensagens (MPI) para comunicar entre processos e instâncias de máquinas virtuais (VM). No entanto,a criação da sua própria imagem de VM otimizada para o desempenho do MPI requer conhecimentos especializados de sistemas, Google Cloud conhecimentos e tempo adicional para manutenção. Para configurar rapidamente um ambiente otimizado para as suas cargas de trabalho de HPC, use a imagem de VM de HPC.

A imagem de VM de HPC é uma imagem de VM baseada no Rocky Linux 8 otimizada para cargas de trabalho de HPC fortemente acopladas. Inclui parâmetros de ajuste de rede e do kernel pré-configurados necessários para criar instâncias de VM que alcançam o desempenho de MPI ideal no Google Cloud.

Para obter os melhores resultados, implemente a imagem de VM de HPC num tipo de máquina de uma série de máquinas otimizadas para HPC, como a série H4D ou H3, ou uma série de máquinas otimizadas para computação, como C2 ou C2D. Estes tipos de máquinas foram concebidos para aplicações de HPC fortemente acopladas. Para usar RDMA com H4D, tem de usar a versão 20241125 ou posterior da imagem de VM de HPC.

Pode criar uma instância de VM pronta para HPC com as seguintes opções:

Vantagens

A imagem de VM de HPC oferece as seguintes vantagens:

  1. Instâncias de VM prontas para cargas de trabalho de HPC (computação de alto desempenho) imediatamente. Não é necessário ajustar manualmente o desempenho, gerir reinícios de instâncias de VMs nem manter-se a par das atualizações Google Cloud mais recentes para cargas de trabalho de HPC estreitamente associadas.
  2. Otimizações de rede para cargas de trabalho fortemente acopladas. Estão incluídas otimizações que reduzem a latência para mensagens pequenas, o que beneficia as aplicações que dependem fortemente de comunicações ponto a ponto e coletivas. Se usar a série de máquinas H4D, a imagem da VM HPC contém os controladores RDMA na nuvem necessários.
  3. Calcular otimizações para cargas de trabalho de HPC. Estão incluídas otimizações que reduzem a variância do sistema, o que torna o elevado desempenho de nó único mais previsível.
  4. Desempenho consistente e reproduzível. A normalização de imagens de VMs oferece-lhe um desempenho consistente e reproduzível ao nível da aplicação.
  5. Compatibilidade melhorada das aplicações. O alinhamento com os requisitos ao nível do nó da especificação da plataforma de HPC da Intel permite um elevado grau de interoperabilidade entre sistemas.

Funcionalidades da imagem de VM de HPC

A imagem de VM de HPC oferece várias funcionalidades concebidas para otimizar o desempenho para cargas de trabalho de computação de alto desempenho (HPC):

  • Atualizações automáticas desativadas
  • Ajustes coletivos da Intel MPI
  • RPMs pré-instalados

Atualizações automáticas desativadas

As atualizações automáticas podem ter um impacto negativo no desempenho das cargas de trabalho de HPC. As atualizações automáticas podem ser desativadas quando usar as imagens de VMs de HPC. Para tal, defina a entrada de metadados google_disable_automatic_updates como TRUE quando criar uma instância de VM. A forma como esta entrada de metadados é definida durante a criação da instância depende da ferramenta que usa para criar a instância.

Por exemplo, quando usar o comando gcloud compute instances create para criar uma instância da VM, forneça o argumento --metadata. Para mais informações, consulte o artigo Acerca dos metadados de VMs.

Biblioteca Intel MPI

A Google recomenda que use a biblioteca Intel MPI 2021 para executar tarefas MPI em Google Cloud. Para mais informações, consulte as secções seguintes:

RPMs pré-instalados

A imagem de VM de HPC inclui os seguintes pacotes RPM pré-instalados:

  • daos-client
  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • infiniband-diags
  • kernel-devel
  • kmod-idpf-irdma
  • libfabric
  • librdmacm-utils
  • libibverbs-utils
  • libXt
  • ltrace
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • perftest
  • rdma-core
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • Grupo de pacotes "Ferramentas de desenvolvimento"

Inícios rápidos

Estes tutoriais descrevem os passos para configurar uma instância de VM otimizada para HPC. Os procedimentos descrevem como:

  • Crie uma instância de VM de HPC (sem configurar o Cloud RDMA)
  • Especifique uma política de posicionamento compacta quando criar instâncias de VMs de HPC
  • Crie uma instância de VM de HPC que use o Cloud RDMA (pré-visualização)

Não pode adicionar o RDMA na nuvem a uma instância de VM de HPC existente. Por isso, siga os passos adequados quando criar a instância.

Antes de começar

  1. Para usar a CLI do Google Cloud para este início rápido, primeiro tem de instalar e inicializar a CLI do Google Cloud:
  2. Na Google Cloud consola, na página do seletor de projetos, selecione ou crie um Google Cloud projeto.

Crie uma instância de VM de HPC

Recomendamos vivamente que escolha um tipo de máquina das seguintes séries de máquinas:

Estas VMs têm um mapeamento de núcleos virtuais para físicos fixo e expõem a arquitetura de células NUMA ao SO convidado, ambos essenciais para o desempenho de aplicações de HPC fortemente acopladas.

Consola

  1. Na Google Cloud consola, aceda à página do HPC VM Cloud Marketplace. Aceda à página do Cloud Marketplace da VM de HPC

  2. Clique em Começar.

  3. Na página de implementação da VM de HPC, introduza um Nome da implementação. Este nome torna-se a raiz do nome da VM. O Compute Engine anexa -vm a este nome quando atribui um nome à sua instância.

  4. Escolha uma zona e um tipo de máquina. Para este início rápido, pode deixar todas as definições como estão ou alterá-las.

  5. Deixe o Tipo de disco de arranque, o Tamanho do disco de arranque e a Interface de rede nas respetivas predefinições.

  6. Clique em Implementar.

Após a conclusão da criação da instância de VM, o Cloud Deployment Manager é aberto, onde pode gerir a sua VM de HPC e outras implementações.

gcloud

Crie uma VM de HPC com o comando instances create. Se estiver a criar várias instâncias de VMs de HPC interligadas, então crie VMs de HPC com políticas de posicionamento compactas para alcançar uma baixa latência de rede.

Para criar uma instância de VM de HPC sem uma política de posicionamento, use um comando semelhante ao seguinte:

gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --image-family=IMAGE_FAMILY \
        --image-project=cloud-hpc-image-public \
        --maintenance-policy=TERMINATE \
        --machine-type=MACHINE_TYPE

Substitua o seguinte:

  • INSTANCE_NAME: um nome para a instância de VM de HPC.
  • ZONE: a zona onde criar a instância.
  • IMAGE_FAMILY: a família de imagens da imagem a usar quando criar as instâncias de VM. Use hpc-rocky-linux-8 para a imagem mais recente baseada no Rocky Linux 8.
  • MACHINE_TYPE: o tipo de máquina a usar quando criar a instância de VM.

Após algum tempo, a criação da instância de VM é concluída. Para validar a configuração da instância e ver o respetivo estado, execute o seguinte comando:

gcloud compute instances describe INSTANCE_NAME

Crie instâncias de VM de HPC com políticas de posicionamento compactas

Pode reduzir a latência entre instâncias de VM criando uma política de posicionamento compacta. Uma política de posicionamento compacta garante que as instâncias na mesma zona de disponibilidade estão localizadas próximas umas das outras.

Se precisar de mais instâncias de VM do que as que cabem numa única política de posicionamento compacta, divida as instâncias em várias políticas de posicionamento. Use o número mínimo de políticas de posicionamento que se adequam a todas as suas instâncias.

Para criar instâncias de VM de HPC que especifiquem uma política de posicionamento compacta, siga estes passos:

  1. Crie uma política de posicionamento compacta.

  2. Efetue um dos seguintes passos:

Crie uma instância de VM de HPC que use o Cloud RDMA

Para criar uma instância de VM de HPC que use o Cloud RDMA, primeiro, tem de criar, pelo menos, uma rede VPC normal e uma rede VPC Falcon. A rede VPC Falcon usa um perfil de rede RDMA que permite o tráfego RDMA entre instâncias de computação. Esta rede é separada da rede VPC normal que transporta tráfego não RDMA para outros serviços ou para a Internet.Google Cloud

Para criar uma instância de VM de HPC que use o RDMA na nuvem, as tarefas a concluir são as seguintes:

  1. Identifique ou crie, pelo menos, duas redes VPC:

    • Uma rede VPC normal para o tráfego que passa pela interface de rede gVNIC
    • Uma rede VPC do Falcon para o tráfego RDMA
  2. Crie uma instância de VM de HPC.

    1. Para a imagem de origem, use a imagem da VM de HPC. Esta imagem inclui os controladores necessários para o RDMA na nuvem.
    2. Durante a criação da instância, configure, pelo menos, duas interfaces de rede: uma que use o controlador gVNIC e outra que use o controlador IRDMA.

      Para uma explicação mais completa, consulte o artigo Crie uma instância que use o RDMA na nuvem.

  3. Se planeia executar aplicações MPI nas instâncias de VMs de HPC que usam o Cloud RDMA, siga os passos de configuração do MPI em Configure e dimensione aplicações MPI em VMs H4D com o Cloud RDMA.

Aceda à instância de VM de HPC

Depois de criar a instância de VM de HPC, esta é iniciada automaticamente. Para aceder à instância, faça uma das seguintes ações:

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique no nome da instância de VM.

  3. Na secção Acesso remoto, clique na primeira lista pendente e escolha como quer aceder à instância.

O Compute Engine propaga as suas chaves SSH e cria o seu utilizador. Para mais informações, consulte o artigo Estabelecer ligação a VMs do Linux.

gcloud

Para aceder à instância através de SSH, use o comando gcloud compute ssh:

gcloud compute ssh INSTANCE_NAME

O Compute Engine propaga as suas chaves SSH e cria o seu utilizador. Para mais informações, consulte o artigo Estabelecer ligação a instâncias.

Limpar

Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nestes inícios rápidos, elimine todas as instâncias de VMs de HPC que criou.

Consola

  1. Na Google Cloud consola, aceda à página Implementações.

    Aceda a Implementações

  2. Selecione a caixa de verificação junto à implementação da VM de HPC.

  3. Clique em Eliminar.

gcloud

Use o comando instances delete:

gcloud compute instances delete INSTANCE_NAME

Configure a instância de VM de HPC de acordo com as práticas recomendadas

Para conseguir um desempenho melhor e mais previsível para a sua instância de VM de HPC, recomendamos que use as seguintes práticas recomendadas.

Desative o multithreading simultâneo

A imagem da VM de HPC ativa a multithreading simultânea (SMT), também conhecida como Hyper-Threading em processadores Intel, por predefinição. A desativação da SMT pode tornar o seu desempenho mais previsível e diminuir os tempos de processamento.

Pode usar os seguintes métodos para desativar o SMT:

  • Para desativar a SMT ao criar uma nova VM de HPC, siga os passos para criar uma VM de HPC e inclua a flag --threads-per-core=1.

  • Para desativar a SMT numa VM de HPC existente, ligue-se à VM e execute o seguinte comando a partir da VM:

    sudo google_mpi_tuning --nosmt
    

Para mais informações, consulte o artigo Defina o número de threads por núcleo.

Configure a gVNIC como o tipo de interface de rede para instâncias C2 e C2D

A imagem de VM de HPC suporta o Virtio-net e o gVNIC (Google Virtual NIC) como interfaces de rede virtuais. A utilização de gVNIC em vez de Virtio-net pode melhorar a escalabilidade das aplicações MPI, oferecendo um melhor desempenho de comunicação e um débito mais elevado. Além disso, o gVNIC é um pré-requisito para o desempenho de rede de nível 1 por VM, que oferece uma largura de banda mais elevada e permite um débito mais elevado.

Se criar uma nova instância C2 ou C2D, por predefinição, o Virtio-net é usado para a interface de rede virtual. Para usar a gVNIC, siga os passos para criar uma VM de HPC e faça uma das seguintes ações:

Consola

Para definir o gVNIC como a interface de rede, quando criar a instância, no menu de navegação, clique em Redes. No painel Rede apresentado, faça o seguinte:

  1. Aceda à secção Interfaces de rede
  2. Para Placa de rede, selecione gVNIC.

gcloud

Inclua a flag --network-interface=nic-type=GVNIC no comando gcloud compute instances create.

A imagem da VM de HPC inclui o controlador gVNIC como um Dynamic Kernel Module Support (DKMS). Para mais informações, consulte o artigo Usar a NIC virtual da Google.

Desative as mitigações de Meltdown e Spectre

A imagem da VM de HPC ativa as mitigações do Meltdown e Spectre por predefinição. Em alguns casos, estas mitigações podem resultar numa degradação do desempenho específica da carga de trabalho. Para desativar estas mitigações e incorrer nos riscos de segurança associados, faça o seguinte:

  1. Execute o seguinte comando na sua instância de HPC:

    sudo google_mpi_tuning --nomitigation
    
  2. Reinicie a instância.

Melhore o desempenho da rede

Para melhorar o desempenho da rede da sua instância, configure uma ou mais das seguintes configurações:

Use o Intel MPI 2021

A Google recomenda a utilização da biblioteca Intel MPI 2021 para executar tarefas MPI em Google Cloud.

As implementações de MPI têm muitos parâmetros de configuração internos que podem afetar o desempenho da comunicação. Estes parâmetros são especialmente relevantes para a comunicação coletiva da MPI, que lhe permite especificar algoritmos e parâmetros de configuração que podem ter um desempenho muito diferente no ambiente Google Cloud .

A imagem de VM de HPC inclui uma utilidade, google-hpc-compute, que instala as bibliotecas MPI recomendadas e usa fornecedores libfabric personalizados através do transporte TCP. Google Cloud

Limitações

As vantagens da otimização variam de aplicação para aplicação. Em alguns casos, uma determinada otimização pode ter um efeito negativo no desempenho. Considere fazer testes de referência às suas aplicações para encontrar a configuração mais eficiente ou económica.

Use a utilidade google-hpc-compute para suporte do Intel MPI 2021

O script google_install_intelmpi é a ferramenta relacionada com a MPI na utilidade Google-hpc-compute. Ajuda a instalar e configurar o Intel MPI.

O utilitário google-hpc-compute está incluído na imagem da VM de HPC.

Instale o Intel MPI 2021

Para instalar a biblioteca Intel MPI ao criar uma nova VM de HPC, siga os passos para criar uma VM de HPC e inclua o seguinte ao criar a instância da VM:

--metadata=google_install_intelmpi="--impi_2021"

Para instalar a biblioteca numa VM de HPC existente, execute o seguinte comando nessa VM:

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

A localização predefinida de install_dir está definida como /opt/intel.

Intel MPI Library 2018 e ajustes coletivos de MPI

A imagem de VM de HPC inclui ajustes coletivos de Intel MPI realizados em instâncias c2-standard-60 e c2d-standard-112 com políticas de posicionamento compactas. Estas sintonizações estão disponíveis no diretório /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018.

Para aplicar estas configurações de otimização numa biblioteca MPI instalada, execute o script de shell mpivars para configurar o ambiente adequado. Em seguida, pode instalar as afinações diretamente com o seguinte comando (use a opção --sudo se precisar de acesso de raiz ao diretório): google_install_mpitune

Pode usar mpitune para especificar manualmente os algoritmos e os parâmetros de configuração para a comunicação coletiva MPI e gerar ficheiros de configuração.

Por exemplo, para fazer o ajuste para 22 instâncias de VMs e 30 vCPUs por instância, execute o script de shell mpivars para configurar o ambiente adequado e, em seguida, execute o seguinte comando. Tem de ter writeacesso ao diretório ou executar o comando como utilizador raiz.

mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22

Este comando gera um ficheiro de configuração no diretório Intel MPI que pode ser usado mais tarde para executar aplicações. Para usar a configuração de otimização para uma aplicação, adicione a opção -tune à linha de comandos mpirun, por exemplo:

mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./APPLICATION_NAME

Substitua o seguinte:

  • HOSTFILE: o nome de um ficheiro no SO convidado que lista os nomes de rede das instâncias de VM
  • APPLICATION_NAME: o nome do ficheiro da aplicação a executar

Crie uma imagem personalizada com a imagem da VM de HPC

Para implementar as práticas recomendadas em grande escala, crie uma imagem do SO personalizada para usar com as instâncias de VM de HPC. Conclua as tarefas seguintes para criar uma imagem personalizada a usar quando criar instâncias de VMs de HPC:

  1. Crie uma VM que use a imagem de VM de HPC.

  2. Personalize a VM com ajustes de MPI.

  3. Crie uma imagem personalizada usando o disco de arranque da imagem da VM de HPC como o disco de origem. Pode fazê-lo através da Google Cloud consola ou da CLI do Google Cloud.

Consola

  1. Na Google Cloud consola, aceda à página Imagens.

    Aceder a Imagens

  2. Clique em Criar imagem.

  3. Especifique um nome para a imagem.

  4. Em Disco de origem, selecione o nome do disco de arranque na sua VM de HPC.

  5. Escolha as restantes propriedades da imagem.

  6. Clique em Criar.

gcloud

Crie a imagem personalizada com o comando images create.

gcloud compute images create IMAGE_NAME \
         --source-disk=INSTANCE_NAME \
         --source-disk-zone=VM_ZONE \
         --family=IMAGE_FAMILY \
         --storage-location=LOCATION

Substitua o seguinte:

  • IMAGE_NAME: nome da imagem personalizada.
  • INSTANCE_NAME: nome da sua VM de HPC.
  • INSTANCE_ZONE: zona onde a sua VM de HPC está localizada.
  • IMAGE_FAMILY: opcional. A família de imagens a que esta imagem pertence.
  • LOCATION: opcional. Região na qual a imagem personalizada é armazenada. A localização predefinida é a multirregião mais próxima da localização do disco de origem.

Preços

A imagem de VM de HPC está disponível sem custos adicionais. Uma vez que a imagem de VM de HPC é executada no Compute Engine, pode incorrer em custos relativos a recursos do Compute Engine, como vCPUs, discos e memória. Para saber mais, consulte os preços do Compute Engine.

O que se segue?