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

Updating docs for 22.04 #566

Merged
merged 158 commits into from
Mar 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
158 commits
Select commit Hold shift + click to select a range
60e7c2a
Adding pylibraft
cjnolet Mar 2, 2022
54cac54
Adding distance
cjnolet Mar 2, 2022
f1b502a
More infrastructure stuff
cjnolet Mar 2, 2022
555433b
Updating year
cjnolet Mar 2, 2022
4b448f5
Adding missing copyright headers
cjnolet Mar 2, 2022
f9aa8bc
More style
cjnolet Mar 2, 2022
9c72b7a
Proper formatting
cjnolet Mar 2, 2022
2c278ab
Updating setup
cjnolet Mar 2, 2022
c021445
Rename
cjnolet Mar 2, 2022
8de62fe
Adding rmm dependency
cjnolet Mar 2, 2022
6e5499f
Updating gitignore
cjnolet Mar 2, 2022
7fc834e
Updates
cjnolet Mar 2, 2022
401c167
adding raft_runtime public includes
cjnolet Mar 8, 2022
cb40df9
Toy example
cjnolet Mar 8, 2022
a5cea8e
Making raft::runtime the core dependency and having all other targets
cjnolet Mar 8, 2022
4322d0b
fixing style
cjnolet Mar 8, 2022
8ae80ad
Almost there...
cjnolet Mar 8, 2022
4bfde36
COpyright year
cjnolet Mar 8, 2022
6306b7b
Updating mdspan copyright
cjnolet Mar 8, 2022
b06f8e6
Fixing doxygen
cjnolet Mar 9, 2022
f4387b6
CHanging conda package to libraft-runtime so libraft-headers won't be
cjnolet Mar 9, 2022
6a92f19
Update copyrightys
cjnolet Mar 9, 2022
831fe81
MOving runtime headers into corresponding directories
cjnolet Mar 9, 2022
0fc02ca
Updating style
cjnolet Mar 9, 2022
e8ba5a1
Removing todos
cjnolet Mar 9, 2022
4a13200
updating readme
cjnolet Mar 9, 2022
8583386
Adding docs for the raft_export INSTALL_FILES option
cjnolet Mar 9, 2022
d518ba7
Updating build.md
cjnolet Mar 9, 2022
00e8a69
Merge branch 'branch-22.04' into fea-2204-pylibraft
cjnolet Mar 9, 2022
54df7de
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 9, 2022
5f6f1eb
pylibraft is compiling!
cjnolet Mar 9, 2022
bd42373
Fixing style
cjnolet Mar 9, 2022
084975c
Fixing cython style
cjnolet Mar 9, 2022
1bb7fb5
Fixing cpp style
cjnolet Mar 9, 2022
fb48427
Updating conda package to use raft-runtime instead of raft-headers
cjnolet Mar 9, 2022
aaa72e4
adding logging.
cjnolet Mar 9, 2022
b2bfe6c
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-ra…
cjnolet Mar 9, 2022
939fd01
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-py…
cjnolet Mar 9, 2022
d34cdf7
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 9, 2022
fba7769
Adding libraft-distance to build-time dependency for pylibraft
cjnolet Mar 9, 2022
4fc06e6
Adding libraft-distance to gpu build
cjnolet Mar 10, 2022
c6a326a
Explicity building pylibraft
cjnolet Mar 10, 2022
271b38b
Updating docs
cjnolet Mar 10, 2022
f482b67
Updates
cjnolet Mar 10, 2022
6fa6cd9
Updates
cjnolet Mar 10, 2022
f312042
Updating runtime target
cjnolet Mar 10, 2022
a4cad22
Updates
cjnolet Mar 10, 2022
8ccd270
exporting raft-exports
cjnolet Mar 10, 2022
6467705
Using raft::headers and raft::raft instead of raft::runtimne and raft…
cjnolet Mar 10, 2022
802b2f2
updting coipyright fir get_gtest
cjnolet Mar 10, 2022
7ec1100
Exorting rmm through raft-headers-exports
cjnolet Mar 10, 2022
e1edba4
Properlyu setting RAFT_LINK_LIBS
cjnolet Mar 10, 2022
12ddb51
Still working out kinks w/ headers
cjnolet Mar 10, 2022
5bbc377
Adding headers as another component
cjnolet Mar 10, 2022
869bb36
Always adding headers to components
cjnolet Mar 10, 2022
869cfce
Headers ad top-level
cjnolet Mar 11, 2022
067ea7c
Using proper name
cjnolet Mar 11, 2022
20b4053
Exporting headers
cjnolet Mar 11, 2022
a301de4
Sending rmm to raft-exports
cjnolet Mar 11, 2022
339b8b6
Adding headers to test-raft links
cjnolet Mar 11, 2022
b978436
BUilding docs last
cjnolet Mar 11, 2022
230bcff
Docs to use proper raft path
cjnolet Mar 11, 2022
36ee5dc
Adding test in pylibraft
cjnolet Mar 11, 2022
50adc87
Removing pylibraft from docs build for now
cjnolet Mar 11, 2022
2a90fc8
Updating cmkelists
cjnolet Mar 11, 2022
882a3f0
updating cmake
cjnolet Mar 11, 2022
7f10eab
Removign missing file
cjnolet Mar 11, 2022
140d13e
Updating copyright
cjnolet Mar 11, 2022
fdf9c74
Merge branch 'branch-22.04' into fea-2204-raft_runtime
cjnolet Mar 11, 2022
3b3ad45
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-ra…
cjnolet Mar 11, 2022
1bf61fa
Updating README to describe the multiple components.
cjnolet Mar 11, 2022
c272d46
A coupel more update
cjnolet Mar 11, 2022
1ee3ac2
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-ra…
cjnolet Mar 11, 2022
e67d014
more updates to build docs.
cjnolet Mar 11, 2022
58546fd
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 11, 2022
731bf6f
Fixing bad merge
cjnolet Mar 11, 2022
55c3896
Troubleshooting lib linking issue
cjnolet Mar 12, 2022
6d09114
Printing out conda env
cjnolet Mar 12, 2022
2abd560
Adding raft build dir to ld path
cjnolet Mar 12, 2022
7deacf5
Still debugging why libraft* is not being added to ld path in gpu build
cjnolet Mar 12, 2022
439d82d
Still trying to figure out where raft cpp artifacts are installed
cjnolet Mar 13, 2022
c0ee958
Still trying to figure out what directories are available
cjnolet Mar 13, 2022
73ba48f
Adding work dirs back
cjnolet Mar 13, 2022
39394c6
Printing out all children of /ci/artifacts/raft
cjnolet Mar 13, 2022
f263dde
Installing libraft-* conda packages from previous job
cjnolet Mar 13, 2022
a5eb563
Renaming raft runtime -> client api
cjnolet Mar 14, 2022
b792831
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
6f98b72
Checking in changes. Test runs but results are not corre
cjnolet Mar 14, 2022
57399bc
and... tests are passing
cjnolet Mar 14, 2022
01a0b52
Support for double precision
cjnolet Mar 14, 2022
742eea8
Fixing style
cjnolet Mar 14, 2022
f03fac3
Changing libraft_client_api to libraft_frontend
cjnolet Mar 14, 2022
117dd5d
Rename client-api -> frontend
cjnolet Mar 14, 2022
91805ec
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
078322e
More doc updates
cjnolet Mar 14, 2022
1bc2031
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
2c65908
Fixing another raft::headers -> raft::backend
cjnolet Mar 14, 2022
38f07e0
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
0dddac1
ugh
cjnolet Mar 14, 2022
c6157a2
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
1e6270b
using libraft-frontend in pylibraft meta.yml
cjnolet Mar 14, 2022
cafe000
Updating raft_runtime -> raft_frontend
cjnolet Mar 14, 2022
df84f75
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 14, 2022
1808989
fixing typo
cjnolet Mar 15, 2022
e7c86fd
Fixing raft_client -> raft_frontend
cjnolet Mar 15, 2022
cf339c0
More replacement of raft_runtime
cjnolet Mar 15, 2022
5130863
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 15, 2022
520d93d
Adding python example to readme
cjnolet Mar 15, 2022
c74b90f
Testing more distances.
cjnolet Mar 15, 2022
a4d1901
Fixing style
cjnolet Mar 15, 2022
2b710dc
Strange cython linking issue
cjnolet Mar 15, 2022
4d367c0
Updates
cjnolet Mar 15, 2022
dad6d93
Changing frontend->public
cjnolet Mar 15, 2022
db2a2e6
Merge branch 'fea-2204-raft_runtime' into fea-2204-pylibraft
cjnolet Mar 15, 2022
afb8024
Updating raft_frontend->raft_public
cjnolet Mar 15, 2022
b640d4f
libraft_public -> libraft_core
cjnolet Mar 15, 2022
66fbe3e
Updates
cjnolet Mar 15, 2022
9412e99
Fixing style
cjnolet Mar 15, 2022
9d3ffc8
Installing targets
cjnolet Mar 15, 2022
8cb3c33
Proper install target
cjnolet Mar 15, 2022
2fe7d89
removing cuco from installing headers
cjnolet Mar 16, 2022
d06ef66
Changing actual conda package back to `libraft-headers` just to minimize
cjnolet Mar 16, 2022
7fddb0b
Backing out recent build changes, removing INSTALL exports everywhere.
cjnolet Mar 16, 2022
413a108
More updates
cjnolet Mar 16, 2022
94881c2
More udpates
cjnolet Mar 16, 2022
cc1edca
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-py…
cjnolet Mar 16, 2022
aa805b0
Updating README and BUILD docs to remove raft core.
cjnolet Mar 17, 2022
110b26f
More updates to dev guide
cjnolet Mar 17, 2022
66c9f9c
Couple of small fixes
cjnolet Mar 17, 2022
bdb75ba
A few more doc updates I missed
cjnolet Mar 17, 2022
0fcff5d
Review feedback
cjnolet Mar 17, 2022
0ac17f4
Merge remote-tracking branch 'rapidsai/branch-22.04' into fea-2204-py…
cjnolet Mar 18, 2022
4fc2656
Updating docs for 22.04
cjnolet Mar 18, 2022
6fd944f
Removing allocator
cjnolet Mar 18, 2022
682cd2f
removing device allocator
cjnolet Mar 18, 2022
1dfe2fc
fixing style
cjnolet Mar 18, 2022
a4cd2cf
Breaking out sparse primitives.
cjnolet Mar 18, 2022
437127e
More docs updates.
cjnolet Mar 21, 2022
ef4a9a8
Updates based on review feedback
cjnolet Mar 21, 2022
322d659
A couple additional updates to README.md
cjnolet Mar 21, 2022
42f56c9
Fixing typo
cjnolet Mar 21, 2022
eda6fcf
slight re-brand
cjnolet Mar 21, 2022
0cf80b3
One more change
cjnolet Mar 21, 2022
1ef83ff
More readme updates
cjnolet Mar 21, 2022
efa5e5a
Updates
cjnolet Mar 21, 2022
f209b1c
Somehow missed a review comment
cjnolet Mar 21, 2022
187dfa4
Removing versions.json
cjnolet Mar 21, 2022
1ccc4aa
Merge branch 'fea-2204-pylibraft' into doc-2204-updating_doxygen
cjnolet Mar 21, 2022
0ef4792
Merge branch 'branch-22.04' into doc-2204-updating_doxygen
cjnolet Mar 22, 2022
648f1c9
Fixing style
cjnolet Mar 22, 2022
6f6d9cc
Adding INSTALL_EXPORT_SET for cuco, rmm, thrust
cjnolet Mar 22, 2022
2ff3536
Calling single thrust function instead of two
cjnolet Mar 22, 2022
d0cbc92
Merge branch 'revert_thrust_rmm_cuco' into doc-2204-updating_doxygen
cjnolet Mar 22, 2022
e71543c
Merge remote-tracking branch 'rapidsai/branch-22.04' into doc-2204-up…
cjnolet Mar 22, 2022
2cd58a5
Merge remote-tracking branch 'rapidsai/branch-22.04' into doc-2204-up…
cjnolet Mar 23, 2022
2834b62
Adding docs for pylibraft
cjnolet Mar 23, 2022
a7f859e
Updating style
cjnolet Mar 23, 2022
8281679
Review feedback
cjnolet Mar 24, 2022
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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ While not exhaustive, the following general categories help summarize the accele
| **Spatial** | pairwise distances, nearest neighbors, neighborhood graph construction |
| **Sparse Operations** | linear algebra, eigenvalue problems, slicing, symmetrization, labeling |
| **Basic Clustering** | spectral clustering, hierarchical clustering, k-means |
| **Optimization** | combinatorial optimization, iterative solvers |
| **Solvers** | combinatorial optimization, iterative solvers |
| **Statistics** | sampling, moments and summary statistics, metrics |
| **Distributed Tools** | multi-node multi-gpu infrastructure |

Expand Down
8 changes: 3 additions & 5 deletions cpp/doxygen/Doxyfile.in
Original file line number Diff line number Diff line change
Expand Up @@ -798,7 +798,7 @@ INPUT_ENCODING = UTF-8
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl,
# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js.

FILE_PATTERNS = *.hpp
FILE_PATTERNS = *.hpp *.cuh

# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
Expand All @@ -814,8 +814,7 @@ RECURSIVE = YES
# run.

EXCLUDE = @CMAKE_CURRENT_SOURCE_DIR@/include/raft/sparse/linalg/symmetrize.hpp \ # Contains device code
@CMAKE_CURRENT_SOURCE_DIR@/include/raft/sparse/csr.hpp \ # Contains device code
@CMAKE_CURRENT_SOURCE_DIR@/include/raft/sparse/detail/cusparse_wrappers.h
@CMAKE_CURRENT_SOURCE_DIR@/include/raft/sparse/csr.hpp # Contains device code

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
Expand All @@ -832,8 +831,7 @@ EXCLUDE_SYMLINKS = NO
# exclude all test directories for example use the pattern */test/*

EXCLUDE_PATTERNS = */detail/* \
*/specializations/* \
*/spectral/*
*/specializations/*

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
Expand Down
26 changes: 17 additions & 9 deletions cpp/doxygen/main_page.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
# libraft

RAFT (RAPIDS Analytics Framework Toolkit) is a library containing building-blocks for rapid composition of RAPIDS Analytics. These building-blocks include shared representations, mathematical computational primitives, and utilities that accelerate building analytics and data science algorithms in the RAPIDS ecosystem. Both the C++ and Python components can be included in consuming libraries, providing building-blocks for both dense and sparse matrix formats in the following general categories:
RAFT contains fundamental widely-used algorithms and primitives for data science, graph and machine learning. The algorithms are CUDA-accelerated and form building-blocks for rapidly composing analytics.

By taking a primitives-based approach to algorithm development, RAFT
- accelerates algorithm construction time,
- reduces the maintenance burden by maximizing reuse across projects, and
- centralizes core reusable computations, allowing future optimizations to benefit all algorithms that use them.

While not exhaustive, the following general categories help summarize the accelerated functions in RAFT:

#####
| Category | Description / Examples |
| Category | Examples |
| --- | --- |
| **Data Formats** | tensor representations and conversions for both sparse and dense formats |
| **Data Generation** | graph, spatial, and machine learning dataset generation |
| **Dense Operations** | linear algebra, statistics |
| **Spatial** | pairwise distances, nearest neighbors, neighborhood / proximity graph construction |
| **Sparse/Graph Operations** | linear algebra, statistics, slicing, msf, spectral embedding/clustering, slhc, vertex degree |
| **Solvers** | eigenvalue decomposition, least squares, lanczos |
| **Tools** | multi-node multi-gpu communicator, utilities |
| **Data Formats** | sparse & dense, conversions, data generation |
| **Dense Linear Algebra** | matrix arithmetic, norms, factorization, least squares, svd & eigenvalue problems |
| **Spatial** | pairwise distances, nearest neighbors, neighborhood graph construction |
| **Sparse Operations** | linear algebra, eigenvalue problems, slicing, symmetrization, labeling |
| **Basic Clustering** | spectral clustering, hierarchical clustering, k-means |
| **Solvers** | combinatorial optimization, iterative solvers |
| **Statistics** | sampling, moments and summary statistics, metrics |
| **Distributed Tools** | multi-node multi-gpu infrastructure |
2 changes: 1 addition & 1 deletion cpp/include/raft.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

/**
* @warning This file is deprecated and will be removed in release 22.06.
* This file is deprecated and will be removed in release 22.06.
*/
#include "raft/handle.hpp"
#include "raft/mdarray.hpp"
Expand Down
4 changes: 2 additions & 2 deletions cpp/include/raft/cache/cache_util.cuh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2021, NVIDIA CORPORATION.
* Copyright (c) 2019-2022, NVIDIA CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -111,7 +111,7 @@ __global__ void store_vecs(const math_t* tile,
* @brief Map a key to a cache set.
*
* @param key key to be hashed
* @param n_cache_set number of cache sets
* @param n_cache_sets number of cache sets
* @return index of the cache set [0..n_cache_set)
*/
int DI hash(int key, int n_cache_sets) { return key % n_cache_sets; }
Expand Down
2 changes: 1 addition & 1 deletion cpp/include/raft/comms/comms.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

/**
* @warning This file is deprecated and will be removed in release 22.06.
* This file is deprecated and will be removed in release 22.06.
* Please use raft_runtime/comms.hpp instead.
*/

Expand Down
2 changes: 1 addition & 1 deletion cpp/include/raft/cudart_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

/**
* @warning This file is deprecated and will be removed in release 22.06.
* This file is deprecated and will be removed in release 22.06.
* Please use raft_runtime/cudart_utils.hpp instead.
*/

Expand Down
4 changes: 2 additions & 2 deletions cpp/include/raft/device_atomics.cuh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2020, NVIDIA CORPORATION.
* Copyright (c) 2019-2022, NVIDIA CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -462,7 +462,7 @@ struct typesAtomicCASImpl<T, 8> {
* int8_t, int16_t, int32_t, int64_t, float, double
*
* @param[in] address The address of old value in global or shared memory
* @param[in] val The value to be computed
* @param[in] update_value The value to be computed
* @param[in] op The binary operator used for compute
*
* @returns The old value at `address`
Expand Down
26 changes: 13 additions & 13 deletions cpp/include/raft/distance/distance.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@

#include <raft/mdarray.hpp>

/**
* @defgroup pairwise_distance pairwise distance prims
* @{
*/

namespace raft {
namespace distance {

Expand Down Expand Up @@ -267,12 +272,11 @@ void distance(raft::handle_t const& handle,
}

/**
* @defgroup pairwise_distance pairwise distance prims
* @{
* @brief Convenience wrapper around 'distance' prim to convert runtime metric
* into compile time for the purpose of dispatch
* @tparam Type input/accumulation/output data-type
* @tparam Index_ indexing type
* @param handle raft handle for managing expensive resources
* @param x first set of points
* @param y second set of points
* @param dist output distance matrix
Expand All @@ -282,8 +286,8 @@ void distance(raft::handle_t const& handle,
* @param workspace temporary workspace buffer which can get resized as per the
* needed workspace size
* @param metric distance metric
* @param stream cuda stream
* @param isRowMajor whether the matrices are row-major or col-major
* @param metric_arg metric argument (used for Minkowski distance)
*/
template <typename Type, typename Index_ = int>
void pairwise_distance(const raft::handle_t& handle,
Expand Down Expand Up @@ -363,24 +367,22 @@ void pairwise_distance(const raft::handle_t& handle,
default: THROW("Unknown or unsupported distance metric '%d'!", (int)metric);
};
}
/** @} */

/**
* @defgroup pairwise_distance pairwise distance prims
* @{
* @brief Convenience wrapper around 'distance' prim to convert runtime metric
* into compile time for the purpose of dispatch
* @tparam Type input/accumulation/output data-type
* @tparam Index_ indexing type
* @param handle raft handle for managing expensive resources
* @param x first set of points
* @param y second set of points
* @param dist output distance matrix
* @param m number of points in x
* @param n number of points in y
* @param k dimensionality
* @param metric distance metric
* @param stream cuda stream
* @param isRowMajor whether the matrices are row-major or col-major
* @param metric_arg metric argument (used for Minkowski distance)
*/
template <typename Type, typename Index_ = int>
void pairwise_distance(const raft::handle_t& handle,
Expand All @@ -400,20 +402,16 @@ void pairwise_distance(const raft::handle_t& handle,
}

/**
* @defgroup pairwise_distance pairwise distance prims
* @{
* @brief Convenience wrapper around 'distance' prim to convert runtime metric
* into compile time for the purpose of dispatch
* @tparam Type input/accumulation/output data-type
* @tparam Index_ indexing type
* @param handle raft handle for managing expensive resources
* @param x first matrix of points (size mxk)
* @param y second matrix of points (size nxk)
* @param dist output distance matrix (size mxn)
* @param workspace temporary workspace buffer which can get resized as per the
* needed workspace size
* @param metric distance metric
* @param stream cuda stream
* @param isRowMajor whether the matrices are row-major or col-major
* @param metric_arg metric argument (used for Minkowski distance)
*/
template <typename Type, typename Index_ = int, typename layout = layout_c_contiguous>
void pairwise_distance(raft::handle_t const& handle,
Expand Down Expand Up @@ -454,4 +452,6 @@ void pairwise_distance(raft::handle_t const& handle,
}; // namespace distance
}; // namespace raft

/** @} */

#endif
Loading