Linee guida per l'esecuzione di applicazioni MPI in Azure
Questo argomento fornisce linee guida e procedure per abilitare l'esecuzione delle applicazioni MPI nei nodi di Windows Azure. Queste informazioni si applicano ai nodi di Windows Azure aggiunti a un cluster HPC Windows locale (in uno scenario "burst" di Windows Azure) o ai nodi distribuiti come parte di un servizio di Windows Azure che usa l'Utilità di pianificazione HPC di Windows Azure (solo Windows Azure).
Per linee guida generali sui dati e le condivisioni file nei nodi di Windows Azure, vedere Linee guida per l'esecuzione di applicazioni HPC nei nodi di Azure.
In questo argomento:
Quale tipo di processi MPI sono più adatti per Windows Azure?
La registrazione di un processo MPI con il firewall nei nodi di Windows Azure
Impostazione della netmask MPI per il burst nei nodi di Windows Azure
Identificazione dei nodi di Windows Azure nei messaggi di errore MPI
Quali tipi di processi MPI sono più adatti per Windows Azure?
I processi MPI che non sono particolarmente latenza e sensibili alla larghezza di banda sono più probabili ridimensionare correttamente nell'ambiente Windows Azure. I processi MPI sensibili alla latenza e alla larghezza di banda possono eseguire anche processi di piccole dimensioni, in cui una singola attività viene eseguita in non più di pochi nodi. Ad esempio, nel caso di una simulazione di progettazione, è possibile eseguire molti piccoli processi per esplorare e definire lo spazio parametrico prima di aumentare le dimensioni del modello. Ciò può essere particolarmente utile nelle situazioni in cui l'accesso ai nodi di calcolo locali è limitato e si vuole assicurarsi di usare il tempo del cluster per i modelli più appropriati.
Perché facciamo queste raccomandazioni? I processi MPI vengono spesso eseguiti in cluster con hardware di rete specializzato a bassa latenza e larghezza di banda elevata. I nodi di Windows Azure non sono attualmente connessi a questo tipo di rete. Inoltre, i nodi di Windows Azure vengono periodicamente riprovisionati dal sistema Windows Azure. Se viene eseguito nuovamente il provisioning di un nodo durante l'esecuzione di un processo MPI, il processo MPI avrà esito negativo. Maggiore è il numero di nodi usati per un singolo processo MPI e maggiore è la durata dell'esecuzione del processo, più è probabile che uno dei nodi venga sottoposto a reprovisioning durante l'esecuzione del processo.
Registrazione di un processo MPI con il firewall nei nodi di Windows Azure
Un amministratore deve configurare Windows Firewall per consentire la comunicazione MPI tra i nodi di calcolo in Windows Azure. A questo scopo, è possibile registrare ogni applicazione MPI con il firewall (creare un'eccezione basata su applicazioni). In questo modo le comunicazioni MPI vengono eseguite su una porta assegnata dinamicamente dal firewall. È possibile configurare le eccezioni del firewall nei nodi usando i comandi clusrun e hpcfwutil.
Nota
Per il burst nei nodi di Windows Azure, un amministratore può configurare un comando di eccezione del firewall per l'esecuzione automatica in tutti i nuovi nodi di Windows Azure aggiunti al cluster. Dopo aver eseguito il comando hpcfwutil e verificare che l'applicazione funzioni, è possibile aggiungere il comando a uno script di avvio per i nodi di Windows Azure. Per altre informazioni, vedere Configurare uno script di avvio per i nodi di Windows Azure.
La procedura seguente descrive come aggiungere un'eccezione per myApp.exe a tutti i nodi. Per eseguire la procedura seguente, è necessario essere un amministratore per il cluster HPC Windows o per la distribuzione dell'Utilità di pianificazione HPC di Windows Azure.
Per configurare un'eccezione del firewall per myApp.exe
Connettersi al nodo head in uno dei modi seguenti (usando le credenziali di amministratore):
Accedere direttamente al nodo head (locale).
Eseguire il comando da un computer client con le utilità client HPC Pack installate (in locale). Se la variabile di ambiente CCP_SCHEDULER non è impostata nel computer, includere il /scheduler:<parametro yourHeadNodeName> nel comando clusrun.
Usare il portale di gestione di Windows Azure per stabilire una connessione Desktop remoto a un nodo head nella distribuzione del servizio (Utilità di pianificazione HPC di Windows Azure).
Apri una finestra del prompt dei comandi.
Digitare il comando seguente:
clusrun hpcfwutil register myApp.exe e:\approot\myApp.exe
Per eseguire un comando
Impostazione della netmask MPI per il burst nei nodi di Windows Azure
Quando si eseguono processi MPI nei nodi di Windows Azure, assicurarsi che gli indirizzi IP dei nodi di Windows Azure siano compresi nell'intervallo di indirizzi IP accettati specificati per la maschera di rete MPI. La maschera di rete MPI determina da quale intervallo di indirizzi IP un rango MPI può accettare le comunicazioni. Se i processi nei nodi di Windows Azure hanno esito negativo con errori relativi agli errori di connessione, potrebbe essere necessario reimpostare netmask per abilitare la comunicazione tra i nodi.
L'intervallo predefinito a livello di cluster viene definito tramite la variabile di ambiente del cluster CCP_MPI_NETMASK. Il valore specificato in questa variabile cluster viene impostato automaticamente come variabile di ambiente di sistema in tutti i nodi del cluster. A seconda dei requisiti, un amministratore può riconfigurare la maschera di rete a livello di cluster o eseguire l'override delle impostazioni del cluster a livello di nodo o di gruppo di nodi. Un proprietario del processo può eseguire l'override delle impostazioni del cluster o del nodo a livello di processo . Per altre informazioni, vedere gerarchia delle variabili di ambiente).
a livello di cluster
È possibile disabilitare netmask (consentire tutti gli indirizzi IP) nell'intero cluster. Ad esempio, eseguire il comando seguente nel nodo head:
setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”
È possibile ampliare l'intervallo per assicurarsi che includa i nodi di Windows Azure e i nodi locali. Ad esempio, se i nodi di Windows Azure hanno un indirizzo IP 10.x.x.x e l'intervallo di indirizzi predefinito per i nodi locali è 10.x.x.x o 10.1.x.x, è possibile impostare netmask come segue:
cluscfg setenvs ccp_mpi_netmask=10.0.0.0/255.0.0.0
Importante
Se si configura la connettività tra i nodi di Windows Azure e le risorse locali, è necessario definire netmask separati per i nodi locali e Windows Azure. Assicurarsi che la netmask per i nodi di Windows Azure non consenta indirizzi IP locali.
livello nodo
È possibile disabilitare o impostare netmask (consentire tutti gli indirizzi IP) solo nei nodi di Windows Azure. Ad esempio, per disabilitare netmask, digitare il comando seguente:
clusrun /nodegroup:AzureNodes setx CCP_MPI_NETMASK=”0.0.0.0/0.0.0.0”
livello di processo
Un proprietario del processo può specificare l'intervallo desiderato (o disabilitarlo) a livello di processo impostando la variabile di ambiente MPI MPICH_NETMASK <intervallo> negli argomenti di comando mpiexec. Ad esempio, se i nodi di Windows Azure hanno indirizzi IP a partire da 10.28.x.x, digitare il comando seguente:
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
Traccia delle applicazioni MPI nei nodi di Windows Azure
Se si tenta di tracciare un'applicazione MPI nei nodi di Windows Azure usando l'argomento
Identificazione dei nodi di Windows Azure nei messaggi di errore MPI
I messaggi di errore per le applicazioni MPI usano in genere il nome host per identificare i nodi. In Windows Azure il nome host non è il nome descrittivo per i nodi e può essere difficile da identificare. È possibile usare Gestione cluster HPC per visualizzare il nome del nodo nel cluster HPC e il nome dell'istanza di Windows Azure.
Considerazioni aggiuntive per il burst in Windows Azure
- I processi MPI non possono estendersi tra nodi locali e Windows Azure o in distribuzioni di nodi di Windows Azure diverse (nodi di Windows Azure distribuiti usando modelli di nodo diversi). Le distribuzioni separate dei nodi di Windows Azure sono isolate e i processi MPI non sarebbero in grado di comunicare tra loro. È possibile impedire che i processi MPI si estendono su questi limiti inviando processi MPI a gruppi di nodi specifici. I gruppi di nodi possono essere applicati dall'amministratore a livello di modello di processo o possono essere specificati dal proprietario del processo a livello di processo.
Vedi anche
linee guida per l'esecuzione di applicazioni HPC nei nodi di Azure
hpcpack