Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

672 Add documentation #692

Merged
merged 195 commits into from
Jun 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
195 commits
Select commit Hold shift + click to select a range
471f6d6
#672: docs: start writing docs for AM, Context, overvie
lifflander Feb 5, 2020
24537a8
672: docs: add doc for async event
lifflander Feb 5, 2020
30ee1d1
#672: docs: add internal
lifflander Jun 15, 2020
e0c89ac
#672: scripts: remove doxygen by default
lifflander Jun 15, 2020
90b804f
#672: docs: cleanup fix some stylistic issues
lifflander Jun 16, 2020
e462160
#672: docs: write example of sending a message
lifflander Jun 16, 2020
be4a45f
#672: docs: more cleanup and fixes
lifflander Jun 16, 2020
44fc534
#672: docs: reference context component properly
lifflander Jun 16, 2020
344d3b1
#672: docs: add page of theCollective
lifflander Jun 16, 2020
257f6cd
#672: docs: write doxygen for collectives
lifflander Jun 16, 2020
191b538
#672: docs: write doxygen for reduction manager
lifflander Jun 16, 2020
304921d
#672: docs: write doxygen for reducers
lifflander Jun 16, 2020
9ca0fa5
#672: docs: write doxygen for scatter
lifflander Jun 16, 2020
cdee4a5
#672: docs: write doxygen for barriers
lifflander Jun 16, 2020
209125d
#672: docs: write doxygen for spanning trees
lifflander Jun 16, 2020
8316340
#672: docs: write event subpage
lifflander Jun 16, 2020
1a74f85
#672: docs: add doxygen for GroupManager
lifflander Jun 16, 2020
9100ad0
#672: docs: add docs for ObjGroupManager
lifflander Jun 16, 2020
248adb2
#672: docs: add docs for objgroup proxy
lifflander Jun 16, 2020
67d4352
#672: docs: add docs for objgroup proxy element
lifflander Jun 16, 2020
adf8861
#672: docs: add meta-docs for objgroup
lifflander Jun 16, 2020
9158c89
#672: docs: add examples to doxygen build
lifflander Jun 16, 2020
7d77570
#672: docs: generate snippet automatically for group
lifflander Jun 16, 2020
0875894
#672: docs: add doxy header for theParam
lifflander Jun 16, 2020
1ecd3fb
#672: docs: write docs for PipeManager
lifflander Jun 16, 2020
8c03e2e
#672: docs: add doxygen for PipeManager
lifflander Jun 16, 2020
b4a1086
#672: docs: add doxygen for Pool
lifflander Jun 17, 2020
ad0ac9e
#672: docs: add subpage for Pool
lifflander Jun 17, 2020
af32f32
#672: docs: remove internal from AM, it's intended for users
lifflander Jun 17, 2020
47f955e
#672: docs: add doxygen for RDMAManager
lifflander Jun 17, 2020
acdcdbf
#672: docs: add subpages for RDMA and Param as experimental
lifflander Jun 17, 2020
30c7bd5
#672: docs: fix some parameter names in doxygen
lifflander Jun 17, 2020
d79e622
#672: docs: add experimental tags
lifflander Jun 17, 2020
9c3c0d6
#672: docs: add RDMA handle
lifflander Jun 17, 2020
1fd41ff
#672: docs: add LICENSE
lifflander Jun 17, 2020
a958a4a
#672: docs: add registry doxygen
lifflander Jun 17, 2020
4f674e5
#672: docs: add registry markdown
lifflander Jun 17, 2020
52e53c3
#672: docs: add scheduler doxygen
lifflander Jun 17, 2020
e4aa075
#672: docs: add scheduler markdown
lifflander Jun 17, 2020
0d7f4f7
#672: docs: add sequencer doxygen
lifflander Jun 17, 2020
271dcad
#672: docs: add virtual sequencer doxygen
lifflander Jun 17, 2020
1ab13c1
#672: docs: add sequencer markdown
lifflander Jun 17, 2020
b259e3d
#672: docs: add virtual sequencer markdown
lifflander Jun 17, 2020
e3dacc5
#672: docs: add subpages to intro page
lifflander Jun 17, 2020
33bf4cc
#672: docs: write doxygen for TD
lifflander Jun 17, 2020
3fa4d93
#672: docs: write markdown about TD
lifflander Jun 18, 2020
fdc2708
#672: docs: write markdown about trace
lifflander Jun 18, 2020
f43dc03
#672: docs: write doxygen for trace
lifflander Jun 18, 2020
c6c82a6
#672: docs: add missing code section
lifflander Jun 18, 2020
b8875ff
#672: docs: add sections for term examples
lifflander Jun 18, 2020
597e74e
#672: docs: add doxygen for location management
lifflander Jun 18, 2020
cc8d069
#672: docs: add doxygen for lb manager
lifflander Jun 18, 2020
23b446e
#672: docs: add doxygen for proc stats
lifflander Jun 18, 2020
e892f43
#672: docs: add doxygen for restart reader
lifflander Jun 18, 2020
93ad9c3
#672: docs: add md for proc-stats
lifflander Jun 18, 2020
b943a89
#672: docs: add md for lb-manager
lifflander Jun 18, 2020
59b2020
#672: docs: add md for stats reader
lifflander Jun 18, 2020
d43b2f4
#672: docs: add md for location manager
lifflander Jun 18, 2020
b628c4f
#672: docs: add md for how to build
lifflander Jun 18, 2020
aa31e5b
#672: docs: write landing page
lifflander Jun 18, 2020
df34ac8
#672: docs: write collection markdown
lifflander Jun 18, 2020
7a4eda1
#672: docs: write collection doxygen
lifflander Jun 18, 2020
2b01d54
#672: docs: write collection holder doxygen
lifflander Jun 18, 2020
f196288
#672: docs: write collection inner holder doxygen
lifflander Jun 18, 2020
a251c98
#672: docs: write mem usage doxygen
lifflander Jun 18, 2020
e322a26
#672: docs: write mem usage markdown
lifflander Jun 18, 2020
4750bd3
#672: docs: write examples markdown
lifflander Jun 18, 2020
b13c11d
#672: docs: write learn markdown
lifflander Jun 18, 2020
f39af9c
#672: docs: write exmaple individual pages
lifflander Jun 18, 2020
0355da9
#672: docs: write tutorial markdown pages
lifflander Jun 18, 2020
87a71c3
#672: docs: update markdown
lifflander Jun 18, 2020
76b2761
#672: docs: move all md to its own folder
lifflander Jun 19, 2020
ef02d72
#672: docs: move example doxygen tags
lifflander Jun 19, 2020
ff135f5
#672: docs: move tutorial doxygen tags
lifflander Jun 19, 2020
0542499
#672: docs: fix tag, enhance tutorial
lifflander Jun 19, 2020
3405f5e
#672: docs: improve build docs
lifflander Jun 19, 2020
e5c1c20
#672: docs: add doxygen for runtime
lifflander Jun 19, 2020
9d94dc4
#672: docs: write meta-code for doxygen generation
lifflander Jun 19, 2020
bb4cdd2
#672: docs: fix a few bugs in the text
lifflander Jun 19, 2020
7924f4d
#672: docs: add section of REAME that refers to full docs
lifflander Jun 19, 2020
3d0b80d
#672: docs: add LB specification file explanation
lifflander Jun 19, 2020
31c7b9d
#672: docs: add trace specification file explanation
lifflander Jun 19, 2020
192f1b3
#672: docs: fix AM typo
lifflander Jun 19, 2020
71561a4
#672: docs: add runInEpochRooted to example
lifflander Jun 19, 2020
035f0f5
#672: docs: swap optional/required, fix std::thread reference
lifflander Jun 19, 2020
39bcab0
#672: docs: fixes to building.md
lifflander Jun 19, 2020
740a17f
#672: docs: fix collection text
lifflander Jun 19, 2020
b9499d3
#672: docs: move around learn pieces
lifflander Jun 19, 2020
2e249f7
#672: docs: use reduce msg ctor properly
lifflander Jun 19, 2020
455e299
#672: docs: add reduction operators
lifflander Jun 19, 2020
4dd502a
#672: docs: fix some mem usage
lifflander Jun 19, 2020
258ad0d
#672: docs: fix reduction operators (|) causing issues w table
lifflander Jun 19, 2020
010aec7
#672: docs: add mem pool size references
lifflander Jun 19, 2020
1945390
#672: docs: add paragraph about what proc stats does with data
lifflander Jun 19, 2020
cd0f381
#672: docs: add AM text
lifflander Jun 19, 2020
a82b6a8
#672: docs: clarify the flow from StatsRestartReader to LBAF and back
lifflander Jun 19, 2020
d61926a
#672: codacy: exclude docs from codacy
lifflander Jun 19, 2020
e11e61f
#672: docs: remove migrate collection as an linked example
lifflander Jun 19, 2020
4d448f5
#672: docs: improve barrier docs
lifflander Jun 19, 2020
ca54ae7
#672: docs: improve reduce docs
lifflander Jun 19, 2020
4e1d66f
#672: docs: chang time in trace
lifflander Jun 20, 2020
4cfbd8d
#672: docs: enclosing -> enclosed
lifflander Jun 20, 2020
57f60a8
#672: docs: improve description in holder
lifflander Jun 20, 2020
25f7353
#672: docs: improve return value docs
lifflander Jun 20, 2020
2fbed62
#672: docs: meta-date -> meta-data
lifflander Jun 20, 2020
d10d5cb
#672: docs: improve ProcStats docs
lifflander Jun 20, 2020
bff0b8c
#672: docs: make collective scope docs an example to claify
lifflander Jun 20, 2020
d89e641
#672: docs: improve scheduler priority sentence
lifflander Jun 20, 2020
0612c4c
#672: docs: add docs for higher-level scheduling calls
lifflander Jun 20, 2020
77022d8
#672: docs: fixes to text
lifflander Jun 20, 2020
0196d4e
#672: docs: modify TD text
lifflander Jun 20, 2020
b2e589f
#672: docs: remove DAG from text
lifflander Jun 20, 2020
88b9a1e
#672: docs: modify example program with done variable
lifflander Jun 20, 2020
972fd49
#672: docs: A -> An
lifflander Jun 21, 2020
c5a3f3c
#672: docs: add current to mem usage docs
lifflander Jun 21, 2020
a5e2184
#672: docs: its -> it's
lifflander Jun 21, 2020
a36bb07
#672: docs: improve imm_context explanation
lifflander Jun 21, 2020
eea30a6
#672: docs: its -> it's
lifflander Jun 21, 2020
dba96f6
#672: docs: A -> an
lifflander Jun 21, 2020
3fe27ed
#672: docs: explain root node
lifflander Jun 21, 2020
94611b4
#672: docs: explain recordStats better
lifflander Jun 21, 2020
b5429cb
#672: docs: explain idx better in reduceMsg
lifflander Jun 21, 2020
4c4a732
#672: docs: explain reduceMsgExpr better
lifflander Jun 21, 2020
f60e646
#672: docs: explain instrument better
lifflander Jun 21, 2020
b6af5bd
#672: docs: fix typo
lifflander Jun 21, 2020
53425c1
#672: docs: explain LB message
lifflander Jun 21, 2020
41f1b87
#672: docs: improve destroyMatching
lifflander Jun 21, 2020
0fb0cbc
#672: docs: fix typo
lifflander Jun 21, 2020
042aaeb
#672: docs: improve schedule docs
lifflander Jun 21, 2020
c8298a5
#672: docs: improve insert call
lifflander Jun 21, 2020
fcab04f
#672: docs: re-phase warning about migration
lifflander Jun 21, 2020
462ef6b
#672: vrt coll: remove function never called
lifflander Jun 21, 2020
cfdde4d
#672: vrt coll: improve curIdent_ docs
lifflander Jun 21, 2020
8494feb
#672: docs: that -> than
lifflander Jun 21, 2020
34f20de
#672: docs: that -> than (more of them)
lifflander Jun 21, 2020
b61f489
#672: docs: explain event ID
lifflander Jun 21, 2020
08fa877
#672: docs: clarify event type
lifflander Jun 21, 2020
2cb4dc4
#672: docs: progressing -> processing
lifflander Jun 21, 2020
819bfad
#672: docs: fix more typos
lifflander Jun 21, 2020
ce22745
#672: docs: clarify
lifflander Jun 21, 2020
e167ad1
#672: docs: fix double slash
lifflander Jun 21, 2020
b13633d
#672: docs: clarify when flush occurs
lifflander Jun 21, 2020
5e7b064
#672: trace: rename "timeToInt" -> "timeToMicros"
lifflander Jun 21, 2020
e25282e
#672: docs: fix word order
lifflander Jun 21, 2020
dee7306
#672: docs: clarify scope
lifflander Jun 21, 2020
77dc6e1
#672: docs: remove impl details
lifflander Jun 21, 2020
9871ae5
#672: docs: clarify scatter lifetime
lifflander Jun 21, 2020
ecd6ca4
#672: docs: clarify node
lifflander Jun 21, 2020
9ef8da4
#672: docs: clarify descendents
lifflander Jun 21, 2020
935ea1c
#672: docs: fix typo
lifflander Jun 21, 2020
507124f
#672: docs: clarify group comm
lifflander Jun 21, 2020
1eacdfc
#672: docs: fix bug in docs
lifflander Jun 21, 2020
bf833b1
#672: docs: switch to output
lifflander Jun 21, 2020
06b7b16
#672: docs: singular -> single
lifflander Jun 21, 2020
083fcfd
#672: docs: remove text
lifflander Jun 21, 2020
ec7686e
#672: docs: remove old comment
lifflander Jun 21, 2020
71b1f64
#672: docs: explain what happens when object doesn't exist
lifflander Jun 21, 2020
3d7bb8b
#672: docs: explain what happens if pointer is invalid
lifflander Jun 21, 2020
25f7c42
#672: docs: clarify identity
lifflander Jun 21, 2020
1daff33
#672: docs: add warning about downcast/upcast
lifflander Jun 21, 2020
9a868df
#672: docs: add more warnings about downcast/upcast
lifflander Jun 21, 2020
54460f3
#672: docs: fix offset
lifflander Jun 21, 2020
5b3aa39
#672: docs: clarify direct_message_send
lifflander Jun 21, 2020
894ba90
#672: docs: clarify offset
lifflander Jun 21, 2020
a055f98
#672: docs: update liveness runtime condition
lifflander Jun 21, 2020
304bfbe
#672: docs: update return value
lifflander Jun 21, 2020
c5ba68d
#672: runtime: fix spelling in method of "isFinalizable"
lifflander Jun 21, 2020
dd9cf6e
#672: docs: update comments
lifflander Jun 21, 2020
37944eb
#672: docs: a -> and
lifflander Jun 21, 2020
aad56cc
#672: docs: add warning and todo for systemSync
lifflander Jun 21, 2020
0a326d3
#672: docs: update sched docs
lifflander Jun 21, 2020
9be259e
#672: docs: say default_priority
lifflander Jun 21, 2020
ce067d8
#672: docs: fix typo
lifflander Jun 21, 2020
3a3ff38
#672: docs: add internal to isIdleMinusTerm
lifflander Jun 21, 2020
21af454
#672: docs: add todo for emigrate and update docs
lifflander Jun 21, 2020
0a0772f
#672: docs: remove empty comment
lifflander Jun 21, 2020
e5571c8
#672: docs: fix todo in locman
lifflander Jun 21, 2020
9191f40
#672: docs: fix stray period, make it a real note
lifflander Jun 21, 2020
5f64413
#672: docs: fix typo
lifflander Jun 21, 2020
0b54bc6
#672: docs: improve resolved_node
lifflander Jun 21, 2020
e5bcb83
#672: docs: add purported location
lifflander Jun 21, 2020
05e4c26
#672: docs: a -> an
lifflander Jun 21, 2020
5f65549
#672: docs: explain produce/consume a little better
lifflander Jun 21, 2020
b86d5d5
#672: docs: improve closure description
lifflander Jun 21, 2020
20aeac9
#672: docs: improve finishedEpoch/finishNoActivateEpoch
lifflander Jun 21, 2020
a932e1d
#672: docs: convert two missed calls to doxygen
lifflander Jun 21, 2020
a73e91c
#672: docs: fix missing "not" in location.md
lifflander Jun 21, 2020
f4cdf5e
#672: docs: fix more typos in TD
lifflander Jun 22, 2020
ae27569
#672: docs: clarify tree descendant node inclusion
lifflander Jun 22, 2020
9d05fc3
#672: docs: clarify scatter parameters
lifflander Jun 22, 2020
b606a19
#672: docs: remove redundant building info in README.md
lifflander Jun 22, 2020
4d55fa1
#672: docs: switch building docs to use 0/1 to clarify
lifflander Jun 22, 2020
8c2d20a
#672: docs: fix typo: 'node' -> 'modes'
lifflander Jun 22, 2020
bff746a
#672: docs: fix typo: 'as' -> 'has'
lifflander Jun 22, 2020
c89d331
#672: docs: fix typo: 'whether' -> 'whereever'
lifflander Jun 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codacy.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
exclude_paths:
- 'tests/extern/**'
- 'lib/**/*'
- 'docs/**/*'
129 changes: 9 additions & 120 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,126 +29,15 @@ they can be automatically migrated and thereby executed on varying hardware
resources without explicit programmer mapping, location, and communication
management.

## Building

*vt* can be built with `cmake` or built inside a `docker` container.

To build *vt*, one must obtain the following dependencies:

### Optional:

#### If threading is enabled:
- OpenMP _or_
- `std::thread`s (default to from C++ compiler)

#### Required:
- detector, (*vt* ecosystem)
- checkpoint, (*vt* ecosystem)
- MPI (mpich/openmpi/mvapich/IBM Spectrum MPI/Cray MPICH/etc.)

### Automatically build dependencies

Assuming MPI is installed and accessible via CC/CXX, the only other dependencies
that are required are checkpoint and detector. The easiest way to get these
built are to clone them inside `vt/lib`:

```bash
$ git clone git@github.com:DARMA-tasking/vt
$ cd vt/lib
$ git clone git@github.com:DARMA-tasking/checkpoint
$ git clone git@github.com:DARMA-tasking/detector
```

With these in `vt/lib`, cmake will automatically build them and stitch them into
*vt*'s linking process.

Instead of running `cmake`, one may invoke the `vt/ci/build_cpp.sh` script which
will run `cmake` for *vt* with environment variables for most configuration
parameters.

#### Environment Variables

| Variable | Default Value | Description |
| ------------------ | --------------- | ----------- |
| `CMAKE_BUILD_TYPE` | Release | The `cmake` build type |
| `VT_LB_ENABLED` | ON | Enable compile-time load balancing support |
| `VT_TRACE_ENABLED ` | OFF | Enable compile-time tracing support |
| `VT_TRACE_RUNTIME_ENABLED ` | OFF | Force tracing on at runtime (used in CI for automatically testing tracing on all tests/examples) |
| `VT_DOXYGEN_ENABLED ` | OFF | Enable doxygen generation |
| `VT_MIMALLOC_ENABLED ` | OFF | Enable `mimalloc`, alternative allocator for debugging memory usage/frees/corruption |
| `VT_ASAN_ENABLED ` | OFF | Enable building with address sanitizer |
| `VT_POOL_ENABLED ` | ON | Use memory pool in *vt* for message allocation |
| `VT_ZOLTAN_ENABLED ` | OFF | Build with Zoltan enabled for `ZoltanLB` support |
| `ZOLTAN_DIR ` | (empty) | Directory pointing to Zoltan installation |
| `VT_MPI_GUARD_ENABLED ` | OFF | Enable compile-time load balancing support |

With these set, invoke the script with two arguments: the path to the *vt* root directory and the build path. Here's an example assuming that *vt* is cloned into `/usr/src/vt` with trace enabled in debug mode.

**Usage for building:**
## Read the documentation

```bash
$ vt/ci/build_cpp.sh <full-path-to-vt-source> <full-path-to-build-dir>
```
To learn *vt*, read the [full
documentation](https://darma-tasking.github.io/docs/html/index.html) that is
automatically generated whenever a push occurs to "develop". It includes a
walk-though of the tutorial and a overview of the components that make up a *vt*
runtime.

**Example:**

```bash
$ cd /usr/src
$ git clone git@github.com:DARMA-tasking/vt
$ VT_TRACE_ENABLED=1 CMAKE_BUILD_TYPE=Debug /usr/src/vt/ci/build_cpp.sh /usr/src/vt /usr/build/vt
```

### Building with `docker` containerization

The easiest way to build *vt* is by using `docker` with the available containers that contain the proper compilers, MPI, and all other dependencies. First, install `docker` on the system. On some systems, `docker-compose` might also need to be installed.

The `docker` builds are configured through `docker-compose` to use a shared, cached filesystem mount with the host for `ccache` to enable fast re-builds.

For `docker-compose`, the following variables can be set to configure the build. One may configure the architecture, compiler type and version, Linux distro (ubuntu or alpine), and distro version.

```
# Variables:
# ARCH={amd64, arm64v8, ...}
# COMPILER_TYPE={gnu, clang}
# COMPILER={gcc-5, gcc-6, gcc-7, gcc-8, gcc-9, gcc-10,
# clang-3.9, clang-4.0, clang-5.0, clang-6.0, clang-7, clang-8,
# clang-9, clang-10}
# REPO=lifflander1/vt
# UBUNTU={18.04, 20.04}
# ULIMIT_CORE=0
#
# DARMA/vt Configuration Variables:
# VT_LB=1 # Enable load balancing
# VT_TRACE=0 # Enable tracing
# VT_MIMALLOC=0 # Enable mimalloc memory allocator
# VT_DOCS=0 # Enable doxygen build
# VT_TRACE_RT=0 # Enable tracing at runtime (for testing)
# VT_ASAN=0 # Enable address sanitizer
# BUILD_TYPE=release # CMake build type
```

With these set, run the following for a non-interactive build:

```bash
$ cd vt
$ docker-compose run -e BUILD_TYPE=debug -e VT_TRACE=1 ubuntu-cpp
```

For an interactive build, where one can build, debug, and run `valgrind`, etc:

```bash
$ cd vt
$ docker-compose run -e BUILD_TYPE=debug -e VT_TRACE=1 ubuntu-cpp-interactive
$ /vt/ci/build_cpp.sh /vt /build
$ /vt/ci/test_cpp.sh /vt /build
```

For more detailed information on configuring the docker build, read the documentation in `vt/docker-compose.yml`.

## Testing

After *vt* is built succesfully, one may invoke the tests several ways. One may run `make test` or `ninja test` (depending on the generator used) or `ctest`, to run all the tests. Alternatively, the tests can be run automatically from the CI script:
## Building

```bash
$ vt/ci/test_cpp.sh <full-path-to-vt-source> <full-path-to-build-dir>
```
[Learn how to build](https://darma-tasking.github.io/docs/html/vt-build.html)
*vt* with `cmake` or `docker`.
8 changes: 8 additions & 0 deletions cmake/load_doxygen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,16 @@ if (${vt_doxygen_enabled})
set(doxygen_in ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in)
set(doxygen_out ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)

set(DOXYGEN_PROJECT_NAME "vt")
set(VERSION_MAJOR "1")
set(VERSION_MINOR "0")
set(VERSION_PATCH "0")
set(DOXYGEN_INPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/")
set(DOXYGEN_DOCS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/docs/")
set(DOXYGEN_EXAMPLE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/examples/")
set(DOXYGEN_TUTORIAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tutorial/")
set(DOXYGEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/docs/")
set(DOXYGEN_MAIN_PAGE "${CMAKE_CURRENT_SOURCE_DIR}/src/vt.md")
set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml)

configure_file(${doxygen_in} ${doxygen_out} @ONLY)
Expand Down
18 changes: 10 additions & 8 deletions docs/Doxyfile.in
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME = "@CMAKE_PROJECT_NAME@"
PROJECT_NAME = "@DOXYGEN_PROJECT_NAME@"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
Expand All @@ -44,7 +44,7 @@ PROJECT_NUMBER = @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF =
PROJECT_BRIEF = "(Virtual Transport)"

# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
Expand Down Expand Up @@ -464,7 +464,7 @@ EXTRACT_ALL = NO
# be included in the documentation.
# The default value is: NO.

EXTRACT_PRIVATE = NO
EXTRACT_PRIVATE = YES

# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
Expand Down Expand Up @@ -814,7 +814,8 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT = "@DOXYGEN_INPUT_DIR@"
INPUT = "@DOXYGEN_INPUT_DIR@" \
"@DOXYGEN_DOCS_DIR@"

# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
Expand Down Expand Up @@ -931,21 +932,22 @@ EXCLUDE_SYMBOLS =
# that contain example code fragments that are included (see the \include
# command).

EXAMPLE_PATH =
EXAMPLE_PATH = "@DOXYGEN_EXAMPLE_DIR@" \
"@DOXYGEN_TUTORIAL_DIR@"

# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.

EXAMPLE_PATTERNS = *
EXAMPLE_PATTERNS =

# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.

EXAMPLE_RECURSIVE = NO
EXAMPLE_RECURSIVE = YES

# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
Expand Down Expand Up @@ -1007,7 +1009,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.

USE_MDFILE_AS_MAINPAGE = @doxy_main_page@
USE_MDFILE_AS_MAINPAGE = "@DOXYGEN_MAIN_PAGE@"

#---------------------------------------------------------------------------
# Configuration options related to source browsing
Expand Down
29 changes: 27 additions & 2 deletions docs/Doxyfile.in-mcss
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
@INCLUDE = Doxyfile
GENERATE_HTML = YES
GENERATE_XML = YES
XML_PROGRAMLISTING = NO
XML_PROGRAMLISTING = YES
M_SHOW_UNDOCUMENTED = YES
EXTRACT_ALL = YES
EXTRACT_ALL = YES

M_LINKS_NAVBAR1 = \
"introduction context active-messenger collection collective group location objgroup pipe pool rdmahandle registry scheduler term trace" \
"learn vt-build tutorial examples" \
"pages" \
"namespaces namespacevt namespacevt_1_1collective namespacevt_1_1debug namespacevt_1_1group namespacevt_1_1location namespacevt_1_1messaging namespacevt_1_1objgroup namespacevt_1_1pipe namespacevt_1_1rdma namespacevt_1_1runtime namespacevt_1_1term namespacevt_1_1vrt"

M_LINKS_NAVBAR2 = \
"annotated" \
"files" \
"<a href=\"https://github.com/DARMA-tasking/vt\">GitHub</a> <a href=\"https://github.com/DARMA-tasking/checkpoint\">Checkpoint</a> <a href=\"https://github.com/DARMA-tasking/detector\">Detector</a> <a href=\"https://github.com/DARMA-tasking/LB-analysis-framework\">LBAF</a> <a href=\"https://github.com/DARMA-tasking/checkpoint-member-analyzer\">Checkpoint Analyzer</a> <a href=\"https://github.com/DARMA-tasking/DARMA-tasking.github.io\">Documentation</a>"


ALIASES += \
"vt=<b><i>vt</i></b>" \
"m_div{1}=@xmlonly<mcss:div xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\">@endxmlonly" \
"m_enddiv=@xmlonly</mcss:div>@endxmlonly" \
"m_span{1}=@xmlonly<mcss:span xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\">@endxmlonly" \
"m_endspan=@xmlonly</mcss:span>@endxmlonly" \
"m_class{1}=@xmlonly<mcss:class xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\" />@endxmlonly" \
"m_footernavigation=@xmlonly<mcss:footernavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" />@endxmlonly" \
"m_examplenavigation{2}=@xmlonly<mcss:examplenavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:page=\"\1\" mcss:prefix=\"\2\" />@endxmlonly" \
"m_keywords{1}=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:keywords=\"\1\" />@endxmlonly" \
"m_keyword{3}=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:keyword=\"\1\" mcss:title=\"\2\" mcss:suffix-length=\"\3\" />@endxmlonly" \
"m_enum_values_as_keywords=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:enum-values-as-keywords=\"true\" />@endxmlonly"
95 changes: 95 additions & 0 deletions docs/md/active-messenger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@

\page active-messenger Active Messenger
\brief Asynchronous send/receive of messages

The active messenger `vt::messaging::ActiveMessenger`, accessed via
`vt::theMsg()`, asynchronously sends and receives messages across nodes using
MPI internally. When sending a message, it uses the \vt registry to consistently
dispatch messages and data to handlers (function pointers, functors, or methods)
across nodes.

Each message contains an envelope `vt::Envelope` to store meta-data associated
with the message, such as the destination and handler to trigger when it
arrives. Sending a message entails setting up the envelope, optionally
serializing the message (depending on whether the serialize overload is
present), and then using `MPI_Isend` to asynchronously transfer the bytes to the
destination node. On the receive side, the active messenger is always probing
for an incoming message and begins a transfer when it discovers one. The \vt
\subpage{scheduler} polls the active messenger to make progress on any incoming
messages.

\section am-simple-example Sending a message

\code{.cpp}
#include <vt/transport.h>

#include <vector>

// Declare a serializable message
struct MyMsg : vt::Message {
using MessageParentType = vt::Message;
vt_msg_serialize_required(); // for vector

MyMsg() = default; // default constructor for de-serialize
MyMsg(int in_val, std::vector<double> const& in_vec)
: val(in_val),
my_vec(in_vec)
{ }

template <typename SerializerT>
void serialize(SerializerT& s) {
MessageParentType::serialize(s);
s | val;
s | my_vec;
}

int val = 0;
std::vector<double> my_vec;
};

// Active function pointer
void myHandler(MyMsg* m) {
vt::NodeType this_node = vt::theContext()->getNode();
fmt::print("{}: val={}, vec size={}\n", this_node, m->val, m->my_vec.size());
}

// Active functor
struct MyFunctor {
void operator()(MyMsg* m) {
vt::NodeType this_node = vt::theContext()->getNode();
fmt::print("{}: val={}, vec size={}\n", this_node, m->val, m->my_vec.size());
}
};

int main(int argc, char** argv) {
vt::initialize(argc, argv);

vt::NodeType this_node = vt::theContext()->getNode();

if (this_node == 0) {
// spins in scheduler until termination of the enclosed work
vt::runInEpochRooted([=]{
std::vector<double> vec_to_send;
vec_to_send.push_back(29.);
vec_to_send.push_back(54.);

auto msg = vt::makeMessage<MyMsg>(10, vec_to_send);
vt::theMsg()->sendMsg<MyMsg, myHandler>(1, msg.get()); // send to node 1

auto msg2 = vt::makeMessage<MyMsg>(11, vec_to_send);
vt::theMsg()->sendMsg<MyFunctor>(1, msg2.get()); // send to node 1
});
}

vt::finalize();
return 0;
}

\endcode

Program output:

\code{.shell-session}
1: val=10, vec size=2
1: val=11, vec size=2
\endcode
Loading