Grazie alla collaborazione con Mathworks, su TS2 è disponibile uno speciale modulo che consente di lavorare sulla propria workstation con MATLAB e la sua interfaccia grafica, utilizzando i processori disponibili su TS2 come motore di calcolo.

 

Una volta configurato MATLAB a questo scopo e tramite la procedura, in gran parte automatizzata, descritta in questa pagina, si potrà utilizzare il comando batch per eseguire sul cluster quelle parti del codice che possono beneficiare delle sue caratteristiche.

È anche possibile  utilizzare MATLAB direttamente sul cluster: in questo caso, sarà possibile attivare dei pool di worker all'interno di apposite reservation di cui sfrutteranno le risorse.

Configurazione di Matlab sul proprio computer

Prima di procedere è necessario verificare che sia istallato sul proprio Matlab il "Parallel Computing Toolbox".

Per poter utilizzare Matlab integrandolo con TS2 per prima cosa occorre scaricare il  seguente file sulla propria macchina. Si tratta di un file compresso contenente gli script che automatizzano la configurazione di Matlab.

Una volta decompresso il file, assicuratevi che il suo contenuto sia depositato in una directory presente nel searchpath di Matlab.

La soluzione più semplice è estrarre il contenuto dell'archivio nella cartella searchpath di default di Matlab, ossia:

  1. Windows® platforms — %USERPROFILE%/Documents/MATLAB
  2. Mac platforms — $home/Documents/MATLAB
  3. Linux® platforms — $home/Documents/MATLAB if $home/Documents exists.

Nel caso si voglia usare una diversa soluzione, si può far riferimento alle seguenti istruzioni https://it.mathworks.com/help/matlab/matlab_env/what-is-the-matlab-search-path.html.

Una volta predisposti i file dell'archivio all'interno della searchpath di Matlab, si esegue quest'ultimo e, una volta in esecuzione, si lancia il seguente comando:

configCluster

Una volta eseguito, il comando richiederà di inserire il nome dell’utente (username) che si vuole utilizzare per accedere a TS2.

Una volta fornite queste informazioni, sarà possibile accedere alla configurazione del cluster attraverso la seguente opzione

accesso ai dettagli della configurazione

e da qui accedere ai dettagli ed eventualmente adattarli alle proprie necessità

dettagli della configurazione

Utilizzo del Cluster

Ogni volta che si vuole utilizzare il cluster per eseguire un particolare esperimento, bisogna creare un oggetto connessione nel proprio codice Matlab eseguendo una istruzione come la seguente

c=parcluster;

Matlab chiederà a questo punto l’inserimento della password associata all'utenza precedentemente indicata per completare la connessione.

L'uso dei processori di TS2 nel codice Matlab avviene mediante l'uso del comando batch come nel seguente esempio

job=batch(c,@parallelExample,1,{},'pool',3,'CurrentFolder','.');

dove c è la connessione precedentemente creata, parallelExample è la funzione che si vuole eseguire (questo esempio è tra i file installati), 1 indica che ci aspettiamo un parametro in uscita, {} indica la lista di parametri in ingresso, pool 3 indica il numero di worker che si richiede (NB il numero di worker disponibili per i calcoli è questo valore -1 perché un task è dedicato alla gestione degli altri) e CurrentFolder è il percorso sul file system di TS2 nel quale avviene l'esecuzione (il valore '.' sta ad indicare che l'esecuzione avviene nella directory corrente).

Si noti che batch si occupa in automatico del trasferimento dei file necessari all’esecuzione ma ci sono casi in cui questo non è possibile come quando il nome è determinato a runtime. Si può fare riferimento alla documentazione di batch (doc batch in matlab) per maggiori dettagli.

Una volta creato un job sono disponibili diversi metodi per gestirlo:

job.State

job.fetchOutputs{:}

job.delete

clear job

I job ed i loro dettagli rimangono sul cluster e sono recuperabili anche in un secondo momento.

Dal menu parallel è visualizzabile una finestra con la lista dei job; le stesse informazioni sono disponibili utilizzando comandi MATLAB.

c.findJob: permette di conoscere l'elenco dei job con dati sul cluster

j=c.findJob('ID',13);: permette di recuperare i dettagli di un determinato job

I dati sono persistenti sul server ed è quindi  importante cancellare ciò che non è più necessario

j.delete

Esempio

Il file esempioParallel, scaricabile qui, è un esempio di notebook Matlab che sfrutta il cluster per eseguire i calcoli; è un semplice esempio che mostra come varia il tempo di esecuzione di una data funzione cambiando il livello di parallelismo.