* compilare con ifort un programma .f90 che chiama una routine di libreria mkl
> utente domanda
Buongiorno,
non riesco a trovare il path alle librerie mkl, ovvero quando compilo con ifort un programma .f90 che chiama una routine di libreria mkl, devo forse includere il path giusto icon -I o -l.
> admin risponde
prima di ogni operazione è opportuno eseguire i seguenti comandi
source /nfsexports/SOFTWARE/intel/oneapi/compiler/latest/env/vars.sh
source /nfsexports/SOFTWARE/intel/oneapi/mkl/latest/env/vars.sh intel64
e successivamente, in fase di compilazione, aggiungere le opportune opzioni che specifichino il path della librerie (ad esempio, -L $MKLROOT/lib/intel64/ -lmkl_core -lmkl_rt -lmkl_intel_thread -L/nfsexports/SOFTWARE/intel/oneapi/compiler/2021.1.1/linux/compiler/lib/intel64_lin/ -liomp5)
> altro utente aggiunge
Il link corretto alle MKL e’ possibile generarlo online:
https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.wina3m
Vanno selezionate le versioni corrette delle MKL e compilatori.
* problemi con python
> utente domanda
ho bisogno di fare dei test con python e volevo chiedere l’installazione di:
– ultima versione di python
– pacchetti python: numpy, scipy, qutip, pip (versione compatibile con quella di python), deap, matplotlib
Se c’e’ un modo per farlo in autonomia, ovviamente va benissimo, fateci sapere.
> admin risponde
in merito alla disponibilità di Python e relativi pacchetti, comunichiamo che sono attualmente installate le seguenti versioni
Python 3.8.5
numpy | 1.22.2 |
scipy | 1.5.2 |
qutip | 4.6.3 |
pip | 22.0.4 |
deap | 1.3.1 |
matplotlib | 3.3.2 |
pip | 22.0.4 |
Il comando del Python in questione è: /nfsexports/anaconda3/bin/python
> utente risponde
OK, allora c’e’ qualcosa che non va visto dal singolo utente.
cd ¸/lustre/home/cnr-guest/<utente>/prova_py_optimparallel
Il file prova.py contiene banalmente
import numpy as np
#x = np.arange(0,10)
#print(x)
Quindi esegue solo l’import del modulo.
Comando: /nfsexports/anaconda3/bin/python prova.py
Output:
Traceback (most recent call last):
File "prova.py", line 1, in <module> import numpy as np File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/__init__.py", line 143, in <module> from . import lib File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/lib/__init__.py", line 25, in <module> from .index_tricks import * File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/lib/index_tricks.py", line 12, in <module> import numpy.matrixlib as matrixlib File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/matrixlib/__init__.py", line 4, in <module> from .defmatrix import * File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/matrixlib/defmatrix.py", line 11, in <module> from numpy.linalg import matrix_power File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/linalg/__init__.py", line 73, in <module> from . import linalg File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/linalg/linalg.py", line 32, in <module> from numpy.lib.twodim_base import triu, eye File "/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/lib/twodim_base.py", line 11, in <module> from numpy.core.overrides import set_array_function_like_doc, set_module
ImportError: cannot import name 'set_array_function_like_doc' from 'numpy.core.overrides' (/lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy/core/overrides.py)
> utente prosegue
In realta’ faceva cosi’ perche’ nel fare delle prove, avevo fatto un link simbolico della cartella numpy presente in anaconda in quella directory. Rimosso il link, il problema persisteva egualmente.
Tuttavia stamattina tutto funzionava, infatti credevo avesse messo a posto qualcosa voi.
> admin risponde
dai log inclusi, a noi sembra che durante l'esecuzione dello script python prova.sh, questo tenti di effettuare l'import di una versione di numpy che non è quella di sistema ma è quella disponibile nella directory utente /lustre/home/cnr-guest/<utente>/prova_py_optimparallel/numpy.
Lo stesso script prova.sh, da noi eseguito, non riporta alcun errore. Consigliamo quindi di verificare se si sia provveduto a definire qualche variabile di ambiente che modifichi il comportamento standard di Python.
> utente risponde
il problema di Python si e’ ripresentato. Potete vedere in slurm*.out nella directory
/lustre/home/cnr-guest/<utente2>/test.
L’errore e’: /nfsexports/anaconda3/lib/python3.8/site-packages/qutip/init.py:74: UserWarning: scipy not found.
warnings.warn("scipy not found.”)
Non trova scipy nonostante sia li’. C’e’ qualcosa che non va.
> admin risponde
ieri, durante l'installazione di altri pacchetti, si è creata qualche incongruenza che stiamo cercando di risolvere
* Uso di R
> utente domanda
Vi scrivo per condividere l’esperienza di utilizzo di R per una sua ottimale gestione da parte degli utenti
Per funzionare R ha bisogno di una libreria esterna di Linux (pcre2).
In questa fase di test ho deciso di installare localmente i packages Linux necessari, lascio a voi la valutazione se installarli a livello globale per tutti gli utenti in modo da evitare duplicazioni.
In fase di installazione dei packages di R (purtroppo su Linux R li compila tutti dai sorgenti) mi sono reso conto che venivano richiesti diversi altri packages Linux. Per i packages R che ho installato i packages Linux richiesti (che ho installato localmente con successo) sono:
libpng, libpng-devel, libjpeg-turbo-devel, libtiff-devel, libtiff, fftw (ha come dependencies fftw-libs-long, fftw-libs-double e fftw-libs-single), fftw-devel (che ha come dependency fftw-libs)
Immagino che prima o poi altri utenti avranno la stessa esigenza per diversi di questi packages in altri contesti.
Credo pertanto che il package Linux pcre2 vada comunque installato pena l’impossibilità di lanciare R. Per quanto riguarda l’installazione globale per tutti gli utenti dei packages Linux che vengono man mano richiesti dagli utenti credo vada definita una politica ad hoc (se installarli localmente da parte di ciascun utente, quando possibile, se l’installazione viene fatta dagli amministratori, ecc.). Per i packages di R vedo più complicata la gestione centralizzata certamente ottimale, in considerazione della varietà di packages installati normalmente dagli utenti (nel mio caso circa 110 incluse le dependencies) e la gestione delle versioni eventuale che richiede la reinstallazione dei package ad ogni nuovo rilascio.
Al momento sto trasferendo i files dei miei progetti sul file system da 170TB /lustre/home, in attesa che venga collegato il sistema di storage (comuqnue i miei dati occupano una frazione trascurabile dello storage totale disponibile sul file system), dopodiche avvierò le esecuzioni dei codici, pertanto testando completamente R nel sistema.
> admin risponde
da una nostra verifica risulta che il package pcre2 fosse già installato sui nodi di calcolo ma non sulla UI. Abbiamo quindi provveduto alla sua installazione su quest'ultima.
Ricordiamo, però, che l'esecuzione delle applicazioni deve avvenire esclusivamente sui nodi di calcolo tramite i comandi del gestore di risorse SLURM.
In merito agli altri pacchetti Linux (libpng-devel, libjpeg-turbo-devel, libtiff-devel, libtiff, fftw), anche questi sono stati installati su nodi ed sulla UI dal momento che sono sicuramemente di utilità per tutti. Osseriamo però che nella directory /nfsexports/SOFTWARE è disponibile un'installazione compilata da sorgente della libreria FFTW.
* Uso di compilatori Intel con MPI
> utente domanda
mi indichereste per cortesia la modalità’ per utilizzare il compilatore INTEL con l’OpenMPI installato da voi?
Un codice compilato usando mpiifort da’ problemi quando i nodi devono comunicare fra di loro. Volevo quindi provare ad utilizzare il compilatore intel ma utilizzando l’MPI installato da voi.
Segnalo inoltre un altro problema: spesso l’output non viene aggiornato in tempo reale, questo e’ un problema perche’ e’ necessario spesso monitorare l’andamento dei job. A volte, nell’output compaiono righe di caratteri del tipo
“ ^@^@^@^@^@^@^@^@^@^@^@ “
che scompaiono alla fine. Altre volte tali righe non scompaiono e quindi non risulta possibile ottenere l’output completo.
> admin risponde
per indicare quale compilatore deve essere usato dai comandi mpifort, mpif90 o mpif77 di sistema è necessario configurare le seguenti variabili di ambiente (si veda anche https://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0)
export OMPI_FC=ifort
export OMPI_F77=ifort
In merito al file di output, potresti indicarcene un esempio?
> utente continua
ritornando alla questione di quei files nei quali venivano stampati caratteri “strani” che tali rimangono a fine job, trovate un esempio qui:
/lustre/home/tccourse/Esercitazioni22/XDATCAR2
* problemi di rete sul cluster
> utente domanda
volevo segnalare che secondo me esistono dei problemi di rete sul cluster, anche se non saprei dimostrarlo.
Il job attualmente running e’ il seguente:
11780 hpc submit.s <utente> R 4:10 2 ibiscohpc-wn[28-29]
Nella directory /lustre/home/<utente>/prova_<utente>/ENCUT_600_4_nodes trovate tutto cio’ che serve, incluso submit.sh che sto utilizzando.
La cosa incredibile e’ che il job e’ andato benissimo su 1 nodo, ma non appena va su piu’ nodi, si impalla (una sola volta sono riuscito a lanciarlo su 6 nodi).
Di fatto il job dovrebbe durare 200-300 s, ma resta li’ senza far nulla e non si capisce perche’.
Ad es. ls -lrt nella directory indicata adesso mi dice:
-rw-rw-r–. 1 <utente> <utente> 0 May 19 12:56 slurm-11780.out
-rw-rw-r–. 1 <utente> <utente> 4170 May 19 12:56 out.6
-rw-rw-r–. 1 <utente> <utente> 139169 May 19 12:57 OUTCAR
-rw-rw-r–. 1 <utente> <utente> 132 May 19 12:57 IBZKPT
-rw-rw-r–. 1 <utente> <utente> 73728 May 19 12:57 vasprun.xml
Cioe’ da circa 5 minuti (scrivo alle 13:03) nessun file viene aggiornato.
Sottomettendo un job analogo, e andando sui nodi, apparentemente il job sta andando e sta usando fra l’altro risorse di memoria e GPU limitate:
<utente> 186580 99.0 0.4 27577708 3509868 ? Rl 13:07 3:07 /lustre/home/<utente>/VASP_6.3.0_sources/vas
<utente> 186581 99.0 0.4 27383148 3510264 ? Rl 13:07 3:07 /lustre/home/<utente>/VASP_6.3.0_sources/vas
<utente> 186582 99.0 0.4 27514300 3622652 ? Rl 13:07 3:07 /lustre/home/<utente>/VASP_6.3.0_sources/vas
<utente> 186583 99.0 0.4 27398576 3530968 ? Rl 13:07 3:07 /lustre/home/<utente>/VASP_6.3.0_sources/vas
Quindi per task 99.9% di CPU e 0.4% di memoria.
Mentre sulla GPU:
0 N/A N/A 186580 C …s/vasp.6.3.0/bin/vasp_gam 3321MiB
1 N/A N/A 186581 C …s/vasp.6.3.0/bin/vasp_gam 3313MiB
2 N/A N/A 186582 C …s/vasp.6.3.0/bin/vasp_gam 3281MiB
3 N/A N/A 186583 C …s/vasp.6.3.0/bin/vasp_gam 3321MiB
Quindi poco piu’ di 3Gb per GPU sui 32 Gb disponibili per GPU.
Potreste aiutarmi a capire il perche’ e come risolverlo?
> admin risponde
verificheremo a breve.
> utente risponde
OK, grazie, il job segnalato credo di averlo fermato. Inoltre vi segnalo che ho spostato gli eseguibili in /lustre/home/<utente>/CODES/VASP/vasp.6.3.0/bin
Trovate anche nelle stesse subdirectories gli eseguibili della versione 6.3.1 che ho compilato sulla falsariga di quella compilata da voi.
> admin risponde
osservando il file utilizzato per sottomettere il job, notiamo che per la sua esecuzione vengono richiesti 4 task per nodo.
Dal momento che, come più volte da noi rilevato, sembrano esserci problemi nell'allocare più task per nodo quando questi devono accedere alle GPU, e nelle more di riuscire a trovare il tempo di risolvere il problema in questione, le consigliamo di sottomettere il job sempre usando l'opzione
#SBATCH --ntasks-per-node=1
Volevamo inoltre aggiungere che il programma in questione, una volta in esecuzione, alloca tutte le GPU disponibili sul nodo.
Quindi, pur lanciando un solo task per nodo, questo è in grado di utilizzare tutte le GPU disponibili.
* problemi lustre, con module, software disponibile
> utente domanda
Ho alcune domande:
1) Leggo nella documantazione ibiscohpc-wiki.scope.unina.it
che ci sono 2 scratch:
/lustre/scratch
/home/scratch
Io non riesco ad accedere ad alcuna delle due dal mio account.
Sembra che le directories non esistano.
Si tratta di un problema temporaneo?
Che faccio, utilizzo la home per lanciare le simulazione?
2) Se faccio
$ module avail
mi compare solo:
——————————- /usr/share/Modules/modulefiles ——————————-
dot module-git module-info modules null use.own
Verrà installato altro software, e sarà caricabile con `module load`?
3) Ho visto che in /nfsexports/SOFTWARE/ ci sono alcuni pacchetti installati. Posso utilizzarlo o è in fase di test?
4) Inoltre, sarebbe possibile avere a disposizioni dei compilatori gnu (gcc e gfortran) più aggiornati?
> admin risponde
Salve,
di seguito le risposte alle sue domande:
1) come documentato in https://ibiscohpc-wiki.scope.unina.it/wiki:uso_sist i file system in questione sono accessibili solo sui nodi di calcolo
2) al momento non è implementato il meccanismo basato sul tool module
3) come documentato in https://ibiscohpc-wiki.scope.unina.it/wiki:lista_sw sul sistema sono installati diversi software. Nella stessa pagina trova anche le istruzioni per il loro utilizzo
4) versioni più recenti dei compilatori GNU sono disponibili grazie a “Red Hat Developer Toolset”. Per il loro utilizzo si veda https://ibiscohpc-wiki.scope.unina.it/wiki:uso_sist.