Automatic differentiation of computer programs in a parallel computing environment