Azure Batch

Completato

High Performance Computing (HPC) è la pratica di usare una potenza di calcolo significativa che offre prestazioni elevate rispetto a ciò che è possibile ottenere quando si usa il portatile e/o la workstation. Risolve problemi di grandi dimensioni che devono essere eseguiti contemporaneamente su più core.

Questa operazione viene eseguita suddividendo un problema in unità di calcolo più piccole e distribuendo tali unità in un sistema a sua volta distribuito. Comunica continuamente tra di loro per raggiungere la soluzione definitiva in modo molto più veloce rispetto all'esecuzione dello stesso calcolo su meno core.

In Azure sono disponibili diverse opzioni per l'elaborazione batch e HPC. Un consulente esperto di Azure suggerisce di concentrarsi su tre opzioni: Azure Batch,Azure CycleCloud e Microsoft HPC Pack. Le unità seguenti di questo modulo sono incentrate su ogni opzione, È importante notare che queste scelte non si escludono a vicenda, ma si basano una sull'altra e possono essere considerate semplicemente come strumenti diversi per lo stesso scopo.

In questa unità verranno fornite informazioni di carattere generale su HPC (High Performance Computing) e Azure HPC.

Che cos'è HPC in Azure?

Esistono molti settori diversi che richiedono risorse di calcolo potenti per attività specializzate. Ad esempio:

  • In genetica, il sequenziamento del genoma.
  • Nell'estrazione di petrolio e gas, le simulazioni dei giacimenti.
  • In finanza, la modellazione del mercato.
  • In ingegneria, la modellazione del sistema fisico.
  • In meteorologia, la modellazione meteo.

Queste attività richiedono processori che consentono di eseguire le istruzioni in modo rapido. Le applicazioni HPC in Azure possono offrire scalabilità fino a migliaia di core di calcolo, estendere gli ambienti a calcolo intenso locali o venire eseguite come soluzioni cloud native al 100%. Questa soluzione HPC include il nodo head, i nodi di calcolo e i nodi di archiviazione e viene eseguita in Azure senza infrastruttura hardware da gestire. È basata sui servizi gestiti da Azure: set di scalabilità di macchine virtuali, rete virtuale e account di archiviazione.

Questi servizi vengono eseguiti in un ambiente a disponibilità elevata, con patch e supporto, consentendo di concentrarsi sulla soluzione anziché sull'ambiente in cui vengono eseguiti. Un sistema HPC di Azure offre anche il vantaggio di poter aggiungere in modo dinamico le risorse in base alle esigenze e di rimuoverle quando non servono più.

Diagram of the High Performance Computing.

Che cos'è Parallel Computing nei sistemi distribuiti

Parallel Computing è l'uso simultaneo di più risorse di calcolo per risolvere un problema di calcolo:

  • Un problema è suddiviso in parti dedicate che possono essere risolte contemporaneamente.
  • Ogni parte è ulteriormente suddivisa in una serie di istruzioni.
  • Le istruzioni di ogni parte vengono eseguite contemporaneamente su processori diversi.
  • Viene utilizzato un meccanismo generale di controllo/coordinamento.

Diagram of the Parallel Computing on Distributed Systems.

Diverse fasi del parallelismo

Esistono diversi modi per classificare i computer paralleli e la tassonomia di Flynn è uno dei più comuni. Distingue le architetture di computer multiprocessore in base al modo in cui possono essere classificate lungo le due dimensioni indipendenti del flusso di istruzioni e del flusso di dati. Ognuna di queste dimensioni può avere solo uno dei due stati possibili: Singolo o Multiplo.

Questo diagramma mostra un'applicazione client o un servizio ospitato che interagisce con Batch per caricare l'input, creare processi, monitorare le attività e scaricare l'output.

Diagram of the stages of parallelism.

È possibile esaminare in modo più dettagliato le quattro diverse classificazioni.

SISD SIMD MISD MIMD
- Computer seriale (nonparallel)
- Istruzione singola: viene eseguito un solo flusso di istruzioni dalla CPU durante un ciclo di clock
- Dati singoli: viene usato un solo flusso di dati come input durante un ciclo di clock.
- Tipo di computer meno recente.
Esempi:
1. Mainframe di prima generazione
2. Minicomputer, workstation
3. PC core a processore singolo










- Computer parallelo
- Istruzione singola: tutte le unità di elaborazione eseguono la stessa istruzione in qualsiasi ciclo di clock specificato.
- Più dati: ogni unità di elaborazione può operare su un elemento dati diverso.
- Ideale per problemi specializzati caratterizzati da un elevato grado di regolarità, ad esempio l'elaborazione grafica/immagine.
- La maggior parte dei computer moderni, con unità del processore grafico (GPU), usa le istruzioni SIMD e le unità di esecuzione.
Esempi:
1. MasPar MP-1 & MP-2, MasPar MP-2, ILLIAC IV
2. Pipeline vettoriali: IBM 9000, Cray X-MP, Y-MP & C90, Supponia VP, NEC SX-2, Hitachi S820, ETA10

- Computer parallelo
- Istruzioni multiple: ogni unità di elaborazione opera sui dati in modo indipendente tramite flussi di istruzioni separati.
- Dati singoli: un singolo flusso di dati viene inserito in più unità di elaborazione.
- Sono esistiti solo pochi esempi effettivi di questa classe di computer parallelo.
Esempi:
1. Più filtri di frequenza che operano su un singolo flusso di segnale
2. Più algoritmi di crittografia che tentano di violare un singolo messaggio codificato







- Computer parallelo
- Più istruzioni: ogni processore può eseguire un flusso di istruzioni diverso.
- Più dati: ogni responsabile del trattamento può lavorare con un flusso di dati diverso.
- Attualmente, è il tipo più comune di computer parallelo: la maggior parte dei supercomputer moderni rientra in questa categoria.
Esempi:
1. Supercomputer più recenti
2. Cluster di computer paralleli in rete e "griglie"
3. Computer SMP multiprocessore
4. PC multicore







Diagram of the multiple instruction multiple data.

Tipi diversi di processi HPC: parallelo massimo e associazione stretta

I processi paralleli presentano problemi di calcolo suddivisi in attività piccole, semplici e indipendenti che possono essere eseguite contemporaneamente, spesso con poca o nessuna comunicazione tra di esse.

  • I casi d'uso comuni per i processi paralleli includono simulazioni di rischi, modellazione molecolare, ricerca contestuale e simulazioni logistiche.

    I processi strettamente associati hanno un carico di lavoro condiviso di grandi dimensioni suddiviso in attività più piccole che comunicano continuamente. I diversi nodi del cluster comunicano tra loro mentre eseguono l'elaborazione.

  • I casi d'uso comuni per i processi strettamente associati includono:

    • fluidodinamica computazionale
    • modellazione delle previsioni meteo
    • simulazioni materiali
    • emulazione delle collisioni di automobili
    • simulazioni geospaziali
    • gestione del traffico

Che cos'è l'interfaccia MPI (Message Passing Interface)

  • MPI è un sistema che mira a fornire uno standard portatile ed efficiente per il passaggio dei messaggi. Fornisce prestazioni elevate, è portabile e scalabile ed è stato sviluppato per lavorare su reti di computer paralleli diversi.

  • MPI ha contribuito alla rete e al parallel computing su scala industriale e globale e ha contribuito a migliorare il lavoro di applicazioni di computer paralleli su larga scala.

Diagram of the message passing interface.

Vantaggi di Microsoft MPI:

  • Facilità di conversione del codice esistente che usa MPICH.
  • Sicurezza basata su Active Directory Domain Services.
  • Prestazioni elevate nel sistema operativo Windows.
  • Compatibilità binaria tra diversi tipi di opzioni di interconnessione.

Verificare le conoscenze

1.

Qual è il vantaggio di usare Azure Batch, anziché effettuare il provisioning del numero di macchine virtuali necessario per l'attività in corso?

2.

È stato analizzato un problema e sono state rilevate 1000 sottoattività distinte. Per risolvere questo problema, il manager acconsente al budget per l'esecuzione di 20 nodi di macchine virtuali in Azure Batch. Rispetto all'esecuzione in un singolo nodo di macchina virtuale con le stesse dimensioni, approssimativamente quanto si prevede che sia più veloce la soluzione proposta?