CRESCO: Sistema Ibrido CPU-PHI 5110P
Il processore Intel Xeon Phi è una scheda che può montare fino a 61 core a memoria condivisa. Ognuno dei core disponibili possiede un'unità vettoriale SSE (Streaming SIMD Extensions) ed è collegato a tutti gli altri in una configurazione ad anello tramite un bus bidirezionale a 512 bit.
Il coprocessore Phi è fornito come un dispositivo PCI separato, esterno al processore dell'host ed è munito di 8 GB di RAM, è inoltre dotato di un sistema operativo Linux con relativo file-system. Il dispositivo può anche montare un file-system esterno in modo che le applicazioni utente possano utilizzare aree dati diverse dalla memoria RAM del dispositivo. Il sistema operativo Linux fornito per Intel Xeon Phi offre un ambiente di memoria virtuale condivisa, ma le schede coprocessore non supportano paging verso dispositivi esterni. Questa tipologia di acceleratore supporta i paradigmi principali della programmazione. Dal punto di vista dello sviluppatore le modalità di programmazione di una scheda Phi possono essere considerate del tutto analoghe a quelle con cui si programmano i sistemi x86 esistenti.Il coprocessore PHI tipo può fornire elevata potenza di calcolo sfruttando il parallelismo vettoriale e può essere utilizzato in una delle seguenti modalità:
Sulle modalità di programmazione presentate in precedenza esiste molta documentazione in rete e delle valide linee guida possono essere trovate ai link:
Per raggiungere, quindi, prestazioni elevate nella modalità offload lo sviluppatore deve avere l'accortezza di:
Nei mesi scorsi il cluster Cresco 4 è stato arricchito da una sezione speciale grazie all'installazione di host dotati di schede Tesla K 40 e schede PHI. In particolare, gli host dotati di schede PHI sono i seguenti:
La macchina cresco4skp1è dotata anche di scheda Tesla K 40.
La macchina cresco4skp1 può essere utilizzata in maniera interattiva ed è raggiungibile via ssh dagli utenti, mentre le altre possono essere utilizzate solo in modalità batch. La modalità di utilizzo che di default intendiamo offrire agli utenti per le schede PHI è la modalità Offload.
Per usare i coprocessori PHI sui nostri sistemi gli utenti possono accedere alla macchina cresco4skp1 in modalità interattiva e caricare il modulo phi in maniera che l'ambiente di lavoro sia correttamente impostato con il comando:
module load phi
Dopo aver caricato il modulo l'utente si trova in condizioni di poter utlizzare la modalità di Offload automatica utlilzzando il massimo numero di thread disponibili sia sul processore che sul coprocessore. Di questa modalità di utlizzo possono approfittare le applicazioni che usano librerie per il calcolo scientifico come le MKL, oppure applicazioni scritte in ambienti come Matlab, Pyton o R, ambienti che a loro volta possono richiamare le librerie MKL. Le applicazioni che non possono giovare della modalità automatica di Offload possono comunque giovare della modalità Compiler Assisted Offload (CAO).
In questi casi l'utente deve scrivere il suo codice inserendo opportune chiamate pragma nei punti in cui si vuole che il carico di lavoro venga spostato dal processore all'acceleratore.
Per disabilitare la modalità automatica di Offload l'utente deve impostare a 0 la variabile d'ambiente MKL_MIC_ENABLE;
in ambiente ksh/bash:
export MKL_MIC_ENABLE=0
in ambiente csh/tcsh
setenv MKL_MIC_ENABLE 0
Una volta scritto il codice in maniera opportuna ed impostata la modalità di Offload che si desidera utilizzare è possibile compilare il codice stesso con un comando del tipo:
icc -mkl -O3 -std=c99 esempio.c -o esempio.offload (supponendo che il codice utilizzi le librerie mkl che possono, come detto, giovare della modalità automatica di Offload)
Una volta ottenuto l'eseguibile, per permettere all'utente di sottomettere in batch lavori che utilizzino il coprocessore PHI abbiamo definito sul nostro sistema la coda cpu_plus che afferisce ai nodi con coprocessore PHI di tipologia 1 ed alle macchine con scheda Nvidia K40, cioè ai nodi
L'utente può accodare il proprio lavoro con un comando del tipo:
bsub -o file_output -e file_error -q cpu_plus -R PHI_5110P -n 1 esempio.offload eventuali parametri
Il parametro -R PHI_5110P passato a bsub serve ad indicare che il job dovrà andare su macchine dotate di scheda PHI, escludendo l'host cresco4sk1 che invece monta la scheda Nvidia K40