il laboratorio di fisica computazionale: strumentazionepastore/master-tools.pdfil laboratorio di...

23
Il laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università di Trieste • L’ hardware per la fisica computazionale • Strumenti software • sistemi operativi • programmazione • pre- e post-processing • Criteri di valutazione per le scelte SW http://www.laureescientifiche.units.it / (aggiornamento e formazione insegnanti; corso CIRD - CP e M IDIFO3: Lab_A I15)

Upload: others

Post on 15-Sep-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Il laboratorio di Fisica Computazionale:strumentazione

G. Pastore, M. PeressiDip. Fisica - Università di Trieste

• L’ hardware per la fisica computazionale• Strumenti software

• sistemi operativi• programmazione• pre- e post-processing

• Criteri di valutazione per le scelte SW

http://www.laureescientifiche.units.it/

(aggiornamento e formazione insegnanti;corso CIRD - CP e M IDIFO3: Lab_A I15)

Page 2: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

L’ hardware per la fisica computazionale

qualsiasi computer di tipo generaleattualmente in commercio dispone di unapotenza di calcolo superiore a quantonecessario per il più ambizioso progettoragionevole per studenti delle superiori.

Non è un problema:

Page 3: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Strumenti SW: sistema operativo

Il sistema operativo (S.O.) gestisce tutte le componenti HW del computer e sovrintende a tutte le attività (processi).In questo momento il panorama delle possibilità è ristretto a duegrandi famiglie: Unix (in tutte le varianti, inclusi MacOsX e Linux) e Windows (in tutte le varianti e versioni attualmente disponibili).

Dal punto di vista delle funzionalità di base e del supporto ad attività computazionali non c’è una differenza sostanziale tra le due alternative. In genere, la scelta è legata a vincoli esterni e considerazioni che esulano dal contesto computazionale (budget, sicurezza,conoscenze, ….).

Una considerazione a parte può esser fatta sulla disponibilità di strumenti di sviluppo per le due piattaforme. Un’ analisi dell’ offerta di mercato lungo questa linea, che esula dallo scopo di questo corso, dovrà tener conto dei vincoli di budget e delle politiche generali stabilite a riguardo, nel contesto operativo concreto (es. necessità relative a software specifico per altre attività)

Page 4: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Strumenti SW: programmazione

I linguaggi di programmazione assolvono un duplicescopo:

1. comunicazione uomo-macchina: descrivere ad unlivello più astratto del linguaggio macchina i passidi elaborazione da compiere;

2. comunicazione tra esseri umani (programmatore-altri programmatori, programmatore-utilizzatori,programmatore-con-se-stesso);

Page 5: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Strumenti software: programmazione

I linguaggi di programmazione possono essere classificati secondo diverse categorie. Qui ci limiteremo a quelle più rilevanti per la valutazione degli strumenti in ambito computazionale.

-Livelli-Espressività-Efficienza della traduzione in linguaggio macchina-Maturità-Standardizzazione-Base utilizzatori-Software esistente-Curva di apprendimento-Disponibilità di ambienti di sviluppo

Page 6: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - livelli dei linguaggi

Tradizionalmente si assegna ad un linguaggio di programmazione un livello tanto più alto quanto più ci si allontana dalle particolarità dell’ HW e ci si avvicina alla descrizione del problema in termini dellinguaggio naturale per la/le discipline ad esso rilevanti.

Esempio: calcolo della derivata in x della funzione f(x)=x2 :

leal -360(%ebp), %eax movl %eax, (%esp) call _gfortran_transfer_real leal -360(%ebp), %eax movl %eax, (%esp) call _gfortran_st_read_done flds -20(%ebp) flds -16(%ebp) faddp %st, %st(1) fld %st(0) fmulp %st, %st(1) flds -20(%ebp) flds -16(%ebp) fsubrp %st, %st(1) fmul %st(0), %st fsubrp %st, %st(1) flds .LC1 fdivrp %st, %st(1) flds -16(%ebp) fdivrp %st, %st(1) fstps -12(%ebp) movl $.LC0, -352(%ebp) movl $5, -348(%ebp)

……

MAIN__: pushl %ebp movl %esp, %ebp subl $376, %esp movl $options.0.1502, 4(%esp) movl $8, (%esp) call _gfortran_set_options movl $.LC0, -352(%ebp) movl $3, -348(%ebp) movl $128, -360(%ebp) movl $5, -356(%ebp) leal -360(%ebp), %eax movl %eax, (%esp) call _gfortran_st_read movl $4, 8(%esp) leal -20(%ebp), %eax movl %eax, 4(%esp) leal -360(%ebp), %eax movl %eax, (%esp) call _gfortran_transfer_real movl $4, 8(%esp) leal -16(%ebp), %eax movl %eax, 4(%esp)

Assembler(generatodal compilatore)

Page 7: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - livelli dei linguaggiEsempio: calcolo della derivata in x=2 della funzione f(x)=x2 :

Fortran

program derireal :: h,x,derread*,x,hder=( (x+h)**2-(x-h)**2)/2/hprint*,derend program deri

Mathematica

In[3]:= F[x_]:=x^2In[4]:= F'[x]Out[4]= 2 xIn[5]:= F'[2]Out[5]= 4

C

#include <stdio.h>int main(void){float h,x,der;scanf("%f%f",&x,&h);der=( (x+h)*(x+h)-(x-h)*(x-h))/2/h;printf("%f \n",der);}

basso “alto livello” | alto livello | altissimo livello

Un linguaggio di altissimo livello come Mathematica permette di aderirein modo completo alla descrizione del problema nell’ ambito specifico.Per contro si perde l’ informazione sull’ approccio e gli algoritmiutilizzati.

Page 8: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - espressività

Linguaggi dello stesso livello possono avere diversa espressivitàin funzione dei diversi tipi dati, strutture di controllo ed espandibilità disponibili

Es. Coordinata x della posizione di un pianeta

Posizione(1,I)

Pianeta[i].coordinata_x

Page 9: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - Efficienza dellatraduzione in linguaggio macchina

Programmi scritti in linguaggi di programmazione di vario livello vengono tradotti con vari meccanismi in applicazioni in linguaggio macchina (intepreti, compilatori, bytecode intermedi).

I diversi meccanismi possono fornire diversi livelli di efficienza e, anche all’ interno di un dato meccanismo, per esempio linguaggi compilati, l’ efficienza della traduzione varia da software a software e, in alcuni casi può anche essere esplicitamente modificata (livelli di ottimizzazione).

Poco importante per le applicazioni didattiche.

Page 10: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - maturità

Ogni linguaggio di programmazione subisce un’ evoluzione analoga a quella dei linguaggi naturali.

Alcuni linguaggi hanno più di 50 anni di vita (Fortran, Cobol, …) E subiscono un processo di evoluzione continua, ma hanno comunque raggiunto una notevole stabilità (compatibilità all’ indietro).

Altri, più recenti, sono ancora sottoposti a frequenti modifiche sostanziali, richiedendo in alcuni casi cambiamenti anche pesanti nei codici sviluppati.

Page 11: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - standardizzazione

Per alcuni linguaggi, si è proceduto ad una standardizzazione che garantisce comportamenti dei codici coerenti ed equivalenti su piattaforme HW e SW diverse.

Il processo di standardizzazione rende più lenta l’ evoluzione del linguaggio ma in genere rappresenta un vantaggio per il programmatore.

La presenza di standard pubblici rende non ambiguo il comportamento dei codici e garantisce la portabilità dei programmi a livello sorgente.

Page 12: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - base di utilizzatori

La presenza di un numeroso gruppo di utilizzatori, pur non essendo un obbligo, garantisce:

1. interesse allo sviluppo del linguaggio e degli strumenti SW collegati anche da parte di aziende;2. esistenza di documentazione;3. spinta all’ evoluzione del linguaggio4. possibilità di confronto con altri programmatori su temi di comune interesse

Page 13: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - SW esistente

Per ogni linguaggio di programmazione esistono biblioteche di programmie sottoprogrammi che implementano moltissime funzionalità utili in diversi ambiti applicativi.

Utile un’ indagine su quanto è disponibile per il proprio campo diinteresse.

Page 14: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione - curva di apprendimento

La velocità di apprendimento è un parametro difficile da misurare.Tuttavia, proprio in ambiente didattico riveste una particolare importanza.

In genere linguaggi non fortemente “tipizzati” possono risultare di piùfacile apprendimento perché meno rigidi su un aspetto importante della sintassi.

Questo vantaggio va però soppesato in confronto ad una maggiore “disciplina” di programmazione a livello di un “primo linguaggio”

Va anche tenuto conto della semplificazione per l’ apprendimento offerta dagli strumenti di sviluppo disponibili.

Page 15: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione: ambiente di sviluppo

IDE (Integrated Development Environment): SW di sviuppo, in generecostituito da un editor, un compilatore (o interprete), un sistemaautomatico di costruzione di applicazioni e un debugger fortementeintegrati e spesso accessibili mediante un’ interfaccia grafica.A volte con sistemi di controllo versione.Alcuni sono multilinguaggio (NetBeans, Eclipse, Visual Studio), altrilegati ad un singolo linguaggio e/o su singola piattaforma (Delphi, VB)

Debugger: strumenti per l’ esecuzione controllata di programmi infase di sviluppo. Per ottimizzarne le prestazioni è necessario un certogrado di compatibilità ed integrazione con i compilatori. In ambienteUnix interessante interfaccia grafica (DDD).

Text editors. Molti, alcuni mono-piattaforma, altri multipiattaforma.Generici/orientati a linguaggi (Notepad, Jedit, Nedit, Emacs, vi/vim,…)

Page 16: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione: paradigmi

Con paradigmi di programmazione si intende i diversi approcci all’analisi e alla descrizione di un problema in vista della suaimplementazione a livello di codice.

I linguaggi di alto livello correntemente usati per attivitàcomputazionali sono tutti di tipo imperativo (elaborazione comesequenza di istruzioni).

Sono però possibili scelte di analisi molto diverse da approcciprocedurali a quelli orientati agli oggetti.

Approccio proceduurale: separazione tra dati e azioni da compieresu di essi.

Approccio ad oggetti: dati ed azioni sui dati sono integrati in entitàuniche.

Page 17: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Programmazione: paradigmi

Quale paradigma scegliere ?

Risposta opportunistica: quello che si conosce meglio

Risposta “pedagogica”: quello che “distrae” meno dal problema computazionale

Page 18: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

pre- e post-processing

Preparazione dei dati secondo un determinato formato richiesto daun’ applicazione, estrazione di alcuni campi, ricerca di dati, visualizzazione, trasformazione dei dati, sono attività utili (alcune indispensabili ) nel laboratorio computazionale.

Molte di queste attività possono essere svolte mediante strumentidi programmazione “leggeri” (tools e linguaggi di scripting) che ricoprono un ruolo di “collante” tra applicazioni diverse.

Alcuni linguaggi di programmazione (Tcl/Tk, Python, Perl,…) hanno caratteristiche comuni con linguaggi di scripting puri (come le shell unix o powershell (o mingw/cygwin) su windows).

Per la visualizzazione invece, data la sua importanza e specificità,occorre una discussione a parte.

Page 19: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

scripting

I linguaggi di scripting automatizzano operazioni di trasformazione/preparazione dei dati e lancio di applicazioni, rendendone più semplice la ripetibilità ma anche la documentazione.

Conoscenza di tecniche di scripting e tools di manipolazione dei datisono utili (principalmente per il docente) ma non indispensabili nel laboratorio computazionale.

Page 20: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Visualizzazione

Non è impossibile costruire un proprio programma per visualizzare irisultati computazionali o inserire in un programma numerico le chiamate a librerie di visualizzazione più o meno integrate col linguaggio.Diverse possibilità multipiattaforma: linguaggi con grafica integrata (Java, Python, Tcl/Tk) o librerie di grafica (PGLplot, DISLIN,…) Tuttavia, la pratica computazionale richiede di poter tornare sull’ analisi dei dati in tempi successivi. L’ analisi dei dati è sempre un processo dinamico e investigativo in cui occorre poter modificare in tempo reale le modalità di visualizzazione e anche modificare al volo, in modo anche complesso, i dati originali.

Un approccio modulare, in cui la produzione dei dati è una fase nettamente separata da quella della loro analisi si rivela, alla lunga, più produttivo e più facilmente mantenibile nel tempo.

Page 21: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Strumenti di visualizzazionemultipiattaforma

Queste considerazioni motivano verso la scelta di uno strumento di visualizzazione che offra anche possibilità di modifica e fltro degli stessi dati.

Grafica 2D, alcune capacità 3D: gnuplot, xmgr/xmgrace

Modellizzazione di molecole: jmol

Page 22: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Per saperne di più

Linguaggi di programmazione (in generale):http://it.wikipedia.org/wiki/Linguaggio_di_programmazionehttp://it.wikipedia.org/wiki/Programmazione_orientata_agli_oggetti

Scripting:Bash: http://www.gnu.org/software/bash/Tcl/Tk: http://www.tcl.tk/Python: http://www.python.it/

Visualizzazione:Gnuplot: http://www.gnuplot.info/Xmgr/xmgrace http://plasma-gate.weizmann.ac.il/Grace/DISLIN: http://www.mps.mpg.de/dislin/PGPLOT: http://www.astro.caltech.edu/~tjp/pgplot/

Page 23: Il laboratorio di Fisica Computazionale: strumentazionepastore/master-tools.pdfIl laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università

Per saperne di più

Linguaggi di programmazione :C http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/C++ http://www.cplusplus.com/doc/tutorial/Fortran http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/fortran.htmlJava http://download.oracle.com/javase/tutorial/