CNAF 18/11/2004 Federica Fanzago INFN Padova a/grape... BAT... BATMAN...o? M.Corvo, F.Fanzago, N.Smirnov (INFN Padova) + tutte le persone che fanno i test e che ci danno suggerimenti!!!!
CNAF 18/11/2004 Federica Fanzago INFN Padova Scopo e funzionalita' – Creazione degli script (sh, jdl) usando informazioni fornite dall'utente nel file di configurazione e riga di comando e da servizi esterni (PubDB, refDB) – Sottomissione dei job in ambiente grid (edg-job-submit). – Monitoraggio dello stato e retrieve automatico dell'output 1 Grape e' un framework sviluppato in python originariamente pensato per le produzioni di CMS su grid. E' stato modificato per l'analisi --> ben architettato ? Funzionalita' implementate:
CNAF 18/11/2004 Federica Fanzago INFN Padova 2... informazioni in agrape.cfg file … a) dataset e owner b) numero di eventi totali da analizzare c) numero di job da runnare (job splitting) d) nome dell'eseguibile di Orca e) nome del root file prodotto f) path dell' orcarc card g) nome dell'output e log directory, per retrieve automatico h) nome della directory dove agrape crea i job... e... i) agrape trova eseguibile di ORCA e librerie nella SCRAM area dell'utente, crea archivio tgz e lo include nell'InputSandbox l) agrape modifica l'orcarc card in accordo con il job splitting e la include nell'InputSandox Cosa fornisce l'utente
CNAF 18/11/2004 Federica Fanzago INFN Padova Flusso di agrape 3 1) Legge agrape.cfg file e opzioni nella riga di comando 2) Crea gli script da sottomettere a) data discovery (interrogando refDB e PubDB) b) packaging del codice c) modifica orcarc (in accordo con jobsplitting) d) crea the shell script to runnare sul WN (wrapper dell'orca executable) 3) Crea jdl files 4) Sottomette jobs alla Grid (con edg-job-submit, ma e' predisposto anche per BOSS) 5) Retrieve automatico dell'output
CNAF 18/11/2004 Federica Fanzago INFN Padova Alcuni step 4 Data discovery Interroga refDb per ottenere collid di un dataset e owner Interroga refDB per avere la lista dei siti che pubblicano tale collid Per ogni sito interroga PubDB locale. Ottiene info sui cataloghi e protocolli (script php di Alessandra e Nicola) Se il catalogo e' validato e il numero di eventi e' sufficiente scrive le info relative a tale catalogo su un file da spedire in InputSandbox (file_to_send) Il nome dell'SE del sito viene messo come requirement nella jdl (attualmente il CE per baco al matchmaker) Il Broker sottomettera' il job verso le risorse che matchano con i requirement Packaging del codice Il nome dell'eseguibile e' necessario per create l'archivio tgz del'eseguibile e delle librerie. La variabile d'ambiente $LOCALRT fornisce il path della scram area dell'utente.
CNAF 18/11/2004 Federica Fanzago INFN Padova Alcuni step (2) 5 Jdl da sottomettere in grid: nell'InputSandbox vengono messi: 1) archivio tzg 2) orcarc card 3) file_to_send ottenuto dai localPubDB 4) lo script sh da runnare nel WN 5) file per JAM monitoring (opzionale) in OutputSandbox vengono messi: 1) root output file (se prodotto) 2) std.out and std.err del job 3).BrokerInfo file Requirement = nome degli SE che hanno i dati + versione di ORCA Modifica della card sul WN: Il file_to_send viene usato nel WN per capire quale(i) catalogo(ghi) deve essere usato, dipende dal sito, e per modificare di conseguenza l'orcarc card.
CNAF 18/11/2004 Federica Fanzago INFN Padova Lo script sh 6 1) prepara l'ambiente per runnare ORCA in LCG, facendo il source di un file d'ambiente fornito dal software manager 2) prepara la scram area 3) untar del codice dell'utente dentro la scram area 4) modifica l'InputFileCatalogURL dell'orcarc card con il corretto catalog da usare. Se necessario si copia il catalogo localmente (rfcp o globus-url-copy) 5) lancia l'eseguibile di orca 6) rinomina l'output di orca in accordo con lo splitting (mv MyHisto.root MyHisto_n.root) 7) ritorna l'output in OutputSandbox. Lo stage dell'output in un SE e la sua registrazione nell'RLS e' opzionale (e comunque da testare...)
CNAF 18/11/2004 Federica Fanzago INFN Padova A questo punto agrape genera dei job per l'analisi da runnare su grid. Alcuni test fatti a bari e bologna hanno dato esiti positivi Come procedere? Innanzitutto... 1) Distribuire codice a piu' persone per avere feedback 2) Finche' non c'e' broker di Heinz, insistere perche' la patch al matchmaker venga ufficialmente rilasciata 3) Interfacciarsi con PubDB usando script php di Ale e Nic Da discutere... 1) Scrivere i jobid in un file runtime e non alla fine (work in progress) 2) Fare il retrieve dell'output runtime e non alla fine ('' '') 3) Logica di scelta dei protocolli nel casi in cui un sito pubblichi piu' copie degli stessi cataloghi (funzione di Ale). Bisogna stabilire una priorita' sui protocolli? 4) Dare la possibilita' all'utente di runnare sul WN uno script di analisi e non solo un semplice eseguibile di ORCA. E' possibile definire degli user case? 5) Template per lo script di shell e non varie funzioni che scrivono vari pezzi. 6) semplificare l'albero di directory creato da agrape per ogni sottomissione?
CNAF 18/11/2004 Federica Fanzago INFN Padova Da discutere ) creare frammenti di orcarc sulla UI e non sul nodo. Anche in questo caso che priorita' si da ai vari protocolli? Bisogna creare frammento per ogni tipo di catalogo e protocollo? Da tenere presente che gli orcarc saranno storati anche nel pubdb. 8) interfaccia utente scram like: l'utente dichiara l'eseguibile e scram prende exe e librerie associate e tutte le variabili d'ambiente. Da capire... 9) creare tgz usando ldd per le librerie linkate all'eseguibile. 10) Job monitoring: -- a) monitor con BOSS: nuovo job-type -- b) monitor con jam meno invasivo ? (In parte gia' implementato) Domande (Marcello): a) E' un frame o un tool di sottomissione? b) Quali problemi di sottomissione vuole semplificare all'utente? Le funzionalita' offerte? Come si introducono nuove funzionalita'? Quali specifiche soddisfa per essere un frame (o tool) di sottomissione? Quali specifiche devono soddisfare degli applicativi che si vogliono incorporare in grape per essere sottomessi? c) Perche' non si e' fatto un sistema a plug-ins?