Hybrid Parallel AD (Part 1/?) by jblueh · Pull Request #1214 · su2code/SU2

Proposed Changes

The goal of this PR is to establish AD support for the OpenMP features of SU2.

AD support in SU2 is provided by CoDiPack, which is coupled with MeDiPack for the differentiation of MPI. OpenMP support is added by coupling it in addition with OpDiLib so that all in all, hybrid parallel AD is achieved.

This involves at least the following steps.

  1. Incorporate OpDiLib into the AD workflow.
  2. Establish thread-safety and parallelization of the discrete adjoint code.
  3. Testing of hybrid parallel adjoints.
  4. Performance optimizations.

Related Work

OpenMP features introduced in #789, #824, #830, #834, #843, #861, #895, #975, #1178, possibly others

PR Checklist

  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with the '-Wall -Wextra -Wno-unused-parameter -Wno-empty-body' compiler flags, or simply --warnlevel=2 when using meson).
  • My contribution is commented and consistent with SU2 style.
  • I have added a test case that demonstrates my contribution, if necessary.
  • I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp) , if necessary.