Compartilhar via


Configurar um cluster RDMA do Windows com hpc pack para executar aplicativos MPI

Importante

As VMs clássicas serão descontinuadas em 1º de março de 2023.

Se você usar recursos de IaaS do ASM, conclua sua migração até 1º de março de 2023. Recomendamos que faça a migração o quanto antes para aproveitar as inúmeras melhorias feitas no Azure Resource Manager.

Para obter mais informações, consulte Migrar seus recursos de IaaS para o Azure Resource Manager até 1º de março de 2023.

Configure um cluster RDMA do Windows no Azure com o Microsoft HPC Pack e tamanhos de VM HPC compatíveis com RDMA para executar aplicativos MPI (Interface de Passagem de Mensagem) paralelos. Quando você configura nós baseados em RDMA e baseados em Windows Server em um cluster do HPC Pack, os aplicativos de MPI se comunicam com eficiência por uma rede de baixa latência e alta taxa de transferência no Azure baseada na tecnologia rdma (acesso remoto direto à memória).

Opções de implantação de cluster do HPC Pack

O Microsoft HPC Pack é uma ferramenta fornecida sem custo adicional para criar clusters HPC locais ou no Azure para executar aplicativos HPC do Windows ou Linux. O HPC Pack inclui um ambiente de runtime para a implementação da Microsoft da Interface de Passagem de Mensagens para Windows (MS-MPI). Quando usado com instâncias compatíveis com RDMA que executam um sistema operacional Windows Server com suporte, o HPC Pack fornece uma opção eficiente para executar aplicativos MPI do Windows que acessam a rede RDMA do Azure.

Este artigo apresenta dois cenários e links para diretrizes detalhadas para configurar um cluster RDMA do Windows com o Microsoft HPC Pack 2012 R2.

  • Cenário 1. Implantar instâncias de função de trabalho com uso intensivo de computação (PaaS)
  • Cenário 2. Implantar nós de computação em VMs com uso intensivo de computação (IaaS)

Cenário 1: Implantar instâncias de função de trabalho com uso intensivo de computação (PaaS)

A partir de um cluster HPC Pack existente, adicione recursos de computação extras em instâncias de função de trabalhador do Azure (nós do Azure) executadas como serviço em nuvem (PaaS). Esse recurso, também chamado de "intermitência no Azure" do HPC Pack, dá suporte a um intervalo de tamanhos para as instâncias de função de trabalho. Ao adicionar os nós do Azure, especifique um dos tamanhos compatíveis com RDMA.

A seguir estão considerações e etapas para transferir para instâncias Azure compatíveis com RDMA de um cluster existente (normalmente no local). Use procedimentos semelhantes para adicionar instâncias de função de trabalho a um nó principal do HPC Pack implantado em uma VM do Azure.

Observação

Para obter um tutorial para acessar o Azure com o HPC Pack, consulte Configurar um cluster híbrido com o HPC Pack. Observe as considerações nas etapas a seguir que se aplicam especificamente aos nós do Azure compatíveis com RDMA.

Escalar para o Azure

Etapas

  1. Implantar e configurar um nó principal do HPC Pack 2012 R2

    Baixe o pacote de instalação do HPC Pack no Centro de Download da Microsoft. Para obter os requisitos e instruções para se preparar para uma implantação de expansão no Azure, consulte Burst to Azure Worker Instances with Microsoft HPC Pack.

  2. Configurar um certificado de gerenciamento na assinatura do Azure

    Configure um certificado para proteger a conexão entre o nó principal e o Azure. Para obter opções e procedimentos, consulte Cenários para configurar o Certificado de Gerenciamento do Azure para HPC Pack. Para implantações de teste, o HPC Pack instala um Certificado de Gerenciamento do Microsoft HPC Azure padrão que você pode carregar rapidamente em sua assinatura do Azure.

  3. Criar um novo serviço de nuvem e uma conta de armazenamento

    Use o portal do Azure para criar um serviço de nuvem (clássico) e uma conta de armazenamento (clássica) para a implantação. Crie esses recursos em uma região em que o tamanho da série H, A8 ou A9 que você deseja usar esteja disponível. Consulte os produtos do Azure por região.

  4. Criar um modelo de nó do Azure

    Use o Assistente para Criar Modelo de Nó no Gerenciador de Cluster do HPC. Para as etapas, consulte a seção Criar um modelo de nó do Azure em "Etapas para implantar nós do Azure com o Microsoft HPC Pack".

    Para testes iniciais, sugerimos configurar uma política de disponibilidade manual no modelo.

  5. Adicionar nós ao cluster

    Use o Assistente para Adicionar Nó no Gerenciador de Cluster do HPC. Para obter mais informações, consulte Adicionar nós do Azure ao cluster do Windows HPC.

    Ao especificar o tamanho dos nós, selecione um dos tamanhos de instância compatíveis com RDMA.

    Observação

    Em cada surto na implantação do Azure com instâncias que demandam uso intensivo de computação, o HPC Pack implanta automaticamente um mínimo de duas instâncias compatíveis com RDMA (como A8) como nós proxy, além das instâncias de rol de trabalho do Azure que você especificar. Os nós proxy utilizam núcleos que são alocados à assinatura, gerando encargos juntamente com as instâncias de função de trabalho do Azure.

  6. Iniciar (provisionar) os nós e colocá-los online para executar tarefas

    Selecione os nós e use a ação Iniciar no Gerenciador de Cluster de HPC. Quando o provisionamento for concluído, selecione os nós e use a ação Bring Online no Gerenciador de Cluster do HPC. Os nós estão prontos para executar trabalhos.

  7. Enviar trabalhos para o cluster

    Use as ferramentas de envio de trabalho do HPC Pack para executar trabalhos de cluster. Consulte o Microsoft HPC Pack: Gerenciamento de Trabalhos.

  8. Parar (desprovisionar) os nós

    Quando terminar de executar trabalhos, deixe os nós offline e use a ação Parar no Gerenciador de Cluster do HPC.

Cenário 2: Implantar nós de computação em VMs com uso intensivo de computação (IaaS)

Nesse cenário, você implanta o nó principal do HPC Pack e os nós de computação de cluster em VMs em uma rede virtual do Azure. O HPC Pack fornece várias opções de implantação em VMs do Azure, incluindo scripts de implantação automatizados e modelos de início rápido do Azure. Por exemplo, as considerações e etapas a seguir orientam você a usar o script de implantação iaaS do HPC Pack para automatizar a implantação de um cluster HPC Pack 2012 R2 no Azure.

Cluster em VMs do Azure

Etapas

  1. Criar um nó principal de cluster e VMs de nó de computação executando o script de implantação iaaS do HPC Pack em um computador cliente

    Baixe o pacote de Script de Implantação iaaS do HPC Pack no Centro de Download da Microsoft.

    Para preparar o computador cliente, crie o arquivo de configuração de script e execute o script, consulte Criar um cluster HPC com o script de implantação iaaS do HPC Pack.

    Para obter considerações sobre como implantar nós de computação compatíveis com RDMA, consulte tamanhos de VM de computação de alto desempenho e observe o seguinte:

    • Rede virtual: especifique uma nova rede virtual em uma região na qual o tamanho da série H, A8 ou A9 que você deseja usar está disponível. Consulte os produtos do Azure por região.

    • Sistema operacional Windows Server: para dar suporte à conectividade RDMA, especifique um sistema operacional Compatível com o Windows Server, como o Windows Server 2012 R2, para as VMs do nó de computação.

    • Serviços de nuvem: como o script usa o modelo de implantação clássico, as VMs de cluster são implantadas usando os serviços de nuvem do Azure (ServiceName configurações no arquivo de configuração). Recomendamos implantar seu nó principal em um serviço de nuvem e seus nós de computação em um serviço de nuvem diferente.

    • Tamanho do nó principal: para este cenário, considere um tamanho de pelo menos A4 (Extra Grande) para o nó principal.

    • Extensão HpcVmDrivers: o script de implantação instala o Agente de VM do Azure e a extensão HpcVmDrivers automaticamente quando você implanta nós de computação tamanho A8 ou A9 com um sistema operacional Windows Server. O HpcVmDrivers instala drivers nas VMs do nó de computação para que possam se conectar à rede RDMA. Em VMs da série H compatíveis com RDMA, você deve instalar manualmente a extensão HpcVmDrivers. Consulte tamanhos de VM de computação de alto desempenho.

    • Configuração de rede de cluster: o script de implantação configura automaticamente o cluster HPC Pack na Topologia 5 (todos os nós na rede Enterprise). Essa topologia é necessária para todas as implantações de cluster do HPC Pack em VMs. Não altere a topologia de rede do cluster mais tarde.

  2. Colocar os nós de computação online para executar trabalhos

    Selecione os nós e use a ação Bring Online no Gerenciador de Cluster do HPC. Os nós estão prontos para executar tarefas.

  3. Enviar trabalhos para o cluster

    Conecte-se ao nó principal para enviar trabalhos ou configure um computador local para fazer isso. Para obter informações, consulte Enviar Trabalhos para um cluster HPC no Azure.

  4. Deixe os nós offline e pare (desaloque-os)

    Quando terminar de executar trabalhos, coloque os nós offline no Gerenciador de Cluster HPC. Em seguida, use as ferramentas de gerenciamento do Azure para desligá-las.

Executar aplicativos MPI no cluster

Exemplo: executar mpipingpong em um cluster do HPC Pack

Para verificar a implantação do HPC Pack nas instâncias compatíveis com RDMA, execute o comando mpipingpong no cluster. mpipingpong envia pacotes de dados entre nós emparelhados repetidamente para calcular medições e estatísticas de latência e taxa de transferência para a rede de aplicativos habilitada para RDMA. Este exemplo mostra um padrão típico para executar um trabalho de MPI (nesse caso, mpipingpong) usando o comando mpiexec do cluster.

Este exemplo pressupõe que você adicionou nós do Azure em uma configuração de "expansão temporária para o Azure" ([Cenário 1](#scenario-1.-deploy-compute-intensive-worker-role-instances-(PaaS) neste artigo). Se você implantou o HPC Pack em um cluster de VMs do Azure, precisará modificar a sintaxe de comando para especificar um grupo de nós diferente e definir variáveis de ambiente adicionais para direcionar o tráfego de rede para a rede RDMA.

Para executar mpipingpong no cluster:

  1. No nó principal ou em um computador cliente configurado corretamente, abra um Prompt de Comando.

  2. Para estimar a latência entre pares de nós em uma implantação em modo burst do Azure de quatro nós, digite o seguinte comando para enviar um trabalho para executar mpipingpong com um pequeno tamanho de pacote e muitas iterações:

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 1:100000 -op -s nul
    

    O comando retorna a ID do trabalho enviado.

    Se você implantou o cluster HPC Pack implantado em VMs do Azure, especifique um grupo de nós que contém VMs de nó de computação implantadas em um único serviço de nuvem e modifique o comando mpiexec da seguinte maneira:

    job submit /nodegroup:vmcomputenodes /numnodes:4 mpiexec -c 1 -affinity -env MSMPI_DISABLE_SOCK 1 -env MSMPI_PRECONNECT all -env MPICH_NETMASK 172.16.0.0/255.255.0.0 mpipingpong -p 1:100000 -op -s nul
    
  3. Quando o trabalho for concluído, para exibir a saída (nesse caso, a saída da tarefa 1 do trabalho), digite o seguinte

    task view <JobID>.1
    

    em < que JobID> é a identificação do trabalho que foi enviado.

    A saída inclui resultados de latência semelhantes aos seguintes.

    Latência de ping pong

  4. Para estimar a taxa de transferência entre pares de nós de intermitência do Azure, digite o seguinte comando para enviar um trabalho para executar mpipingpong com um tamanho de pacote grande e algumas iterações:

    job submit /nodegroup:azurenodes /numnodes:4 mpiexec -c 1 -affinity mpipingpong -p 4000000:1000 -op -s nul
    

    O comando retorna a ID do trabalho enviado.

    Em um cluster do HPC Pack implantado em VMs do Azure, modifique o comando conforme observado na etapa 2.

  5. Quando o trabalho for concluído, para exibir a saída (nesse caso, a saída da tarefa 1 do trabalho), digite o seguinte:

    task view <JobID>.1
    

    A saída inclui resultados de desempenho semelhantes aos seguintes.

    Taxa de transferência de ping pong

Considerações sobre o aplicativo MPI

A seguir estão as considerações para executar aplicativos MPI com hpc pack no Azure. Alguns se aplicam apenas a implantações de nós do Azure (instâncias de funções de trabalho adicionadas em uma configuração de escala rápida para o Azure).

  • Instâncias de função de trabalho em um serviço de nuvem são reprovisionadas periodicamente sem aviso prévio pelo Azure (por exemplo, para manutenção do sistema ou caso uma instância falhe). Se uma instância for reprovisionada enquanto estiver executando um trabalho de MPI, a instância perderá seus dados e retornará ao estado quando foi implantada pela primeira vez, o que pode fazer com que o trabalho de MPI falhe. Quanto mais nós você usar para um único trabalho de MPI e quanto mais tempo o trabalho for executado, maior a probabilidade de uma das instâncias ser reprovisionada enquanto um trabalho estiver em execução. Considere isso também se você designar um único nó na implantação como um servidor de arquivos.

  • Para executar trabalhos de MPI no Azure, você não precisa usar as instâncias compatíveis com RDMA. Você pode usar qualquer tamanho de instância compatível com o HPC Pack. No entanto, as instâncias compatíveis com RDMA são recomendadas para executar trabalhos de MPI em escala relativamente grande que são sensíveis à latência e à largura de banda da rede que conecta os nós. Se você usar outros tamanhos para executar trabalhos de MPI sensíveis à latência e à largura de banda, recomendamos executar pequenos trabalhos, nos quais uma única tarefa é executada em apenas alguns nós.

  • Os aplicativos implantados em instâncias do Azure estão sujeitos aos termos de licenciamento associados ao aplicativo. Verifique com o fornecedor de qualquer aplicativo comercial quanto ao licenciamento ou outras restrições de execução na nuvem. Nem todos os fornecedores oferecem licenciamento pré-pago.

  • As instâncias do Azure precisam de uma configuração adicional para acessar nós locais, compartilhamentos e servidores de licença. Por exemplo, para habilitar os nós do Azure a acessar um servidor de licença local, você pode configurar uma rede virtual do Azure site a site.

  • Para executar aplicativos MPI em instâncias do Azure, registre cada aplicativo MPI com o Firewall do Windows nas instâncias executando o comando hpcfwutil . Isso permite que as comunicações de MPI ocorram em uma porta que é atribuída dinamicamente pelo firewall.

    Observação

    Para implantações temporárias no Azure, você também pode configurar um comando de exceção de firewall para ser executado automaticamente em todos os novos nós do Azure que forem adicionados ao seu cluster. Depois de executar o comando hpcfwutil e verificar se o aplicativo funciona, adicione o comando a um script de inicialização para seus nós do Azure. Para obter mais informações, consulte Usar um script de inicialização para nós do Azure.

  • O HPC Pack usa a variável de ambiente de cluster CCP_MPI_NETMASK para especificar um intervalo de endereços aceitáveis para comunicação de MPI. A partir do HPC Pack 2012 R2, a variável de ambiente de cluster CCP_MPI_NETMASK afeta apenas a comunicação de MPI entre nós de computação de cluster ingressados no domínio (local ou em VMs do Azure). A variável é ignorada por nós adicionados de forma repentina na configuração do Azure.

  • Trabalhos MPI não podem ser executados em instâncias do Azure que estejam implantadas em diferentes serviços de nuvem (por exemplo, em implantações emergenciais do Azure com diferentes modelos de nós, ou nós de computação de VM do Azure distribuídos em múltiplos serviços de nuvem). Se você tiver várias implantações de nó do Azure iniciadas com modelos de nó diferentes, o trabalho de MPI deverá ser executado em apenas um conjunto de nós do Azure.

  • Quando você adiciona nós do Azure ao cluster e os coloca online, o Serviço de Agendador de Trabalho do HPC tenta imediatamente iniciar trabalhos nos nós. Se apenas uma parte da carga de trabalho puder ser executada no Azure, certifique-se de atualizar ou criar modelos de trabalho para definir quais tipos de trabalho podem ser executados no Azure. Por exemplo, para garantir que os trabalhos enviados com um modelo de trabalho sejam executados apenas em nós do Azure, adicione a propriedade Grupos de Nós ao modelo de trabalho e selecione AzureNodes como o valor necessário. Para criar grupos personalizados para seus nós do Azure, use o cmdlet Add-HpcGroup HPC PowerShell.

Próximas etapas