210 likes | 363 Views
Fire Benchmark Parallelisation. Programming of Supercomputers WS 11/12 Sam Maurus. What is Fire Benchmark?. CFD solver for arbitrary geometries This project concerned itself with the gccg solver. How Fast is Fire Benchmark Sequentially?. What effect does the input file-format have?.
E N D
Fire Benchmark Parallelisation Programming of Supercomputers WS 11/12 Sam Maurus
What is Fire Benchmark? • CFD solver for arbitrary geometries • This project concerned itself with the gccg solver
Data structures in gccg Points Elements
Data structures in gccg z y ( x points array
Data structures in gccg elems array
Data structures in gccg lcc array
Data distribution approach Process 0 (root) Process 1 • Root Process Tasks: • Read input file • Partition elements using chosen approach • Create and send relevant mapping arrays to each processes • Broadcast common data package to each processor Process 2 Process 3 = lcc, ne, epart, countPart, bs_local, be_local…
Communication model P3 P3 has_ghost_neighbour = 0 has_ghost_neighbour = 1 P3 P3 P3 P5 P3 P3 has_ghost_neighbour array
… Communication model Process 0 Process 1 Process k (k = count) Process x • Computational loop, phase one: • Start Isend to required processes (where cellCountsToSend[i] > 0) • Start Irecv from required processes (where cellCountsToRecv[i] > 0) • Process local elements that have no ghost neighbours • Wait on all requests • Update remaining local elements
Problems overcome MPI_WAIT FUNCTION • Problem:MPI_Wait was being executed both for the send and receive requests for every element processed • Solution:has_ghost_neighbour array introduced, allowing for intermediate computation. MPI_Wait then only called once for each request. BEFORE AFTER
Problems overcome REDUNDANT REPROCESSING OF INPUT FILE • Problem: Input file was being read once at initialisation and again for writing the result (redundant) • Solution: ‘Write solution’ code was refactored to re-use the relevant file information obtained from the first read BEFORE AFTER
Thanks for listening • Discussion time!