Discrete Adjoints On Many Cores : Algorithmic Differentiation Of Accelerated Fluid Simulations