Como criar uma instância de VM pronta para HPC


Introdução

As cargas de trabalho de computação de alto desempenho (HPC, na sigla em inglês) de acoplamento rígido usam a interface de transmissão de mensagens (MPI, na sigla em inglês) para comunicação entre processos e instâncias de máquina virtual (VM, na sigla em inglês). No entanto, para criar uma imagem de VM ajustada para o desempenho ideal do MPI, é necessário ter experiência com sistemas, conhecimento do Google Cloud e mais tempo para manutenção. Para criar instâncias de VM rapidamente para as cargas de trabalho de HPC, use a imagem de VM de HPC. Como alternativa, é possível criar VMs usando a série de máquinas H3.

A imagem de VM de HPC é uma imagem de VM baseada no CentOS 7.9 ou no Rocky Linux 8 e otimizada para cargas de trabalho de HPC com acoplamento rígido. Ela inclui parâmetros pré-configurados de ajuste de rede e kernel necessários para criar instâncias de VM que alcançam o desempenho ideal do MPI no Google Cloud.

É possível criar uma VM pronta para HPC usando as seguintes opções:

Benefícios

A imagem de VM de HPC oferece os seguintes benefícios:

  1. VMs prontas para uso de HPC. Não é necessário ajustar manualmente o desempenho, gerenciar reinicializações de VMs ou manter-se informado sobre as atualizações mais recentes das cargas de trabalho de HPC de acoplamento rígido do Google Cloud.
  2. Otimizações de rede para cargas de trabalho de acoplamento rígido. Estão incluídas otimizações que reduzem a latência para pequenas mensagens, o que beneficia os aplicativos que dependem muito de comunicações ponto a ponto e de comunicação coletiva.
  3. otimização de computação para cargas de trabalho de HPC. Estão incluídas otimizações que reduzem a instabilidade do sistema, o que torna o alto desempenho de um nó único mais previsível.
  4. Desempenho consistente e reproduzível. A padronização de imagens de VM oferece desempenho consistente e reproduzível no nível do aplicativo.
  5. Melhoria na compatibilidade de apps. O alinhamento com os requisitos no nível do nó da especificação da plataforma Intel HPC permite um alto grau de interoperabilidade entre sistemas.

Recursos

Ajustes coletivos da Intel MPI

A imagem da VM de HPC inclui ajustes coletivos da Intel MPI executados nas instâncias c2-standard-60 and c2d-standard-112 que usam políticas de colocação de compactação.

RPMs pré-instaladas

A imagem da VM de HPC vem com os seguintes pacotes RPM pré-instalados:

  • gcc-gfortran
  • gcc-toolset-12
  • Lmod
  • dkms
  • htop
  • hwloc
  • hwloc-devel
  • kernel-devel
  • ltrace
  • libXt
  • nfs-utils
  • numactl
  • numactl-devel
  • papi
  • pciutils
  • pdsh
  • perf
  • redhat-lsb-core
  • redhat-lsb-cxx
  • rsh
  • screen
  • strace
  • wget
  • zsh
  • grupo de pacotes "Ferramentas para desenvolvedores"

Guias de início rápido

Antes de começar

  1. Para usar a CLI do Google Cloud neste guia de início rápido, primeiro instale e inicialize a CLI do Google Cloud:
  2. No Console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.

Crie uma instância de VM de HPC

criar a VM

É altamente recomendável escolher um tipo de máquina otimizado para computação, como C2, C2D ou H3. Essas VMs têm mapeamento fixo de núcleo virtual para físico e expõem a arquitetura de célula NUMA ao sistema operacional convidado, sendo ambos essenciais para o desempenho de aplicativos HPC fortemente acoplados.

Console

  1. No Console do Google Cloud, acesse a página de VM de HPC no Cloud Marketplace. Acessar a página de VM de HPC no Cloud Marketplace

  2. Clique em Iniciar.

  3. Na página de implantação da VM de HPC, insira um Nome de implantação. Esse nome se torna a raiz do nome da VM. O Compute Engine anexará -vm a esse nome ao nomear a instância.

  4. Escolha uma zona e um tipo de máquina. Neste guia de início rápido, é possível deixar todas as configurações como estão ou alterá-las. É altamente recomendável escolher um tipo de máquina otimizada para computação, como C2, C2D ou H3.

  5. Mantenha as configurações padrão de Tipo de disco de inicialização, Tamanho do disco de inicialização e Interface de rede.

  6. Clique em Implantar.

Após a conclusão da criação da instância da VM, o Cloud Deployment Manager é aberto para gerenciar a VM de HPC e outras implantações.

gcloud

Crie uma VM de HPC usando o comando instances create. É altamente recomendável criar VMs de HPC usando políticas de colocação compactas para alcançar baixa latência de rede. Se você precisar de mais VMs do que cabe em uma única política de posicionamento compacta, divida as VMs em várias políticas de posicionamento. Recomendamos usar o número mínimo de políticas de canal que se encaixam nas VMs.

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

Substitua:

  • VM_NAME: nome da VM a ser criada;
  • ZONE: zona em que a VM será criada;
  • IMAGE_FAMILY: a família de imagens da imagem a ser usada para criar instâncias de VM. Use hpc-centos-7 para uma imagem baseada no CentOS ou hpc-rocky-linux-8 para uma imagem baseada no Rocky Linux 8.
  • MACHINE_TYPE: tipo de máquina para a nova VM.

Após um tempo, a criação da instância de VM é concluída. Para verificar a VM e ver o status dela, execute o seguinte comando:

gcloud compute instances describe VM_NAME

Acessar a VM

Console

Depois de criar a instância de VM de HPC, ela inicializa automaticamente. Para acessá-la, faça o seguinte:

  1. No Console do Google Cloud, acesse a página Instâncias de VM.

    Acessar instâncias de VM

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

  3. Na seção Acesso remoto, clique na primeira lista suspensa e escolha como você quer acessar a instância.

O Compute Engine propaga as chaves SSH e cria o usuário. Para mais informações, consulte Como se conectar a VMs do Linux.

gcloud

Depois de criar a instância de VM de HPC, ela inicializa automaticamente. Para acessá-la usando SSH, use o comando compute ssh:

gcloud compute ssh VM_NAME

O Compute Engine propaga as chaves SSH e cria o usuário. Para mais informações, consulte Como se conectar a instâncias.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste guia de início rápido, exclua a instância de VM de HPC que você criou.

Console

  1. No Console do Google Cloud, acesse a página implantações.

    Acessar "Implantações"

  2. Marque a caixa de seleção ao lado da implantação da VM de HPC.

  3. Clique em Excluir.

gcloud

Use o comando instances delete:

gcloud compute instances delete VM_NAME

Criar VMs de HPC com políticas de colocação de compactação

É possível reduzir a latência entre as VMs criando uma política de colocação de compactação. Uma política de colocação de compactação garante que as VMs na mesma zona de disponibilidade estejam localizadas próximas umas das outras.

Para criar VMs de HPC que especifiquem uma política de posicionamento compacto, siga estas etapas:

  1. Crie uma política de posicionamento compacto.

  2. Siga uma das seguintes ações:

Configurar sua VM de HPC de acordo com as práticas recomendadas

Para ter um desempenho melhor e mais previsível para sua VM de HPC, recomendamos que você siga as práticas recomendadas a seguir.

Desativar multissegmentação simultânea

Por padrão, a imagem de VM de HPC permite multissegmentação simultânea (SMT, na sigla em inglês), também conhecida como Hyper-Threading em processadores Intel. Desativar a SMT pode tornar seu desempenho mais previsível e diminuir os tempos de job.

Use os seguintes métodos para desativar a SMT:

  • Para desativar a SMT ao criar uma nova VM de HPC, siga as etapas para criar uma VM de HPC e inclua a sinalização --threads-per-core=1.

  • Para desativar a SMT em uma VM de HPC atual, conecte-se à VM e execute o seguinte comando na VM:

    sudo google_mpi_tuning --nosmt
    

Para ver mais informações, consulte Definir número de linhas de execução por núcleo.

Usar o gVNIC como a interface de rede virtual

A imagem de VM de HPC é compatível com o Virtio-net e o Google Virtual NIC (gVNIC) como interfaces de rede virtual. Usar o gVNIC em vez da Virtio-net pode melhorar a escalonabilidade dos aplicativos de MPI, fornecendo melhor desempenho de comunicação e maior capacidade. Além disso, o gVNIC é um pré-requisito para a rede avançada, que fornece maior largura de banda e uma maior capacidade.

Quando você cria uma nova VM, o Virtio-net é usado como interface de rede virtual por padrão. Para usar o gVNIC, siga as etapas para criar uma VM de HPC e inclua a sinalização --network-interface=nic-type=GVNIC. A imagem de VM de HPC inclui o driver do gVNIC como Dynamic Kernel Module Support (DKMS).Para mais informações, consulte Como usar a NIC virtual do Google.

Desativar a mitigação de Meltdown e Spectre

A imagem de VM de HPC é compatível com a mitigação e redução de ruído por padrão. Em alguns casos, essas mitigações podem prejudicar a desempenho da carga de trabalho. É possível desativar essas mitigações, mas você estará assumindo os riscos de segurança associados. Para desativá-las faça o seguinte:

  1. Execute o seguinte comando na VM de HPC:

    sudo google_mpi_tuning --nomitigation
    
  2. Reinicialize a VM.

Melhorar o desempenho da rede

Para melhorar o desempenho da rede da VM, defina uma ou mais das seguintes configurações:

  • Configure uma largura de banda maior. Para configurar o desempenho de rede por VM de Tier_1, use o comando gcloud compute instances create para criar a VM e especificar a sinalização --network-performance-configs. Para mais informações, consulte Como criar uma VM com configuração de alta largura de banda.

  • Usar frames Jumbo. Para ajudar a minimizar a sobrecarga de processamento de pacotes de rede, recomendamos o uso de um tamanho de pacote maior. É preciso validar tamanhos de pacote maiores para as especificidades do aplicativo. Para ver informações sobre o uso de frames enormes e tamanhos de pacote, consulte Guia de unidade de transmissão máxima.

  • Aumente os limites de memória do TCP. Uma largura de banda maior requer uma memória TCP maior. Siga as etapas para aumentar as configurações de tcp_*mem.

  • Usar o perfil de latência de rede. Avalie a latência do seu aplicativo e ative a pesquisa ocupada que reduz a latência no caminho de recebimento da rede. Ajustar as configurações de net.core.busy_poll e net.core.busy_read em /etc/sysctl.conf ou use tuned-adm.

Use Intel MPI 2021

O Google recomenda usar a biblioteca Intel MPI 2021 para executar jobs de MPI no Google Cloud.

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

A imagem da VM de HPC inclui um utilitário, Google-hpc-compute, para instalar convenientemente as bibliotecas MPI recomendadas e usar provedores de libfabric sob medida do Google Cloud sobre o transporte TCP.

Usar o utilitário google-hpc-compute para compatibilidade com IntelMPI 2021

O script google_install_intelmpi é a ferramenta relacionada à MPI no utilitário Google-hpc-compute. Ele ajuda a instalar e configurar o IntelMPI 2021.11.

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

Instalar a Intel MPI 2021

Para instalar a biblioteca IntelMPI ao criar uma nova VM de HPC, siga as etapas para criar uma VM de HPC e inclua o seguinte ao criar a instância de VM:

--metadata=google_install_intelmpi="--impi_2021"

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

sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI

O local padrão de install_dir está definido como /opt/intel.

Intel MPI 2018 na imagem HPC CentOS 7

O suporte para Intel MPI 2018 está disponível na imagem HPC CentOS 7 no Google Cloud. Consulte o guia do usuário do utilitário google_install_mpi para mais informações.

Para outros casos de uso relacionados ao Intel MPI 2018, como a execução de aplicativos MPI criados com o Intel Parallel Studio XE, use o ambiente de execução completo do Intel Parallel Studio XE (PSXE) da substituindo intel_mpi por intel_psxe_runtime nos comandos acima. O ambiente de execução do PSXE inclui várias bibliotecas importantes para executar aplicativos de MPI, como a Intel Math Kernel Library (MKL).

Criar uma imagem personalizada usando a imagem de VM de HPC

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

  2. Personalize a VM com ajustes de MPI.

  3. Crie uma imagem personalizada usando o disco de inicialização da imagem de VM de HPC como o disco de origem. Para isso, use o Console do Google Cloud ou a CLI do Google Cloud.

Console

  1. No console do Google Cloud, acesse a página Imagens.

    Acessar "Imagens"

  2. Clique em Criar imagem.

  3. Especifique um Nome para a imagem.

  4. Em Disco de origem, selecione o nome do disco de inicialização na VM de HPC.

  5. Escolha outras propriedades restantes para a imagem.

  6. Clique em Criar.

gcloud

Crie a imagem personalizada usando o comando images create.

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

Substitua:

  • IMAGE_NAME: nome da imagem personalizada.
  • VM_NAME: nome da VM de HPC.
  • INSTANCE_ZONE: zona em que a VM de HPC está localizada.
  • IMAGE_FAMILY: opcional. A família de imagens à qual essa imagem pertence.
  • LOCATION: opcional. Região em que a imagem personalizada será armazenada. O local padrão é a multirregião mais próxima da localização do disco de origem.

Preços

A imagem da VM de HPC está disponível sem custo adicional. Como a imagem de VM de HPC é executada no Compute Engine, você poderá receber cobranças pelos recursos do Compute Engine, como vCPUs C2 e memória. Para saber mais, consulte Preços do Compute Engine.

Limitações

Os benefícios do ajuste variam de acordo com o aplicativo. Em alguns casos, um ajuste específico pode ter um efeito negativo no desempenho. Compare os aplicativos para encontrar a configuração mais eficiente ou econômica.

A seguir