Vai al contenuto principale
it

La partizione parallela cambia il risultato?

Non dovrebbe. Se lo fa, non è un errore di parallelizzazione ma il segno che la soluzione non è convergente.

Avete eseguito lo stesso problema su 16 e su 64 core e i risultati non coincidono. È frequente, ed è frequentemente diagnosticato male.

Comportamento atteso

La partizione del dominio non cambia le equazioni; decide soltanto quale processore calcola quale parte. Una soluzione convergente dovrebbe essere indipendente dal numero di partizioni.

Non sarà identica bit a bit: l'ordine delle somme in virgola mobile cambia con la partizione, e questo produce differenze nelle ultime cifre. Ma quella differenza resta a livello di parti per milione in una grandezza monitorata e non incide su una decisione ingegneristica.

Se la differenza è grande

1. La soluzione non è convergente. È di gran lunga la causa più comune. In una soluzione mezza convergente la differenza d'ordine di somma cresce e le due esecuzioni divergono. Si veda la nota sulla convergenza.

2. La fisica è transitoria. In un flusso caotico o oscillante i campi istantanei non coincidono comunque; ciò che va confrontato non è un valore istantaneo ma una media temporale.

3. Un confine di partizione attraversa una regione critica. Alcuni modelli (in particolare le funzioni di parete e certe chiusure multifase) hanno bisogno delle informazioni delle celle vicine. Se un confine di partizione taglia in pieno uno strato limite sottile o un'interfaccia di fase, può nascere incoerenza locale.

4. Un modello usa un seme casuale. Con l'iniezione di particelle o un generatore sintetico di turbolenza, il seme può dipendere dalla partizione.

Che cosa fare

Stringete prima la convergenza; di solito la differenza sparisce. Se non sparisce, fissate il numero di partizioni e dichiaratelo nella relazione — in uno studio di ottimizzazione la coerenza fra le esecuzioni conta più dell'accuratezza assoluta. Si veda la nota sui modelli surrogati.

Riferimenti

  1. Ferziger, J. H., Perić, M. & Street, R. L. (2020). Computational Methods for Fluid Dynamics, 4th ed. Springer. DOI: 10.1007/978-3-319-99693-6
  2. Celik, I. B., Ghia, U., Roache, P. J., Freitas, C. J., Coleman, H. & Raad, P. E. (2008). Procedure for estimation and reporting of uncertainty due to discretization in CFD applications. Journal of Fluids Engineering, 130(7), 078001. DOI: 10.1115/1.2960953

Parliamo del tuo progetto

Definiamo insieme il sistema da analizzare e la domanda a cui rispondere.

Parliamo del tuo progetto