Azure Batch
- 10 minuti
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 distribuito. Comunica continuamente tra di essi per raggiungere la soluzione finale più velocemente rispetto all'esecuzione dello stesso calcolo su meno core.
In Azure sono disponibili diverse opzioni di elaborazione batch e HPC. Se si parla con un esperto di Azure, è consigliabile 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. Si basano l'uno sull'altro e possono essere considerati come strumenti diversi in una casella degli strumenti.
In questa unità vengono fornite informazioni generali sul calcolo ad alte prestazioni e vengono fornite informazioni su Azure HPC.
Che cos'è HPC in Azure?
Esistono molti settori diversi che richiedono risorse di elaborazione avanzate per le attività specializzate. Per esempio:
- Nelle scienze genetiche, sequenziazione genica.
- Nell'esplorazione del petrolio e del gas, simulazioni di serbatoi.
- In finanza, modellazione del mercato.
- In ingegneria, modellazione fisica del sistema.
- Nella meteorologia, modellazione meteo.
Queste attività richiedono processori che possono eseguire rapidamente istruzioni. 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, viene eseguito in Azure senza infrastruttura hardware da gestire. Questa soluzione è 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 rimuoverle quando la domanda scende.
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 discrete che possono essere risolte simultaneamente.
- Ogni parte è suddivisa ulteriormente in una serie di istruzioni.
- Le istruzioni di ogni parte vengono eseguite simultaneamente su processori diversi.
- Viene utilizzato un meccanismo generale di controllo/coordinamento.
Fasi diverse del parallelismo
Esistono diversi modi per classificare i computer paralleli e la tassonomia di Flynn è uno dei modi più comuni per farlo. Distingue le architetture di computer multiprocessore in base a come 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: Single o Multiple.
Questo diagramma mostra un'applicazione client o un servizio ospitato che interagisce con Batch per caricare input, creare processi, monitorare le attività e scaricare l'output.
È possibile esaminare in modo più dettagliato le quattro diverse classificazioni.
SISD | SIMD | MISD | MIMD |
---|---|---|---|
- Computer seriale (non parallelo) - 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. - Il tipo di computer più antico. 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à GPU (Graphics Processor Unit) usa le istruzioni SIMD e le unità di esecuzione. Esempi: 1. Matrici processore: Macchine di pensiero CM-2, MasPar MP-1 & MP-2, ILLIAC IV 2. Pipeline vettoriali: IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu 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. - Pochi (se presenti) esempi effettivi di questa classe di computer paralleli sono mai esistiti. 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 - Istruzioni multiple: ogni processore può eseguire un flusso di istruzioni diverso. - Più dati: ogni processore può lavorare con un flusso di dati diverso. - Attualmente, il tipo più comune di computer parallelo - i supercomputer più moderni rientrano in questa categoria. Esempi: 1. La maggior parte dei supercomputer attuali 2. Cluster di computer paralleli in rete e "griglie" 3. Computer SMP multiprocessore 4. PC multicore |
Tipi diversi di lavori HPC: Massicciamente Parallelo vs Strettamente Accoppiato
I processi paralleli hanno problemi di calcolo suddivisi in piccole, semplici e indipendenti attività. Le attività 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.
Le attività strettamente accoppiate hanno un ampio carico di lavoro condiviso suddiviso in compiti più piccoli che comunicano continuamente. I diversi nodi nel cluster comunicano tra loro mentre eseguono l'elaborazione.
I casi d'uso comuni per i processi strettamente collegati includono:
- Fluidodinamica computazionale.
- Modellazione delle previsioni meteo.
- Simulazioni materiali.
- Emulazione delle collisioni delle 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. È altamente performante, portatile, 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. È stato anche aiutato a migliorare il lavoro di applicazioni di computer paralleli su larga scala.
I vantaggi di Microsoft MPI includono:
- Facilità di conversione del codice esistente che usa MPICH.
- Sicurezza basata su Servizi di dominio Active Directory.
- Prestazioni elevate nel sistema operativo Windows.
- Compatibilità binaria tra diversi tipi di opzioni di interconnettività.