Libreria matematica NAG per il Fortran in ENEAGRID ================================================== La libreria Matematica Fortran NAG è disponibile agli utenti in due versioni, (A) per il compilatore Portland pgf90 (NAG Mark 22) e (B) per il compilatore Intel ifort (NAG Mark 24) entrambi per la piattaforma linux x86_64. Si consiglia di leggere la "Users' Note" relativa alla libreria di interesse e nel seguito ci sono solo alcune informazioni di carattere generale. 1) Nota sulla gestione dello sviluppo e della politica della licenze ==================================================================== Si ricorda che è prassi degli sviluppatori di NAG di aggiungere e rimuovere routine tra una versione e la successiva della libreria quindi le due versioni contengono una lista routine leggermente differente come riportato nella documentazione, disponibile anche al link: http://www.afs.enea.it/software/libnag/ nella documentazione vengono anche indicate con quali routine NAG si possono sostituire quelle ritirate. Le licenze attualmente disponibili, che hanno scadenza annuale sono relative alla piattaforma linux x86_64 e a spcifiche versioni di libreria/compilatore, mentre le versioni più antiche anche per lo stesso compilatore non sono supportate dalla licenza corrente. 2) Inizializzazione dell'ambiente ================================== L'esecuzione di applicazioni compilate richiede sempre la disponibilità della licenza (definizione della variabile d'ambiente NAG_KUSARI_FILE) e nel caso di link con librerie shared anche della opportuna definizione della variabile d'ambiente LD_LIBRARY_PATH. Sono disponibili i moduli "libnag_pgf90" e "libnag_ifort" per effettuare queste definizioni e quindi l'utente può inizializzare opportunamente l'ambiente di esecuzione facendo uso dei comandi: module add libnag_pgf90 module add libnag_ifort 3) Compilazione e link ====================== I suddetti moduli definiscono anche variabili di ambiente che mettono a disposizione dell'utente le informazioni necessarie alla compilazione e llink di una applicazione. (A) modulo libnag_pgf90 LIBNAG - link con librerie NAG statiche LIBNAG_SHR - link con librerie NAG dinamiche LIBNAG_ACML - link con librerie NAG statiche e con la versione ACML di NAG (multicore) LIBNAG_ACML_SHR - link con librerie NAG dinamiche e con la versione ACML di NAG (multicore) per esempio, per la compilazione/link di mioprog.f90 con le librerie statiche: pgf90 -o mioprog mioprog.f $LIBNAG (B) modulo libnag_ifort LIBNAG - link con librerie NAG statiche LIBNAG_SHR - link con librerie NAG dinamiche LIBNAG_MKL - link con librerie NAG statiche e con la versione MKL di NAG (multicore) LIBNAG_MKL_SHR - link con librerie NAG dinamiche e con la versione MKL di NAG (multicore) per esempio, per la compilazione/link di mioprog.f90 con le librerie statiche: ifort -o mioprog mioprog.f $LIBNAG Per maggiore dettaglio delle librerie da utilizzare in fase di compilazione/link si consiglia di eseguire gli script di esempio forniti da NAG che compilano i programmi di test di tutte le routine della libreria. Tali script, che possono anche essere copiati in una directory utente, forniscono a terminale la lista completa dei comandi necessari in fase di compilazione ed esecuzione. Gli script sono descritti nelle seguenti sezioni A),B): A) Versione libnag_pgf90 nella directory /afs/enea.it/software/libnag/mark22/fll6a22dpl/scripts/nag_example* sono disponibili i seguenti 4 scripts: nag_example - link con librerie NAG statiche nag_example_mkl - link con librerie NAG dinamiche nag_example_shar - link con librerie NAG statiche e con la versione ACML di NAG (multicore) nag_example_shar_mkl - link con librerie NAG dinamiche e con la versione ACML di NAG (multicore) I programmi di test, che vengono agganciati automaticamente dallo script sono disponbili in: /afs/enea.it/software/libnag/mark22/fll6a22dpl/examples/source/ B) Versione libnag_ifort nella directory /afs/enea.it/software/libnag/mark24/fll6i24dcl/scripts/nag_example* . sono disponibili i seguenti 4 scripts: nag_example - link con librerie NAG statiche nag_example_mkl - link con librerie NAG dinamiche nag_example_shar - link con librerie NAG statiche e con la versione MKL di NAG (multicore) nag_example_shar_mkl - link con librerie NAG dinamiche e con la versione MKL di NAG (multicore) I programmi di test vengono agganciati automaticamente dallo script sono disponbili in: /afs/enea.it/software/libnag/mark24/fll6i24dcl/examples/source/ Per entrambe le versioni (A) e(B) gli script richiedono come argomento l'identificativo della routine NAG da provare, dato dal nome in caratteri minuscoli della routine. Per esempio la routine D06DBF viene identificata dallla stringa d06dbf e permette allo di agganciare il programma d06dbfe.f90 nella directory di test. Analogamente viene agganciato il file di input del test, presente nella directory examples/data; pure i rusultati attesi sono disponibili nella directory examples/results. Al termine dell'esecuzione del comando ./nag_example d06dbf oltre la messaggistica a terminale, vengono prodotti nella directory corrente i seguenti file: d06dbfe.d - dati di input d06dbfe.exe - l'eseguibile del programma di test d06dbfe.f o d06dbfe.f90 - il sorgente dell programma di test, secondo le versioni d06dbfe_mod.mod - eventualmente un modulo d06dbfe.r - i risultati del test 4) Test della disponibilità della licenza ========================================= Tra le routine NAG esiste la routine A00ACF che verifica solamente se la licenza è correttamente disponibile, fornendo un messaggio a terminale. Il programma di test a00acfe.exe puo' essere usato come test della disponibilità della licenza. 5) Supporto di architetture multicore ===================================== La libreria NAG non è in generale una libreria parallela ma ha un supporto parziale di architetture multicore SMP direttamente con OpenMP e/o attraverso l'uso a sua volta delle librerie MKL o ACML di cui una copia viene fornita insieme alla libreria NAG stessa a seconda della versioni. Documentazione specifica per l'uso di multicore e sistemi SMP: http://www.afs.enea.it/software/libnag/nagdoc_fl22/xhtml/GENINT/smpint.xml http://www.afs.enea.it/software/libnag/nagdoc_fl24/html/GENINT/smpint.html dove il numero di core usati viene impostato usando lo standard OpenMP, con la variabile di ambiente OMP_NUM_THREADS ed ovviamente in fase di esecuzione deve essere a LSF un pari numero di core, non superiore a quello dei core disponili sul nodo della piattaforma selezionata. 6) Situazione del supporto di NAG sui cluster ENEAGRID disponibili ================================================================== La versione naglib_pgf90 è supportata su tutti i cluster. La versione naglib_ifort è supportata sui cluster CRESCOF,CRESCO3,CRESCO4 mentre su CRESCO1,CRESCO2,CRESCOC e CRESCOB la versione corrente dei compilatori Intel risulta essere incompatibile.