Algorithmic differentiation of pragma-defined parallel regions : Differentiating computer programs containing OpenMP.