Partilhar via


Diretrizes para executar aplicativos de MPI no Azure

Este tópico fornece diretrizes e procedimentos para habilitar aplicativos MPI a serem executados em nós do Windows Azure. Essas informações se aplicam a nós do Windows Azure que são adicionados a um cluster local do Windows HPC (em um cenário de "intermitência" do Windows Azure) ou a nós que são implantados como parte de um serviço do Windows Azure que usa o Agendador de HPC do Windows Azure (somente Windows Azure).

Para obter diretrizes gerais sobre dados e compartilhamentos de arquivos em nós do Windows Azure, consulte Guidelines for Running HPC Applications on Azure Nodes.

Neste tópico:

Que tipo de trabalhos de MPI são mais adequados para o Windows Azure?

Trabalhos de MPI que não são particularmente sensíveis à latência e à largura de banda são mais propensos a dimensionar bem no ambiente do Windows Azure. Trabalhos de MPI sensíveis à latência e largura de banda podem ter um desempenho bem como trabalhos pequenos, em que uma única tarefa é executada em não mais do que alguns nós. Por exemplo, no caso de uma simulação de engenharia, você pode executar muitos trabalhos pequenos para explorar e definir o espaço paramétrico antes de aumentar o tamanho do modelo. Isso pode ser particularmente útil em situações em que seu acesso a nós de computação locais é limitado e você deseja garantir que você esteja usando o tempo do cluster para os modelos mais apropriados.

Por que fazemos essas recomendações? Os trabalhos de MPI geralmente são executados em clusters com hardware de rede especializado de baixa latência e alta largura de banda. No momento, os nós do Windows Azure não estão conectados a esse tipo de rede. Além disso, os nós do Windows Azure são reprovisionados periodicamente pelo sistema do Windows Azure. Se um nó for reprovisionado enquanto estiver executando um trabalho de MPI, o trabalho de MPI falhará. Quanto mais nós você estiver usando para um único trabalho de MPI e quanto mais o trabalho for executado, maior a probabilidade de que um dos nós seja reprovisionado enquanto o trabalho estiver em execução.

Registrando um trabalho de MPI com o firewall nos nós do Windows Azure

Um administrador deve configurar o Firewall do Windows para permitir a comunicação de MPI entre os nós de computação no Windows Azure. Para isso, você pode registrar cada aplicativo MPI com o firewall (criar uma exceção baseada em aplicativo). Isso permite que as comunicações de MPI ocorram em uma porta que é atribuída dinamicamente pelo firewall. Você pode configurar exceções de firewall em seus nós usando os comandos clusrun e hpcfwutil.

Observação

Para intermitência nos nós do Windows Azure, um administrador pode configurar um comando de exceção de firewall para ser executado automaticamente em todos os novos nós do Windows Azure adicionados ao cluster. Depois de executar o comando hpcfwutil e verificar se o aplicativo funciona, você pode adicionar o comando a um script de inicialização para os nós do Windows Azure. Para obter mais informações, consulte Configurar um script de inicialização para os nós do Windows Azure.

O procedimento a seguir descreve como adicionar uma exceção para myApp.exe a todos os nós. Você deve ser um administrador para o cluster do Windows HPC ou para a implantação do Agendador de HPC do Windows Azure para executar as etapas a seguir.

Para configurar uma exceção de firewall para myApp.exe

  1. Conecte-se ao nó principal de uma das seguintes maneiras (usando credenciais de administrador):

    • Faça logon diretamente no nó principal (local).

    • Execute o comando de um computador cliente que tenha os utilitários de cliente do HPC Pack instalados (localmente). Se a variável de ambiente CCP_SCHEDULER não estiver definida no computador, inclua o /agendador:<o parâmetro> HeadNodeName no comando clusrun.

    • Use o o Portal de Gerenciamento do Windows Azure para fazer uma conexão de Área de Trabalho Remota com um nó principal em sua implantação de serviço (Agendador de HPC do Windows Azure).

  2. Abra um prompt de comando.

  3. Digite o seguinte comando:

    clusrun hpcfwutil register myApp.exe e:\approot\myApp.exe  
    

Para executar um comando clusrun em um subconjunto de nós, você pode especificar um parâmetro de clusrun, como /nodegroup:node_group_name, /nós:node_list (separado por vírgula) ou /template:node_template_name. Para obter mais informações, consulte clusrun.

Definindo a máscara de rede de MPI para intermitência para nós do Windows Azure

Ao executar trabalhos de MPI em nós do Windows Azure, verifique se os endereços IP dos nós do Windows Azure estão dentro do intervalo de endereços IP aceitos especificados para a máscara de rede MPI. A máscara de rede MPI determina de qual intervalo de endereços IP uma classificação de MPI pode aceitar comunicações. Se os trabalhos nos nós do Windows Azure estiverem falhando com erros sobre falhas de conexão, talvez seja necessário redefinir a máscara de rede para habilitar a comunicação entre os nós.

O intervalo padrão em todo o cluster é definido por meio da variável de ambiente de cluster CCP_MPI_NETMASK. O valor especificado nessa variável de cluster é definido automaticamente como uma variável de ambiente do sistema em todos os nós de cluster. Dependendo de seus requisitos, um administrador pode reconfigurar a máscara de rede em um nível de cluster ou substituir as configurações de cluster em um nível de nó ou de grupo de nós. Um proprietário do trabalho pode substituir configurações de cluster ou nó no nível do trabalho (para obter mais informações, consulte Hierarquia de variáveis de ambiente).

de nível de cluster

Você pode desabilitar a máscara de rede (permitir todos os endereços IP) em todo o cluster. Por exemplo, execute o seguinte comando no nó principal:

setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

Você pode ampliar o intervalo para garantir que ele inclua seus nós do Windows Azure e nós locais. Por exemplo, se os nós do Windows Azure tiverem um endereço IP 10.x.x.x.x e o intervalo de endereços padrão para nós locais for 10.x.x.x ou 10.1.x.x,, você poderá definir a máscara de rede da seguinte maneira:

cluscfg setenvs ccp_mpi_netmask=10.0.0.0/255.0.0.0

Importante

Se você configurar a conectividade entre o acesso aos nós do Windows Azure e os recursos locais, você deverá definir máscaras de rede separadas para seus nós locais e do Windows Azure. Verifique se a máscara de rede para os nós do Windows Azure não permite endereços IP locais.

de nível de nó

Você pode desabilitar ou definir a máscara de rede (permitir todos os endereços IP) apenas em seus nós do Windows Azure. Por exemplo, para desabilitar a máscara de rede, digite o seguinte comando:

clusrun /nodegroup:AzureNodes setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”

de nível de trabalho

Um proprietário do trabalho pode especificar o intervalo desejado (ou desabilitá-lo) no nível do trabalho definindo a variável de ambiente MPI MPICH_NETMASK intervalo nos argumentos de comando mpiexec . Por exemplo, se os nós do Windows Azure tiverem endereços IP começando com 10.28.x.x, digite o seguinte comando:

job submit /nodegroup:azurenodes /numcores:32 /stdout: %CCP_PACKAGE_ROOT%\myApp\out.txt /workdir: %CCP_PACKAGE_ROOT%\myApp mpiexec –env MPICH_NETMASK 10.28.0.0/255.255.0.0 myApp.exe

Rastreamento de aplicativos MPI em nós do Windows Azure

Se você tentar rastrear um aplicativo MPI nos nós do Windows Azure usando o argumento –trace em mpiexec, o tamanho do arquivo de rastreamento padrão (10 GB) será muito grande. É provável que o envio do trabalho falhe com uma mensagem sobre espaço em disco insuficiente. Você pode reduzir o tamanho do arquivo de rastreamento incluindo o argumento –tracefilemax. Por exemplo, para configurar um tamanho de arquivo de rastreamento de 1 GB, defina –tracefilemax 1000.

Identificar nós do Windows Azure em mensagens de erro de MPI

Mensagens de erro para aplicativos MPI normalmente usam o nome do host para identificar nós. No Windows Azure, o nome do host não é o nome amigável para os nós e pode ser difícil de identificar. Você pode usar o Gerenciador de Cluster de HPC para exibir o nome do nó no cluster HPC e o nome da instância do Windows Azure.

Consideração adicional para a intermitência no Windows Azure

  • Os trabalhos de MPI não podem abranger nós locais e do Windows Azure ou em diferentes implantações de nó do Windows Azure (nós do Windows Azure implantados usando modelos de nó diferentes). As implantações separadas do nó do Azure do Windows são isoladas e os processos de MPI não seriam capazes de se comunicar entre si. Você pode impedir que trabalhos de MPI abram esses limites enviando trabalhos de MPI para grupos de nós específicos. Os grupos de nós podem ser impostos pelo administrador no nível do modelo de trabalho ou podem ser especificados pelo proprietário do trabalho no nível do trabalho.

Consulte também

Diretrizes de para executar aplicativos HPC em nós do Azure
hpcpack