Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
N-body problem
Calcolo Parallelo
Analisi soluzione proposta
Stefano Ricchiuti
stefano_ricchiuti@hotmail.com
Aprile 2014
Outline
Codice sorgente
Modalit di test
Risultati
Codice sorgente
driver.c
view
Main, interfaccia,
MPI
NBody.c
view
Funzioni, back-end
NBody.h
view
Include, define,
strutture dati
Codice sorgente
Struttura principale
- MPI Init
Inizializzazione parametri MPI (rank processo, n. processi), datatype aggiuntivi
- N-Body Init
Caricamento da file, allocazione statica strutture dati, assegnazione
responsabilit processi
- N-Body
Calcolo dellinterazione gravitazionale e dellenergia complessiva,
aggiornamento velocit e posizione
hile:
w
o
d
- Sync
>
s
p
ste
Scambio delle informazioni tra i processi
Codice sorgente
MPI Init
Codice sorgente
N-Body init
Codice sorgente
Responsabilit processi
Esempio
N=7, m=3, q=2, r=1
vettori velocit
(posizione)
x
y
Per il processo i
se i < r
first : i (q+1)
offset : q + 1
altrimenti
first : i q + r
offset : q
int first
= {0,3,4}
proc.
#1
proc.
#2
Codice sorgente
N-Body
Codice sorgente
N-Body - Sincronizzazione
Send / Receive
Codice sorgente
N-Body - Sincronizzazione
Start address
esempio per N = 7 m = 3
#0
#1
#2
// proc. resp.
6 * double
pos x
pos y
pos z
vel x
Per il processo # 1 :
send_start_addr = &posVel[first[ 1 ] * 6]
vel y
vel z
Codice sorgente
Verifica correttezza
Conservazione dellenergia
- Per ogni corpo, la somma tra energia potenziale gravitazionale ed energia cinetica deve
essere costante
- Errore legato allapprossimazione introdotta dal moto rettilineo uniformemente
accelerato e dalla risoluzione temporale
Verifica funzionale
- Riproduzione di un sistema solare e
verifica del comportamento dei corpi
Test
Modalit di test
- File di input
Sistema pseudo-solare collision-free, generato da script
risultati
Test
pi processi
pi messaggi
Test
Speed-up
progressivo:
2
16
49.74%
49.39%
47.63%
46.88%
Test
(ovvie) Conclusioni
Send/Receive
- comunicazione point-to-point
- numero di messaggi per end-point limitato
- NBody: necessit di strategie o protocollo
Global comm.
- routine ottimizzate per traffico elevato
- meno codice -> minor probabilit di errore
- gestione strutture dati complesse