From de8a6f6ec5a0b90c773d57c5b7301ee12a71c3d2 Mon Sep 17 00:00:00 2001 From: Atell Krasnopolski Date: Fri, 14 Jun 2024 20:58:30 +0200 Subject: [PATCH] Add links to the "Introduction to Clang for Clad contributors" doc This commit updates the contributing guidelines and the developers documentation to have link to the newly created doc for beginner contributors. --- CONTRIBUTING.md | 7 +- .../source/_static/clad-flow-graph.png | Bin 0 -> 121947 bytes docs/userDocs/source/index.rst | 1 + .../source/user/DevelopersDocumentation.rst | 6 + ...IntroductionToClangForCladContributors.rst | 159 ++++++++++++++++++ 5 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 docs/userDocs/source/_static/clad-flow-graph.png create mode 100644 docs/userDocs/source/user/IntroductionToClangForCladContributors.rst diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dbb6d6177..1a665743e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,4 +69,9 @@ review quickly and successfully share several common traits: ### Developer Documentation We have documented several useful hints that usually help when addressing issues -as they come during developement time in our [developer documentation](https://clad.readthedocs.io/en/latest/user/DevelopersDocumentation.html). +as they come during developement time in our [developer documentation](https://clad.readthedocs.io/en/latest/user/DevelopersDocumentation.html). + +In case you are interested in seeing the big picture and are just getting +started with Clang, there is a document that might interest you: [Introduction to Clang for Clad contributors](https://clad.readthedocs.io/en/latest/user/IntroductionToClangForCladContributors.html). +It covers most of the basic concepts in Clang that Clad uses and describes the operation +of the latter with examples for newcomers specifically. diff --git a/docs/userDocs/source/_static/clad-flow-graph.png b/docs/userDocs/source/_static/clad-flow-graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72f7fe25f11065c9e19d785639dc5b38c27b90f3 GIT binary patch literal 121947 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 +In case you are interested in seeing the big picture and are just getting +started with Clang, there is a document that might help you: +`Introduction to Clang for Clad contributors `_. It covers +most of the basic concepts in Clang that Clad uses and describes the operation +of the latter with examples for newcomers specifically. + Clad's Tests ============ diff --git a/docs/userDocs/source/user/IntroductionToClangForCladContributors.rst b/docs/userDocs/source/user/IntroductionToClangForCladContributors.rst new file mode 100644 index 000000000..3464bdbf4 --- /dev/null +++ b/docs/userDocs/source/user/IntroductionToClangForCladContributors.rst @@ -0,0 +1,159 @@ +Introduction to Clang for Clad contributors +********************************************** + +Since there’s a lack of official documentation for the LLVM Clang, while the +existing docs are not meant to explain how to modify the Clang AST, we are +writing this text to help the newcomers get into the technical aspects of Clang +useful for contributing to Clad and manipulating the Clang AST in general. + +The big picture +================= +So, as you probably know, Clang is a compiler. More precisely, it is a compiler +front end that operates with the LLVM compiler backend. This means that the +code you're trying to compile will first be processed by Clang, which parses +the source code and performs initial processing before passing it to the LLVM +backend for optimisation and code generation. In this picture, Clad is an +extension for Clang to generate derivatives of C++ functions along the way. +That is, **Clad synthesises the code for the derivatives** while Clang is +processing the actual code you have written. + +The AST +========= +.. _clang::Expr: https://clang.llvm.org/doxygen/classclang_1_1ValueStmt__inherit__graph.png +.. |clang::Expr| replace:: ``clang::Expr`` +.. _clang::Decl: https://clang.llvm.org/doxygen/classclang_1_1Decl.html +.. |clang::Decl| replace:: ``clang::Decl`` +.. _clang::Stmt: https://clang.llvm.org/doxygen/classclang_1_1Stmt.html +.. |clang::Stmt| replace:: ``clang::Stmt`` +.. _clang::ValueStmt: https://clang.llvm.org/doxygen/classclang_1_1ValueStmt.html +.. |clang::ValueStmt| replace:: ``clang::ValueStmt`` +.. _clang::CompoundStmt: https://clang.llvm.org/doxygen/classclang_1_1CompoundStmt.html +.. |clang::CompoundStmt| replace:: ``clang::CompoundStmt`` + +Clang, parses the input code into an **Abstract Syntax Tree (AST)**. It is at +this stage that Clad operates as well. The nodes in the Clang AST represent +various constructs of the source code, including: **declarations, statements, +expressions**, etc. As one can guess from the name, **declarations (** +|clang::Decl|_ **)** represent places in the source code where something is +declared (a variable (clang::VarDecl), a function, etc.); **expressions (** +|clang::Expr|_ **)** are basically something that can be evaluated to a +meaningful value, for instance binary operations (``clang::BinaryOperator``) +like addition or comparison; **statements (** |clang::Stmt|_ **)** could be a +lot of different things, like loops (``clang::WhileStmt``), conditions +(``clang::IfStmt``), breaks, etc – pretty much anything you have in your code. +An important note is that declarations (``clang::Decl``) and statements +(``clang::Stmt``) are completely different classes (so, **a declaration is not +a statement**), but there’s a separate declaration statement class, +|clang::Decl|_, which describes a declaration statement to intertwine the +statements and declarations. An expression (``clang::Expr``), on the other +hand, is always a statement, since ``clang::Expr`` inherits from +|clang::ValueStmt|_ which, in turn, inherits from ``clang::Stmt`` and is a +statement. +Statements can be grouped into one with a compound statement +(|clang::CompoundStmt|_). + +Flow graph of Clad’s compilation +================================== +The graph below indicates the order of execution during compilation of the +source code. Clang offers some API functions that work as entry points to the +AST’s processing. These functions can be modified by the user and are invoked +by clang. In our case, Clad has altered these functions accordingly, in order +to compute and include the function’s gradient to the original source code. +`This source `__ helps to +distinguish the clang functions, their purpose and how they are connected. The +most useful ones are explained in better detail in later sections. + +.. figure:: ../_static/clad-flow-graph.png + :width: 850px + :align: center + +Identifying functions to derive +================================= +During parsing of the source code through ``HandleTopLevelDecl()``, a +``RecursiveASTVisitor`` is created. This visitor traverses the nodes by using +the equivalent ``Visit()`` functions. For instance, a call expression, which +corresponds to a function call node, is processed through ``VisitCallExpr()`` +etc. Clad distinguishes the functions related to a differentiation request by +annotating a compiler attribute that matches the first letter of the +differentiation method to be used (e.g. “G” for gradient function). This way, +when ``VisitCallExpr()`` is called upon those nodes, the differentiation +request is identified, initialised and added to a list. +Similarly, any statement supported by Clad has a corresponding ``Visit()`` +method. An if statement would be visited by ``VisitIfStmt()``, a return +statement by ``VisitReturnStmt()``, etc. The general rule is that the ``Visit`` +method is called ``Visit+the name of the statement in Clang``. + +Code generation and insertion +=============================== +After the parsing is completed and all differentiation requests have been +identified, the system can begin processing to compute the derived functions +through ``HandleTranslationUnit()``. A ``DerivativeBuilder`` is created and, +depending on the Clad function used and its corresponding mode (forward, +reverse, etc.), the appropriate ``Visitor`` is defined. The ``Visitor``’s +``Derive()`` method is invoked, which contains a nested call to +``DifferentiateWithClad()``. This triggers a secondary processing of the nodes +in the original function. +During this traversal, for each node encountered, the corresponding node in the +derived function is created and returned to the parent node. The parent node +then emplaces this newly created node into the current code block of the +derived function. This process repeats until the traversal reaches the top +level of the original function, resulting in the complete computation of the +derived function. +Once the derived function is fully computed, its declaration is created, +including the appropriate body and parameters. A reference to this derived +function is then added in ``updateCall()``, where the function to be returned +by ``clad::differentiate()`` / ``clad::gradient()`` is replaced with its +derivative. + +Statement differentiation +=========================== +Visit methods that we have just talked about earlier typically return a +``clad::StmtDiff`` object. This is a Clad’s structure, so you can find its +definition in the code and explore its methods. It is basically a type that +contains 4 values, each one being a pointer to a ``clang::Stmt``. Of these, the +following two values are crucial to understand: + +- ``clad::StmtDiff::getStmt()`` - this method gives you the statement contained + in this StmtDiff object. + +- ``clad::StmtDiff::getStmt_dx()`` - this method gives you the derivative of + the statement contained by this object. + +Let’s see how ``clang::NullStmt`` is handled in the reverse mode (reverse mode +differentiation is called by calling ``clad::gradient``) as an example. Since +the null statement (which you can have by writing ``;;`` at the end of a line +in the source code) represents an empty statement in Clang, it doesn’t really +affect the derivative in any way. So if this happens to be in the source code, +we just want to ignore it. In the reverse mode, Clad generates derivative +functions that consist of two parts: a forward pass and a reverse pass. Clad +produces a ``clad::StmtDiff`` object for each statement of the original +function where the object’s first part is what will be put in the forward pass +part of the produced derivative function and should basically do the same thing +as the original statement, whereas the object’s second part is basically the +derivative, which is put into the reverse pass. So, in the case of the null +statement, both of these should be nothing! Which is expressed by returning an +empty ``clad::StmtDiff`` from the visitor. + +.. code-block:: c++ + + StmtDiff VisitNullStmt(const clang::NullStmt* NS) { + return StmtDiff{}; + }; + +Less relevant notes +===================== +This section is not that important, but it’s just a bunch of facts that might +confuse a newcomer. + +- Clang AST might not seem like a tree (:D)! In a mathematical sense, a tree is + a graph without cycles. While the AST itself is intended to be a tree and + thus acyclic, practical considerations and additional structures can + introduce references that might resemble cycles. So, some recursive + constructs or templates in the source code might confuse you. + +- Clang can compile many C-like languages, specifically: C, C++, Objective-C, + and Objective-C++. So, if you look at the documentation, not only are you + going to see some general Clang classes and classes designed specifically for + C++ compilation (those mostly start with a CXX- prefix), but also things that + have an ObjC- prefix like ``clang::ObjCAtTryStmt`` that represent statements + of the Objective-C programming language that you likely don’t need.