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:
- CLI do Google Cloud
- Google Cloud consola. Na consola, a imagem está disponível através do Cloud Marketplace.
- Gestor de carga de trabalho Slurm da SchedMD, que usa a imagem de VM de HPC por predefinição.
Vantagens
A imagem de VM de HPC oferece as seguintes vantagens:
- 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.
- 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.
- 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.
- 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.
- 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
- Para usar a CLI do Google Cloud para este início rápido, primeiro tem de instalar e inicializar a CLI do Google Cloud:
- 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
Na Google Cloud consola, aceda à página do HPC VM Cloud Marketplace. Aceda à página do Cloud Marketplace da VM de HPC
Clique em Começar.
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.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.
Deixe o Tipo de disco de arranque, o Tamanho do disco de arranque e a Interface de rede nas respetivas predefinições.
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. Usehpc-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:
Efetue um dos seguintes passos:
Aplique a política de posicionamento compacto a uma instância de VM de HPC existente.
Crie uma instância que especifique a política de posicionamento compacta.
Para criar uma instância que especifique uma política de posicionamento compacta, use as flags
--maintenance-policy
e--resource-policies
com o comandogcloud compute instances create
.
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:
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 da VM de HPC. Esta imagem inclui os controladores necessários para o RDMA na nuvem.
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.
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
Na Google Cloud consola, aceda à página Instâncias de VM.
Clique no nome da instância de VM.
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
Na Google Cloud consola, aceda à página Implementações.
Selecione a caixa de verificação junto à implementação da VM de HPC.
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:
- Aceda à secção Interfaces de rede
- 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:
Execute o seguinte comando na sua instância de HPC:
sudo google_mpi_tuning --nomitigation
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:
Configure uma largura de banda mais elevada. Para configurar a rede de Nível 1 para VMs C2 ou C2D, use o comando
gcloud compute instances create
para criar a VM e especifique a flag--network-performance-configs
. Para mais informações, consulte o artigo Criar uma VM com uma configuração de largura de banda elevada.Use frames jumbo. Para ajudar a minimizar a sobrecarga de processamento dos pacotes de rede, recomendamos que use um tamanho de pacote maior. Tem de validar tamanhos de pacotes maiores para as especificidades da sua aplicação. Para ver informações sobre a utilização de frames jumbo e tamanhos de pacotes, consulte o guia da unidade de transmissão máxima.
Aumente os limites de memória TCP. A largura de banda mais elevada requer mais memória TCP. Siga os passos para aumentar
tcp_*mem
as definições.Use o perfil de latência da rede. Avalie a latência da sua aplicação e ative a sondagem ocupada que reduz a latência no caminho de receção da rede. Ajuste as definições
net.core.busy_poll
enet.core.busy_read
em/etc/sysctl.conf
ou usetuned-adm
.
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 write
acesso 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:
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
Na Google Cloud consola, aceda à página Imagens.
Clique em Criar imagem.
Especifique um nome para a imagem.
Em Disco de origem, selecione o nome do disco de arranque na sua VM de HPC.
Escolha as restantes propriedades da imagem.
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?
- Reveja as práticas recomendadas para executar cargas de trabalho de HPC.
- Saiba como configurar e dimensionar aplicações MPI em VMs H4D com o Cloud RDMA no Google Cloud.
- Saiba mais acerca da família de máquinas otimizadas para computação.
- Saiba como criar clusters de HPC.
- Se tiver feedback ou precisar de apoio técnico, envie um email para hpc-image-feedback@google.com.