Università degli studi di Cagliari Facoltà di Ingegneria Dipartimento di Ingegneria Elettronica Gruppo di Elettromagnetismo Metodo di Progettazione Automatica basato sulla Genetic Programming
Flow Chart del Ciclo Evolutivo
Un caso concreto: le antenne filiformi Una antenna filiforme è una struttura costituita da un insieme di cilindri metallici disposti ordinatamente nello spazio. Come tale può essere rappresentata in maniera del tutto generale come l'insieme di un certo numero di linee spezzate disposte arbitrariamente nello spazio.
Struttura del software e strumenti utilizzati ECJ, Evolutionary Computation in JAVA, è una libreria di pubblico dominio che fornisce gli strumenti di base per operare con la genetic programming. NEC2, Numerical Electromagnetic Code, è un software di pubblico dominio per l’analisi di antenne filiformi sviluppato presso il Lawrence Livermore Laboratory. Il software si basa su due strumenti: ECJ NEC 2
Il ciclo di analisi di un individuo si esegue il parsing della s- expression che rappresenta l'individuo; si genera genera il listato NEC che descrive la struttura, comprensivo dei comandi necessari per l’analisi si scrive il file su disco si lancia l'eseguibile esterno in C++ si leggono i risultati dell'analisi si sintetizzano questi risultati in un valore numerico che rappresenta la fitness (o punteggio di merito) dell’individuo
Parallelismo intrinseco La genetic programming ha il vantaggio di essere una tecnica intrinsecamente parallela perché la valutazione di ogni singolo individuo può avvenire in maniera del tutto indipendente da quella degli altri. In altre parole ogni singolo individuo può essere valutato in un processo distinto eseguito nello stesso momento da un altra CPU. Per questo un ciclo evolutio ben si presta all’esecuzione su architetture distribuite.
Funzionamento del software Modalità Master-Slave In modalità Master-Slave viene generato un processo Master che si occupa di inizializzare il ciclo evolutivo e di “organizzare” il lavoro ed N processi Slave che si occupano di eseguire materialmente il lavoro. Il Master invia agli slave la descrizione degli individui da valutare e gli Slave eseguono l’analisi e restituiscono al Master la fitness degli individui valutati. L’interazione tra questi processi avviene tramite una connessione TCP-IP, in tal modo i processi possono essere distribuiti su altrettante macchine e operare realmente in parallelo.
Automatic Antenna Design Porting Fase 1 Modello di funzionamento base : Master sulla UI N slaves su N Worker Nodes Tipologia di comunicazione TCP-IP Vincoli User Interface con indirizzo IP noto ed accessibile ai Worker Nodes
Avvio di una job collection Dato che gli slave sono identici e hanno bisogno degli stessi parametri iniziali si è optato per l’uso di una job collection. Creato un semplice file jdl [ Type = "Job"; JobType = "Normal"; Executable = "/bin/bash"; Arguments = "slave.sh"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"slave.sh","aad.tbz"}; OutputSandbox = {"std.out","std.err"}; Requirements = ( RegExp("gilda",other.GlueCEUniqueId) ); Rank = ( -other.GlueCEStateEstimatedResponseTime ); ] Lo si è clonato con il comando for ((i=1;i<30;i++)); do cp slave.jdl jdls/slave$i.jdl; done E si è sottomessa la collection con il comando glite-wms-job-submit –d $USER –o jobid –-collection jdls
Connessione degli Slaves… Avendo preventivamente lanciato il master si possono vedere gli slave che pian piano si avviano ed iniziano il loro lavoro….
Running Jobs Dando il comando lcg-infosites --vo gilda ce possiamo avere un riscontro dell’attività dei jobs
Finestra Principale …attività di cui possiamo renderci conto anche dalla finestra principale del master che illustra l’andamento dell’evoluzione, mediante diversi grafici aggiornati al termine di ogni generazione.
Parametri di Controllo
Automatic Antenna Design N E X T L’obiettivo attuale è quello di sfruttare le API Java per rendere il master indipendente dalla User Interface ed ottenere così un programma in grado di interagire con la grid da un qualsiasi computer dotato di Java e di un’indirizzo IP pubblico raggiungibile dagli slaves.
Automatic Antenna Design …toward integration… SAGA ( Simple API for Grid Applications ) Reperibile all’indirizzo:
SAGA è disponibile sia in C++ che in JAVA e dichiara di supportare le GRID basate su Globus/gLite. La libreria sembra ben organizzata e strutturata ma la documentazione è ancora in fase di sviluppo e non sono presenti tutorial che illustrino come lavorare con una particolare tipologia di GRID. Al momento sto valutando se sia conveniente usare questa API unificata o se sia preferibile cercare di unificare quelle illustrate in aula. Automatic Antenna Design …toward integration…
Automatic Antenna Design That’s all folks !