  Computational fluid dynamics (CFD) requires a vast amount of compute cycles
on contemporary large-scale parallel computers. Hence, performance optimization
is a pivotal activity in this field of computational science. Not only does it
reduce the time to solution, but it also allows to minimize the energy
consumption. In this work we study performance optimizations for an
MPI-parallel lattice Boltzmann-based flow solver that uses a sparse lattice
representation with indirect addressing. First we describe how this indirect
addressing can be minimized in order to increase the single-core and chip-level
performance. Second, the communication overhead is reduced via appropriate
partitioning, but maintaining the single core performance improvements. Both
optimizations allow to run the solver at an operating point with minimal energy
consumption.
