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 Trusted Cloud by S3NS e mais tempo para manutenção. Para configurar rapidamente um ambiente otimizado para 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 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 Trusted Cloud by S3NS.
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 projetados para aplicativos de HPC com alta integração. Para usar o RDMA com H4D, use 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
- Trusted Cloud console. No console, a imagem está disponível no Cloud Marketplace.
- Gerenciador de carga de trabalho Slurm da SchedMD, que usa a imagem da 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 ou ficar por dentro das atualizações mais recentes do Trusted Cloud para cargas de trabalho de HPC de acoplamento rígido.
- Otimizações de rede para cargas de trabalho de acoplamento rígido. Otimizações que reduzem a latência para pequenas mensagens estão incluídas, o que beneficia aplicativos que dependem muito de comunicações ponto a ponto e coletivas. Se você estiver usando a série de máquinas H4D, a imagem da 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 de VM de HPC
A imagem de VM de HPC oferece vários recursos projetados 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 das cargas de trabalho de HPC. As atualizações automáticas podem ser desativadas ao usar as imagens de VM do 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 metadados da VM.
Biblioteca Intel MPI
O Google recomenda usar a biblioteca Intel MPI 2021 para executar jobs de MPI no Trusted Cloud by S3NS. Para saber mais, consulte as seguintes seções:
RPMs pré-instaladas
A imagem da VM de HPC vem com 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 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 descrevem 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 atual. Portanto, siga as etapas adequadas 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 Trusted Cloud , na página do seletor de projetos, selecione ou crie um projeto doTrusted Cloud .
Crie uma instância de VM de HPC
Recomendamos escolher um tipo de máquina das seguintes séries:
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
No console Trusted 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 Primeiros passos.
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.Escolha uma zona e um tipo de máquina. Para este guia de início rápido, deixe todas as configurações como estão ou altere-as.
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 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
.
Se você estiver criando várias instâncias de VM de HPC interconectadas, crie VMs de HPC com políticas de posicionamento compactas 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 a instância será criada.IMAGE_FAMILY
: a família de imagens da imagem a ser usada ao 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 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 de colocação de compactação 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 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 encaixam em todas as instâncias.
Para criar instâncias de VM de HPC que especifiquem uma política de posicionamento compacto, siga estas etapas:
Escolha uma destas opções:
Aplique a política de posicionamento compacto a uma instância de VM de HPC atual.
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-policy
e--resource-policies
com o comandogcloud compute instances create
.
Criar 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 crie pelo menos uma rede VPC regular 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 é separada da rede VPC regular que transporta tráfego não RDMA para outros serviços doTrusted Cloud by S3NS ou para a Internet.
Para criar uma instância de VM de HPC que use o Cloud RDMA, as tarefas a serem concluídas são as seguintes:
Identifique ou crie pelo menos duas redes VPC:
- Uma rede VPC comum 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. Essa imagem 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 usa o driver gVNIC e outra que usa o driver IRDMA.
Para uma explicação mais completa, consulte Criar uma instância que usa o Cloud RDMA.
Se você planeja executar aplicativos MPI nas instâncias de VM de HPC que usam o Cloud RDMA, siga as etapas de configuração do MPI em Configurar e escalonar aplicativos 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 é iniciada automaticamente. Para acessar a instância, faça o seguinte:
Console
No console do Trusted 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 Como se conectar a VMs do Linux.
gcloud
Para acessar a instância usando SSH, use 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 Como se conectar a instâncias.
Limpar
Para evitar cobranças na sua conta do Trusted Cloud by S3NS pelos recursos usados nestes guias de início rápido, exclua as instâncias de VM de HPC que você criou.
Console
No console Trusted 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 de acordo com 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 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.
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 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, a gVNIC é um pré-requisito para o desempenho de rede por VM de Tier_1, que oferece maior largura de banda e permite maior capacidade.
Se você criar uma instância C2 ou C2D, o Virtio-net será usado por padrão para a interface de rede virtual. Para usar a gVNIC, siga as etapas para criar uma VM de HPC e faça uma destas ações:
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:
- Acesse a seção Interfaces de rede.
- Em Place 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 da gVNIC como um 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:
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 instância, defina uma ou mais das seguintes configurações:
Configure uma largura de banda maior. Para configurar a rede Tier_1 para VMs C2 ou C2D, use o comando
gcloud compute instances create
para criar a VM e especificar a flag--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
enet.core.busy_read
em/etc/sysctl.conf
ou usetuned-adm
.
Use Intel MPI 2021
O Google recomenda usar a biblioteca Intel MPI 2021 para executar jobs de MPI no Trusted 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 Trusted Cloud by S3NS .
A imagem da VM de HPC inclui um utilitário, google-hpc-compute
, que
instala as bibliotecas MPI recomendadas e usa provedores de libfabric
sob medida para Trusted Cloud by S3NS 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 ter um efeito negativo no 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 da VM de HPC.
Instalar a Intel MPI 2021
Para instalar a biblioteca Intel MPI 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
.
Biblioteca Intel MPI 2018 e ajustes coletivos da MPI
A imagem da 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 colocação de compactação.
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 MPI instalada, execute o script de shell mpivars
para configurar o ambiente adequado. Em seguida, instale as otimizações diretamente com o seguinte comando. 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 posteriormente para executar aplicativos. Para usar a configuração de ajuste
em um aplicativo, adicione a opção -tune
à linha de comando mpirun
. Por 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 a ser executado.
Criar uma imagem personalizada usando a imagem de 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 instâncias de VM de HPC:
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 consoleTrusted Cloud ou a Google Cloud CLI.
Console
No Trusted Cloud console, 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 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, discos 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 MPI em VMs H4D com o Cloud RDMA no Trusted Cloud by S3NS.
- Saiba mais sobre a família de máquinas otimizada para computação.
- Aprenda a criar clusters de HPC.
- Se você tiver comentários ou precisar de suporte, envie um e-mail para hpc-image-feedback@google.com.