As cargas de trabalho de computação de alto desempenho (HPC, na sigla em inglês) com 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). No entanto, para criar uma imagem de VM ajustada para o desempenho ideal da MPI, é necessário ter experiência com sistemas, conhecimento do Google Cloud e mais tempo para manutenção. Se quiser configurar rapidamente um ambiente otimizado para suas cargas de trabalho de HPC, use a imagem de VM de HPC.
Ela é uma imagem de VM baseada 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 da MPI no Google Cloud.
Para ter os melhores resultados, implante a imagem de VM de HPC em um tipo de máquina de uma série otimizada para HPC, como H4D ou H3, ou uma série otimizada para computação, como C2 ou C2D. Esses tipos de máquina são ideais para aplicativos de HPC com alta integração. Para usar o RDMA com H4D, utilize a versão 20241125 ou mais recente da imagem de VM de HPC.
É possível criar uma instância de VM pronta para HPC usando as seguintes opções:
- CLI do Google Cloud.
- Console doGoogle Cloud . No console, a imagem está disponível no Cloud Marketplace.
- Gerenciador de carga de trabalho Slurm da SchedMD, que usa a imagem de VM de HPC por padrão.
Vantagens
A imagem de VM de HPC oferece os seguintes benefícios:
- Instâncias de VM prontas para uso de cargas de trabalho de HPC. Não é necessário ajustar manualmente o desempenho, gerenciar reinicializações de instâncias de VM nem acompanhar as atualizações mais recentes do Google Cloud para cargas de trabalho de HPC com acoplamento rígido.
- Otimizações de rede para cargas de trabalho com 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. Se você estiver usando a série de máquinas H4D, a imagem de VM de HPC vai conter os drivers do Cloud RDMA necessários.
- 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.
- Desempenho consistente e reproduzível. A padronização de imagens de VM oferece desempenho consistente e reproduzível no nível do aplicativo.
- 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 da imagem para VM de HPC
Ela oferece vários recursos para otimizar o desempenho de cargas de trabalho de computação de alto desempenho (HPC):
- Atualizações automáticas desativadas
- Ajustes coletivos da Intel MPI
- RPMs pré-instaladas
Atualizações automáticas desativadas
As atualizações automáticas podem ter um impacto negativo no desempenho de cargas de trabalho de HPC. As atualizações automáticas podem ser desativadas ao usar as imagens de VM de HPC definindo a entrada de metadados google_disable_automatic_updates como TRUE ao criar uma instância de VM. A forma como essa entrada de metadados é definida durante a criação da instância depende da ferramenta usada para criar a instância.
Por exemplo, ao usar o comando gcloud compute instances create para criar uma instância de VM, forneça o argumento --metadata. Para mais informações, consulte Sobre os metadados da VM.
Biblioteca Intel MPI
O Google recomenda usar a biblioteca Intel MPI 2021 para executar jobs da MPI no Google Cloud. Para mais informações, consulte estas seções:
RPMs pré-instaladas
A imagem de VM de HPC vem com os seguintes pacotes RPM pré-instalados:
daos-clientgcc-gfortrangcc-toolset-12Lmoddkmshtophwlochwloc-develinfiniband-diagskernel-develkmod-idpf-irdmalibfabriclibrdmacm-utilslibibverbs-utilslibXtltracenfs-utilsnumactlnumactl-develpapipciutilspdshperfperftestrdma-coreredhat-lsb-coreredhat-lsb-cxxrshscreenstracewgetzsh- Grupo de pacotes "Ferramentas para desenvolvedores"
Guias de início rápido
Estes tutoriais descrevem as etapas para configurar uma instância de VM otimizada para HPC. Os procedimentos explicam como:
- Criar uma instância de VM de HPC (sem configurar o Cloud RDMA)
- Especificar uma política de posicionamento compacto ao criar instâncias de VM de HPC
- Criar uma instância de VM de HPC que use o Cloud RDMA (pré-lançamento)
Não é possível adicionar o Cloud RDMA a uma instância de VM de HPC. Portanto, siga as etapas relevantes ao criar a instância.
Antes de começar
- Para usar a CLI do Google Cloud neste guia de início rápido, primeiro instale e inicialize a CLI do Google Cloud:
- No console do Google Cloud , na página do seletor de projetos, escolha ou crie um projeto doGoogle Cloud .
Criar uma instância de VM de HPC
Recomendamos escolher um tipo de máquina das seguintes séries:
- H4D (pré-lançamento)
- H3
- C2D
- C2
Essas VMs têm mapeamento fixo de núcleo virtual para físico e expõem a arquitetura de célula NUMA ao SO convidado, sendo ambos essenciais para o desempenho de aplicativos de HPC com acoplamento rígido.
Console
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
Clique em Começar.
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 anexa
-vma esse nome ao nomear a instância.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.
Mantenha as configurações padrão de Tipo de disco de inicialização, Tamanho do disco de inicialização e Interface de rede.
Clique em Implantar.
Após terminar de a 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.
Se você estiver criando várias instâncias de VM de HPC interconectadas, crie VMs de HPC com políticas de posicionamento compacto para alcançar baixa latência de rede.
Para criar uma instância de VM de HPC sem uma política de posicionamento, use um comando semelhante a este:
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:
INSTANCE_NAME: um nome para a instância de VM de HPC.ZONE: a zona em que será criada a instânciaIMAGE_FAMILY: a família de imagens da imagem que será usada ao criar as instâncias de VM. Usehpc-rocky-linux-8para a imagem mais recente baseada no Rocky Linux 8.MACHINE_TYPE: o tipo de máquina que será usado ao criar a instância de VM.
Após um tempo, a criação da instância de VM é concluída. Para verificar a configuração da instância e ver o status dela, execute o seguinte comando:
gcloud compute instances describe INSTANCE_NAME
Criar instâncias de VM de HPC com políticas de posicionamento compacto
É possível reduzir a latência entre instâncias de VM criando uma política de posicionamento compacto. Uma política assim garante que as instâncias na mesma zona de disponibilidade estejam localizadas próximas umas das outras.
Se você precisar de mais instâncias de VM do que cabe em uma única política de posicionamento compacto, divida as instâncias em várias políticas de posicionamento. Use o número mínimo de políticas desse tipo que se encaixam em todas as instâncias.
Para criar instâncias de VM de HPC que especifiquem uma política de posicionamento compacto:
Siga um destes procedimentos:
Aplique a política de posicionamento compacto a uma instância de VM de HPC.
Crie uma instância que especifique a política de posicionamento compacto.
Para criar uma instância que especifique uma política de posicionamento compacto, use as flags
--maintenance-policye--resource-policiescom o comandogcloud compute instances create.
Criar uma instância de VM de HPC que use o Cloud RDMA
Primeiro, crie pelo menos uma rede VPC normal e uma rede VPC do Falcon. A rede VPC do Falcon usa um perfil de rede RDMA que permite o tráfego RDMA entre instâncias de computação. Essa rede fica separada da rede VPC normal que direciona tráfego não RDMA para outros serviços doGoogle Cloud ou para a internet.
Para criar uma instância de VM de HPC que use o Cloud RDMA, é necessário concluir estas tarefas:
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
Crie uma instância de VM de HPC.
- Para a imagem de origem, use a imagem de VM de HPC. Ela inclui os drivers necessários para o Cloud RDMA.
Durante a criação da instância, configure pelo menos duas interfaces de rede: uma que use o driver gVNIC e outra que utilize o driver IRDMA.
Para uma explicação mais completa, consulte Criar uma instância que usa o Cloud RDMA.
Se você planeja executar aplicativos da MPI nas instâncias de VM de HPC que usam o Cloud RDMA, siga as etapas de configuração da MPI em Configurar e escalonar aplicativos da MPI em VMs H4D com o Cloud RDMA.
Acessar a instância de VM de HPC
Depois de criar a instância de VM de HPC, ela é inicializada automaticamente. Para acessar a instância:
Console
No console do Google Cloud , acesse a página Instâncias de VM.
Clique no nome da instância de VM.
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 Conectar-se a VMs do Linux.
gcloud
Para acessar a instância usando SSH, utilize o comando gcloud compute ssh:
gcloud compute ssh INSTANCE_NAME
O Compute Engine propaga as chaves SSH e cria o usuário. Para mais informações, consulte Conectar-se às instâncias.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nestes guias de início rápido, exclua as instâncias de VM de HPC que você criou.
Console
No console do Google Cloud , acesse a página Implantações.
Marque a caixa de seleção ao lado da implantação da VM de HPC.
Clique em Excluir.
gcloud
Use o comando instances delete:
gcloud compute instances delete INSTANCE_NAME
Configurar sua instância de VM de HPC conforme as práticas recomendadas
Para ter um desempenho melhor e mais previsível para sua instância de VM de HPC, recomendamos que você siga as práticas recomendadas abaixo.
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 VM de HPC, siga as etapas para criar uma VM de HPC e inclua a flag
--threads-per-core=1.Se quiser desabilitar a SMT em uma VM de HPC, conecte-se à VM e execute o seguinte comando na VM:
sudo google_mpi_tuning --nosmt
Para ver mais informações, consulte Configurar o número de linhas de execução por núcleo.
Configurar a gVNIC como o tipo de interface de rede para instâncias C2 e C2D
A imagem de VM de HPC é compatível com a 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 da MPI, fornecendo melhor desempenho de comunicação e maior capacidade de processamento. Além disso, a gVNIC é um pré-requisito para o desempenho de rede por VM de Tier_1, que oferecer maior largura de banda e uma maior capacidade de processamento.
Se você criar uma instância C2 ou C2D, a Virtio-net será usada por padrão para a interface de rede virtual. Para utilizar a gVNIC, crie uma VM de HPC e siga um destes procedimentos:
Console
Para definir a gVNIC como a interface de rede, ao criar a instância, clique em Rede no menu de navegação. No painel "Rede" exibido, faça o seguinte:
- Va até a seção Interfaces de rede.
- Em Placa de rede, selecione
gVNIC.
gcloud
Inclua a flag --network-interface=nic-type=GVNIC no comando gcloud compute instances create.
A imagem de VM de HPC inclui o driver do gVNIC como Dynamic Kernel Module Support (DKMS). Para mais informações, consulte Como usar o NIC virtual do Google.
Desativar as mitigações contra Meltdown e Spectre
A imagem de VM de HPC é compatível com as mitigações contra Meltdown e Spectre 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 desabilitá-las:
Execute o seguinte comando na instância de HPC:
sudo google_mpi_tuning --nomitigation
Reinicie a instância.
Melhorar o desempenho da rede
Para melhorar o desempenho da rede da sua instância, defina uma ou mais das seguintes configurações:
Configure uma largura de banda maior. Se quiser configurar a rede Tier_1 para VMs C2 ou C2D, use o comando
gcloud compute instances createpara criar a VM e especificar a flag--network-performance-configs. Consulte Como criar uma VM com configuração de alta largura de banda para mais detalhes.Use frames Jumbo. Para minimizar o overhead de processamento de pacotes de rede, recomendamos o uso de um pacotes maiores. É preciso validar tamanhos maiores para as especificidades do aplicativo. Se quiser informações sobre o uso de frames jumbo e tamanhos de pacote, consulte o guia Unidade máxima de transmissão.
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.Use 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. Ajuste as configurações de
net.core.busy_pollenet.core.busy_readem/etc/sysctl.confou usetuned-adm(link em inglês).
Usar Intel MPI 2021
O Google recomenda usar a biblioteca Intel MPI 2021 para executar jobs de MPI noGoogle 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 mais 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 de VM de HPC inclui um utilitário, google-hpc-compute, que instala as bibliotecas de MPI recomendadas e usa provedores de libfabric sob medida do Google Cloud sobre o transporte TCP.
Limitações
Os benefícios do ajuste variam de acordo com o aplicativo. Em alguns casos, um ajuste específico pode prejudicar o desempenho. Compare os aplicativos para encontrar a configuração mais eficiente ou econômica.
Usar o utilitário google-hpc-compute para compatibilidade com Intel MPI 2021
O script google_install_intelmpi é a ferramenta relacionada à MPI no utilitário Google-hpc-compute. Ele ajuda a instalar e configurar o Intel MPI.
O utilitário google-hpc-compute está incluído na imagem de VM de HPC.
Instalar a Intel MPI 2021
Para instalar a biblioteca Intel MPI ao criar uma VM de HPC, siga as etapas de criação 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, execute o seguinte comando na VM em questão:
sudo google_install_intelmpi --impi_2021 --install_dir=PATH_INSTALL_MPI
O local padrão de install_dir precisa estar definido como /opt/intel.
Biblioteca Intel MPI 2018 e ajustes coletivos da MPI
A imagem de VM de HPC inclui ajustes coletivos da Intel MPI executados nas instâncias c2-standard-60 e c2d-standard-112 que usam políticas de posicionamento compacto.
Esses ajustes estão disponíveis no diretório /usr/share/google-hpc-compute/mpitune-configs/intelmpi-2018.
Para aplicar essas configurações de ajuste em uma biblioteca de MPI instalada, execute o script de shell mpivars para configurar o ambiente adequado. Em seguida, instale as otimizações diretamente com o comando a seguir (use a opção --sudo se precisar de acesso raiz ao diretório): google_install_mpitune
Use mpitune para especificar manualmente os algoritmos e parâmetros de configuração referentes à comunicação coletiva da MPI e gerar arquivos de configuração.
Por exemplo, para ajustar 22 instâncias de VM e 30 vCPUs por instância, forneça o script de shell mpivars para configurar o ambiente adequado e execute o comando a seguir. É preciso ter acesso write ao diretório ou executar o comando como o usuário raiz.
mpitune -hf hostfile -fl 'shm:tcp' -pr 30:30 -hr 22:22
Esse comando gera um arquivo de configuração no diretório Intel MPI, que pode ser usado depois para executar aplicativos. Para usar a configuração de ajuste em um aplicativo, adicione a opção -tune à linha de comando mpirun. Exemplo:
mpirun -tune -hostfile HOSTFILE -genv I_MPI_FABRICS 'shm:tcp' -np 660 -ppn 30 ./APPLICATION_NAME
Substitua:
- HOSTFILE: o nome de um arquivo no SO convidado que lista os nomes de rede das instâncias de VM.
- APPLICATION_NAME: o nome do arquivo do aplicativo que será executado.
Criar uma imagem personalizada usando a imagem da VM de HPC
Para implementar as práticas recomendadas em grande escala, crie uma imagem de SO personalizada para usar com suas instâncias de VM de HPC. Conclua as tarefas a seguir para criar uma imagem personalizada que será usada ao criar essas instâncias:
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 doGoogle Cloud ou a CLI do Google Cloud.
Console
No console do Google Cloud , acesse a página Imagens.
Clique em Criar imagem.
Especifique um nome para a imagem.
Em Disco de origem, selecione o nome do disco de inicialização na VM de HPC.
Escolha outras propriedades restantes para a imagem.
Clique em Criar.
gcloud
Crie a imagem personalizada usando 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:
IMAGE_NAME: nome da imagem personalizada.INSTANCE_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 de VM de HPC está disponível sem custo adicional. Como essa imagem é 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.
A seguir
- Consulte as práticas recomendadas para executar cargas de trabalho de HPC.
- Saiba como configurar e escalonar aplicativos de MPI em VMs H4D com o Cloud RDMA noGoogle Cloud.
- Saiba mais sobre a família de máquinas otimizada para computação.
- Aprenda a criar clusters de HPC.
- Se você tiver feedback ou precisar de suporte, envie um e-mail para hpc-image-feedback@google.com.