Gitlab and workflow¶
Tapenade source repository is located here: https://gitlab.inria.fr/tapenade/tapenade.
Development uses the gitflow workflow.
master branch stores the official release history, and the
branch serves as an integration branch for features.
Continuous integration and tests¶
.gitlab-ci.yml configuration file for gitlab pipeline and
for Jenkins jobs.
Tapenade continuous integration workflow uses Sonarqube (PMD, Checkstyle, FindBugs) to check code quality.
./gradlew format reformats all java source files of Tapenade, using Tapenade code style conventions defined in
Convention, nomenclature on Tapenade variable names¶
“source”, “src”, should be used (rather than “orig”, “origin”) to refer to things that belong to the original, non-differentiated program.
“copy” should be used to refer to copies of the source objects that will be placed into the reverse differentiated code.
“reverse”, “rev”, should be used to refer to the reverse mode of AD, e.g. to the complete adjoint code and not only its backwards sweep.
“diff” should be used to relate to the general differentiated code, or specifically to its backward sweep if the forward sweep has a different thing for itself (ADJOINT_SPLIT_MODE). In this last case, the specific thing for the split forward sweep is referred to by “fwdDiff” instead of “diff”.
“origin”, “orig”, should be used to refer to the origin of a directed arrow, such as the “origin” of a FGArrow.
“destination”, “dest”, should be used to refer to the destination of a directed arrow, such as the “destination” of a FGArrow.
“forward”, “fwd”, should be used to refer to the forward sweep of a reverse-differentiated code.
“backward”, “bwd”, should be used to refer to the reverse sweep of a reverse-differentiated code.
“downstream”, “ds”, should be used to refer to the source execution direction that goes from entry to exit in the “source” program. In the bwd sweep, code is executed “upstream”.
“upstream”, “us”, should be used to refer to the opposite of the source execution direction that goes from exit to entry in the “source” program, and therefore goes along the execution direction of the bwd sweep.
“entry” refers to the true, final execution order of an object.
“exit” refers to the true, final execution order of an object. Therefore a Block or a sweep, regardless fwd or bwd, is always executed from entry to exit.