Lote do Azure
A HPC (computação de alto desempenho) é a prática de usar um poder de computação significativo que fornece alto desempenho em comparação com o que você pode obter ao usar um laptop e/ou uma estação de trabalho. Ela resolve grandes problemas de execução simultânea em vários núcleos.
Isso é feito dividindo um problema em unidades computáveis menores e distribuindo essas unidades em um sistema distribuído. A comunicação ocorre continuamente entre elas para chegar à solução final com uma rapidez muito maior do que ao executar a mesma computação em menos núcleos.
Há várias opções de processamento em lotes e de HPC disponíveis no Azure. Se você conversar com um especialista do Azure, ele aconselhará você a se concentrar em três opções: Lote do Azure, Azure CycleCloud e Microsoft HPC Pack. As unidades a seguir deste módulo se concentram em cada opção. É importante observar que essas opções não são mutuamente exclusivas. Elas se baseiam umas nas outras e podem ser consideradas como diferentes ferramentas em uma caixa de ferramentas.
Aqui, você aprenderá mais sobre a computação de alto desempenho em geral e sobre o Azure HPC.
O que é o HPC no Azure?
Há muitos setores diferentes que exigem recursos de computação muito avançados para tarefas especializadas. Por exemplo:
- Em ciências genéticas, sequenciamento de genes.
- Em exploração de petróleo e gás, simulações de reservatório.
- Em finanças, modelagem de mercado.
- Em engenharia, modelagem de sistema físico.
- Em meteorologia, modelagem climática.
Essas tarefas exigem processadores que possam executar instruções extremamente rápidas. Os aplicativos de HPC no Azure podem ser dimensionados para milhares de núcleos de computação, estender clusters locais ou serem executados como uma solução 100% nativa de nuvem. Essa solução de HPC, incluindo o nó principal, os nós de computação e os nós de armazenamento, é executada no Azure sem uma infraestrutura de hardware a ser mantida. Essa solução é baseada nos serviços gerenciados pelo Azure: Conjuntos de Dimensionamento de Máquinas Virtuais, Rede Virtual e Contas de Armazenamento.
Esses serviços são executados em um ambiente de alta disponibilidade, com patch e suporte, permitindo que você se concentre em sua solução em vez de no ambiente em que eles são executados. Um sistema do Azure HPC também oferece a vantagem de que você pode adicionar recursos dinamicamente conforme a necessidade e removê-los quando a demanda cai.
O que é computação paralela em sistemas distribuídos
A computação paralela é o uso simultâneo de vários recursos de computação para resolver um problema computacional:
- Um problema é dividido em partes distintas que podem ser resolvidas simultaneamente.
- Cada parte é ainda mais dividida em uma série de instruções.
- As instruções de cada parte são executadas simultaneamente em processadores diferentes.
- Um mecanismo geral de controle/coordenação é empregado.
Diferentes fases do paralelismo
Há diferentes maneiras de classificar computadores paralelos e a Taxonomia de Flynn é uma das mais comuns. Ela distingue as arquiteturas de computador multiprocessador considerando como elas podem ser classificadas ao longo das duas dimensões independentes: fluxo de instruções e fluxo de dados. Cada uma dessas dimensões pode ter apenas um destes dois estados possíveis: único ou múltiplo.
Este diagrama mostra um aplicativo cliente ou um serviço hospedado interagindo com o Lote para carregar a entrada, criar trabalhos, monitorar tarefas e baixar a saída.
Podemos dar uma olhada nas quatro classificações diferentes com mais detalhes.
SISD | SIMD | MISD | MIMD |
---|---|---|---|
– Computador serial (não paralelo) – Instrução única: Apenas um fluxo de instruções está sendo ativado pela CPU durante qualquer ciclo de relógio – Dados únicos: apenas um fluxo de dados é usado como entrada durante um ciclo de relógio. – Tipo mais antigo de computador. Exemplos: 1. Mainframes de primeira geração 2. Minicomputadores, estações de trabalho 3. PCs principais de processador único |
– Computação paralela – Instrução única: todas as unidades de processamento executam a mesma instrução em um determinado ciclo de relógio. – Dados múltiplos: cada unidade de processamento pode operar em um elemento de dados diferente. – Mais adequado para problemas especializados caracterizados por um alto grau de regularidade, como processamento gráfico/imagem. – A maioria dos computadores modernos, com GPUs (unidades de processamento gráfico) empregam instruções SIMD e unidades de execução. Exemplos: 1. Matrizes de Processador: Thinking Machines CM-2, MasPar MP-1 e MP-2, ILLIAC IV 2. Pipelines de Vetor: IBM 9000, Cray X-MP, Y-MP e C90, Fujitsu VP, NEC SX-2, Hitachi S820, ETA10 |
– Computação paralela – Instruções múltiplas: cada unidade de processamento opera nos dados de maneira independente por meio de fluxos de instruções separados. – Dados únicos: um só fluxo de dados é fornecido a várias unidades de processamento. – Já existiram poucos exemplos reais (ou nenhum) dessa classe de computador paralelo. Exemplos: 1. Filtros de várias frequências operando em um único fluxo de sinal 2. Vários algoritmos de criptografia tentando decodificar uma única mensagem codificada |
– Computação paralela – Instruções múltiplas: cada processador pode executar um fluxo de instrução diferente. – Dados múltiplos: cada processador pode trabalhar com um fluxo de dados diferente. – No momento, é o tipo mais comum de computador paralelo. A maioria dos supercomputadores modernos se enquadram nessa categoria. Exemplos: 1. Supercomputadores mais atuais 2. Clusters e "grades" de computadores paralelos em rede 3. Computadores SMP com vários processadores 4. Computadores com vários núcleos |
Diferentes tipos de trabalhos de HPC: massivamente paralelo em comparação com altamente acoplado
Os trabalhos paralelos têm problemas computacionais divididos em tarefas pequenas, simples e independentes que podem ser executadas ao mesmo tempo, muitas vezes com pouca ou nenhuma comunicação entre elas.
Casos de uso comuns para trabalhos paralelos incluem simulações de risco, modelagem molecular, pesquisa contextual e simulações logísticas.
Trabalhos altamente acoplados têm uma carga de trabalho compartilhada grande dividida em tarefas menores que se comunicam continuamente. Os diferentes nós no cluster se comunicam entre si enquanto executam o processamento.
Casos de uso comuns de trabalhos altamente acoplados incluem:
- dinâmica dos fluidos computacional
- modelagem de previsão do tempo
- simulações de material
- emulações de colisão de automóveis
- simulações geoespaciais
- gerenciamento de tráfego
O que é a MPI (Interface de Passagem de Mensagem)
MPI é um sistema que visa fornecer um padrão portátil e eficiente para a passagem de mensagens. É de alto desempenho, portátil e escalonável e foi desenvolvido para trabalhar em redes de diferentes computadores paralelos.
A MPI tem ajudado nas redes e na computação paralela em escala industrial e global e contribuído para aprimorar o trabalho de aplicativos de computador paralelos em grande escala.
Benefícios da MPI da Microsoft:
- Facilidade de portabilidade de código existente que usa MPICH.
- Segurança baseada no Active Directory Domain Services.
- Alto desempenho no sistema operacional Windows.
- Compatibilidade binária entre diferentes tipos de opções de interconectividade.