4 Automatic differentiation is the primary means of obtaining analytic5 derivatives from a numerical model given as a computer program. There-6 fore, it is an essential productivity tool in numerous computational science7 and engineering domains. Computing gradients with the adjoint (also8 called reverse) mode via source transformation is a particularly beneficial9 but also challenging use of automatic differentiation. To date only ad10 hoc solutions for adjoint differentiation of MPI programs have been avail-11 able, forcing automatic differentiation tool users to reason about parallel12 communication dataflow and dependencies and manually develop adjoint13 communication code. Using the communication graph as a model we14 characterize the principal problems of adjoining the most frequently used15 communication idioms. We propose solutions to cover these idioms and16 consider the consequences for the MPI implementation, the MPI user and17 MPI-aware program analysis. The MIT gener...