Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
EOF
tar zcf results.tar.gz output.README `basename ${OUTPUT_FILE}`
2>/dev/null
Dopo aver scritto lo script di esecuzione, e definito quali dovessero essere i file di
output da recuperare alla fine dell’operazione di rendering (stdout, stderr e file
contenente il video “renderizzato”), ho iniziato finalmente a scrivere il codice della
portlet e le relative JSP. Tutto il codice che ho sviluppato è disponibile sul web alla
pagina:
http://sourceforge.net/p/ctsciencegtwys/liferay/HEAD/tree/trunk/blender-portlet/
Alcuni screenshot sono mostrati nel seguito, tranne quello della pagina di descrizione
dell’applicazione che è stato invece già inserito all’inizio del presente capitolo.
La figura seguente mostra la pagina nella quale l’utente può visualizzare l’infrastruttura
che sta usando e, volendo, scegliere il sito sul quale eseguire l’applicazione di
rendering;
Figura 6.13 - Pagina di visualizzazione dell'infrastruttura Cloud
Progetto software e risultati 69
Marco Z ennaro | “ Rendering-‐as-‐a-‐Service” s u C loud
La figura seguente mostra invece la pagina per la scelta dei parametri di esecuzione, del
file da “renderizzare” e dell’eventuale notifica via email dell’inizio e della fine
dell’esecuzione.
Figura 6.14 - Pagina con i parametri di configurazione dell'esecuzione
I vari campi sono spiegati nel seguito:
Virtual Server: permette di scegliere la VM da usare; al momento esiste solo un
• template con a bordo la versione 2.69 di Blender;
VM Template: permette di scegliere le dimensioni (in termini di numero di core
• logici e di GB di memoria) della VM da usare;
VM Name: permette di dare un nome logico alla VM;
• Description: permette di associare una breve descrizione all’esecuzione in
• modo da ritrovarla facilmente nell’elenco dei propri job;
Notification: permette di impostare la notifica via email dell’inizio e della fine
• dell’esecuzione dell’applicazione di rendering;
Advanced settings: al momento, permette solo di scegliere il file da
• renderizzare.
Fatte tutte le scelte, basta cliccare sul “bottone verde” che compare in basso a sinistra
per mandare in esecuzione l’applicazione. Da questo momento in avanti, il suo stato può
Progetto software e risultati 70
Marco Z ennaro | “ Rendering-‐as-‐a-‐Service” s u C loud
essere monitorato sulla pagina MyJobs, facente parte integrante del Catania Science
Gateway Framework, che è mostrata nella figura seguente.
Figura 6.15 - Pagina di monitoraggio delle varie esecuzioni
Quando l’esecuzione dell’applicazione è completata con successo, l’indicazione sul suo
stato (SCHEDULED, RUNNING, ecc.) viene sostituita da una piccola iconcina che
contiene il link per lo scaricamento dei file di output sul computer dell’utente.
6.4. Possibili sviluppi futuri
Come sempre accade, il lavoro relativo ad una tesi sperimentale, qual è stata la mia,
rappresenta una “finestra” che si apre per un tempo finito sul normale “scorrere” delle
attività di un gruppo di ricerca. Ciò significa che molto è stato fatto ma che sviluppi
futuri sono ancora possibili sul mio progetto software.
Alcuni sono elencati di seguito, a conclusione del capitolo:
La possibilità di scegliere la versione di Blender e/o l’algoritmo di rendering,
• cambiando nella pagina di input il template di VM;
La possibilità di lanciare simultaneamente pià renderizzazioni (in un’unica job
• collection in modo da sfruttare la scalabilità intrinseca ad un ambiente distribuito
qual è una Cloud); Progetto software e risultati 71
Marco Zennaro | “Rendering-‐as-‐a-‐Service” su Cloud
Fare uno studio di scalabilità in termini di tempi di esecuzione del rendering e
• delle dimensioni del file da renderizzare;
Distribuire i template di VM utilizzati in altri siti, sia del CHAIN-REDS Cloud
• Testbed che dell’EGI Federated Cloud (questa attività è stata già pianificata);
Inserire la portlet per l’esecuzione di Blender in uno o più Science Gateway
• ufficiali (questa attività è stata già pianificata).
Progetto software e risultati 72
Marco Zennaro | “Rendering-‐as-‐a-‐Service” su Cloud
7. Appendice 1
7.1. Creazione del template di una Macchina Virtuale
Prima dell’installazione della macchina virtuale, ho dovuto tener conto della necessità
di soddisfare alcuni preriquisiti. Ho così eseguito i sequenti comandi:
# yum install -y gcc gcc-c++ glibc-devel glibc-devel.i686
# yum install csh
# yum install -y libpng-devel
Ho quindi compilato il compilatore GCC 4.8 all’interno della cartella objdir eseguendo:
# wget ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-4.8.0/gcc-
4.8.0.tar.gz
# tar xzf gcc-4.8.0.tar.gz
# cd gcc-4.8.0
# ./contrib/download_prerequisites
# cd ..
# mkdir objdir
# cd objdir
# $PWD/../gcc-4.8.0/configure --prefix=/opt/gcc-4.8.0
# make
# make install
# cd ..
Ho quindi eseguito il download e l’installazione di Blender sulla macchina virtuale:
# wget http://download.blender.org/release/Blender2.69/blender-
2.69-linux-glibc211-i686.tar.bz2
# tar xf blender-2.69-linux-glibc211-i686.tar.bz2
# cd blender-2.69-linux-glibc211-i686
# yum install libfreetype.so.6
# yum install libSDL-1.2.so.0
# yum install libGL.so.1
# install libGLU.so.1
# yum install libXi.so.6
ed eseguito l’export di alcune variabili:
# export NETCDF=/usr/local/
# export WRFIO_NCD_LARGE_FILE_SUPPORT=1
# export CC=/opt/gcc-4.8.0/bin/gcc
# export CXX=/opt/gcc-4.8.0/bin/g++
# export FC=/opt/gcc-4.8.0/bin/gfortran
# export JASPERLIB=/usr/local/lib/
# export JASPERINC=/usr/local/include/jasper/
Ho scaricato e installato zlib. La zlib è di fatto una libreria per il supporto del
compressore di default del Sistema Operativo (gzip) ed ha molti ambiti di applicazione:
dalla lettura/scrittura di files compressi alla compressione “al volo” degli stream.
Appendice 1 73
Marco Zennaro | “Rendering-‐as-‐a-‐Service” su Cloud
# wget http://zlib.net/zlib-1.2.8.tar.gz
# tar xvzf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure
# make
# make install
# cd ..
A questo punto ho compilato HDF5 che è un programma portabile ed estensibile per la
gestione e la manipolazione di diversi tipi di dati. Esso è stato disegnato per un I/O
flessibile ed efficiente di dati voluminosi e complessi.
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-
4.8.0/lib/:/opt/gcc-4.8.0/lib64/
# wget http://www.hdfgroup.org/ftp/HDF5/current/src/hdf5-
1.8.11.tar.gz
# tar xvzf hdf5-1.8.12.tar.gz
# cd hdf5-1.8.12
# ./configure --with-zlib=/usr/local/include,/usr/local/lib --
prefix=/usr/local/ --enable-fortran --enable-cxx --enable-shared
# make
# make install
# cd ..
Sono passato così all’installazione e compilazione di netcdf, un altro set di librerie per
la gestione di dati scientifici array oriented:
# wget http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-
4.3.0.tar.gz
# tar xvzf netcdf-4.3.0.tar.gz
# cd netcdf-4.3.0
# ./configure --enable-netcdf4 --enable-benchmarks
# make
# make install
# cd ..
e di netcdf fortran:
# wget http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-
fortran-4.2.tar.gz
# tar xvzf netcdf-fortran-4.2.tar.gz
# cd netcdf-fortran-4.2
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
# ./configure
# make
# make install
# cd ..
Quindi ho fatto le due ultime installazioni e configurazioni: prima di jasper
# wget http://www.ece.uvic.ca/~frodo/jasper/software/jasper-
1.900.1.zip
# unzip jasper-1.900.1.zip
# cd jasper-1.900.1
# ./configure --enable-shared
# make
# make install
Appendice 1 74
Marco Zennaro | “Rendering-‐as-‐a-‐Service” su Cloud
e dopo di Grib:
# wget
https://software.ecmwf.int/wiki/download/attachments/3473437/gri
b_api-1.10.0.tar.gz?api=v2
# tar xvfz grib_api-1.10.0.tar.gz\?api\=v2
# cd grib_api-1.10.0
# ./configure --with-jasper=/usr/local/lib --with-
netcdf=/usr/local/lib
# make
# make install
# cd ..
Ora che la macchina virtuale con Blender è pronta, come mostrato nella figura
successiva, non resta che instaziarla all’interno di una piattaforma Cloud. Nel prossimo
paragrafo sono mostrati i passi da compiere per farlo su una Cloud gestita con
OpenNebula, che è una di quelle che ho utilizzato in questo lavoro di tesi.
Figura 7.1 - Template della VM con Blender
Appendice 1 75
Marco Zennaro | “Rendering-‐as-‐a-‐Service” su Cloud
7.2. Istanziazione della Macchina Virtuale
L’istanziazione di una VM si basa su tre aspetti: l’immagine, il template ed infine la
VM stessa. Prima di tutto, si crea l’immagine; nel nostro caso vogliamo che non sia
persistent dato che dovrà essere istanziata e distrutta dall’adaptor JSAGA per OCCI (v.
Capitolo 6).
Ho quindi eseguito i seguenti comandi di OpenNebula:
# one image create &m