  We present the new software OpDiLib, a universal add-on for classical
operator overloading AD tools that enables the automatic differentiation (AD)
of OpenMP parallelized code. With it, we establish support for OpenMP features
in a reverse mode operator overloading AD tool to an extent that was previously
only reported on in source transformation tools. We achieve this with an
event-based implementation ansatz that is unprecedented in AD. Combined with
modern OpenMP features around OMPT, we demonstrate how it can be used to
achieve differentiation without any additional modifications of the source
code; neither do we impose a priori restrictions on the data access patterns,
which makes OpDiLib highly applicable. For further performance optimizations,
restrictions like atomic updates on the adjoint variables can be lifted in a
fine-grained manner for any parts of the code. OpDiLib can also be applied in a
semi-automatic fashion via a macro interface, which supports compilers that do
not implement OMPT. In a detailed performance study, we demonstrate the
applicability of OpDiLib for a pure operator overloading approach in a hybrid
parallel environment. We quantify the cost of atomic updates on the adjoint
vector and showcase the speedup and scaling that can be achieved with the
different configurations of OpDiLib in both the forward and the reverse pass.
