Skip to content

Commit

Permalink
DOCS: fix doxygen
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergei-Lebedev committed Oct 17, 2024
1 parent 5d1f707 commit a08a2f8
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends doxygen doxygen-latex
sudo apt-get install -y --no-install-recommends doxygen doxygen-latex cm-super texlive-fonts-recommended
- uses: actions/checkout@v1
- name: Build UCC docs
run: |
Expand Down
4 changes: 2 additions & 2 deletions docs/doxygen/collectives.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,5 +169,5 @@ and it is returned to the user, when the collective is completed.

\b The table below lists the necessary fields that user must initialize
depending on the collective operation type.
\image latex ucc\_coll\_args\_table1.pdf width=\textwidth
\image latex ucc\_coll\_args\_table2.pdf width=\textwidth
\image latex "ucc_coll_args_table1.pdf" width=\textwidth
\image latex "ucc_coll_args_table2.pdf" width=\textwidth
6 changes: 3 additions & 3 deletions docs/doxygen/design.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### Design
### Design

* Highly scalable and performant collectives for HPC, AI/ML and I/O workloads
* Nonblocking collective operations that cover a variety of programming models
Expand All @@ -10,5 +10,5 @@

### Component Diagram

\image latex ucc\_components.pdf "UCC Components and Usage"
\image html ucc\_components.png "UCC Components and Usage"
\image latex "ucc_components.pdf" "UCC Components and Usage"
\image html "ucc_components.png" "UCC Components and Usage"
8 changes: 3 additions & 5 deletions docs/doxygen/events.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
The execution engine is an execution context that supports event-driven network
execution on the CUDA streams, CPU threads, and DPU threads. It is intended to
interact with execution threads that are asynchronous (offloaded collective
execution) which can be implemented on GPUs, DPUs, or remote CPUs.
execution) which can be implemented on GPUs, DPUs, or remote CPUs.

UCC supports triggering collective operations by library-generated and
user-generated events. The library events are generated on posting or completion
Expand Down Expand Up @@ -69,7 +69,5 @@ are related to the compute event.
(5) On completion of the collective operation, the library posts
UCC\_EVENT\_COLLECTIVE\_COMPLETE event to the completion event queue.

\image latex ucc\_events.pdf "UCC Execution Engine and Events"
\image html ucc\_events.png "UCC Execution Engine and Events"


\image latex "ucc_events.pdf" "UCC Execution Engine and Events"
\image html "ucc_events.png" "UCC Execution Engine and Events"
11 changes: 5 additions & 6 deletions docs/doxygen/teams.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
## Teams

The ucc\_team\_h is a team handle, which encapsulates the resources required for group operations such as collective communication operations. The participants of the group operations can either be an OS process, a control thread or a task.
The ucc\_team\_h is a team handle, which encapsulates the resources required for group operations such as collective communication operations. The participants of the group operations can either be an OS process, a control thread or a task.

Create and destroy routines: ucc\_team\_create\_post routine is used to create the team handle and ucc\_team\_create\_test routine for learning the status of the create operation. The team handle is destroyed by the ucc\_team\_destroy operation. A team handle is customized using the user configured ucc\_team\_params\_t structure.
Create and destroy routines: ucc\_team\_create\_post routine is used to create the team handle and ucc\_team\_create\_test routine for learning the status of the create operation. The team handle is destroyed by the ucc\_team\_destroy operation. A team handle is customized using the user configured ucc\_team\_params\_t structure.

\b Invocation semantics: The ucc\_team\_create\_post is a nonblocking collective operation, in which the participants are determined by the user-provided OOB collective operation. Overlapping of multiple ucc\_team\_create\_post operations are invalid. Posting a collective operation before the team handle is created is invalid. The team handle is destroyed by a blocking collective operation; the participants of this collective operation are the same as the create operation. When the user does not provide an OOB collective operation, all participants calling the ucc\_create\_post operation will be part of a new team created.

\b Communication Contexts: Each process or a thread participating in the team creation operation contributes one or more communication contexts to the operation. The number of contexts provided by all participants should be the same and each participant should provide the same type of context. The newly created team uses the context for collective operations. If the communication context abstracts the resources for the library, the collective operations on this team uses the resources provided by the context.
\b Communication Contexts: Each process or a thread participating in the team creation operation contributes one or more communication contexts to the operation. The number of contexts provided by all participants should be the same and each participant should provide the same type of context. The newly created team uses the context for collective operations. If the communication context abstracts the resources for the library, the collective operations on this team uses the resources provided by the context.

\b Endpoints: That participants to the ucc\_team\_create\_post operation can provide an endpoint, a 64-bit unsigned integer. The endpoint is an address for communication. Each participant of the team has a unique integer as endpoint .i.e., the participants of the team do not share the same endpoint. For example, the user can bind the endpoint to the parallel programming model’s index such as OpenSHMEM PE, an OS process ID, or a thread ID. The UCC implementation can use the endpoint as an index to identify the resources required for communication such as communication contexts. When the user does not provide the endpoint, the library generates the endpoint, which can be queried by the user. In addition to the endpoint, the user can provide information about the endpoints such as whether the endpoint is a continuous range or not.
\b Endpoints: That participants to the ucc\_team\_create\_post operation can provide an endpoint, a 64-bit unsigned integer. The endpoint is an address for communication. Each participant of the team has a unique integer as endpoint .i.e., the participants of the team do not share the same endpoint. For example, the user can bind the endpoint to the parallel programming model’s index such as OpenSHMEM PE, an OS process ID, or a thread ID. The UCC implementation can use the endpoint as an index to identify the resources required for communication such as communication contexts. When the user does not provide the endpoint, the library generates the endpoint, which can be queried by the user. In addition to the endpoint, the user can provide information about the endpoints such as whether the endpoint is a continuous range or not.

\b Ordering: The collective operations on the team can either be ordered or unordered. In the ordered model, the UCC collectives are invoked in order .i.e., on a given team, each of the participants of the collective operation invokes the operation in the same order. In the unordered model, the collective operations are not necessarily invoked in the same order.

\b Interaction with Threads: The team can be created in either mode .i.e., the library initialized by UCC\_LIB\_THREAD\_MULTIPLE, UCC\_LIB\_THREAD\_SINGLE, or UCC\_LIB\_THREAD\_FUNNEDLED. In the UCC\_LIB\_THREAD\_MULTIPLE mode, each of the user threads can post a collective operation. However, it is not valid to post concurrent collectives operations from multiple threads to the same team.
\b Interaction with Threads: The team can be created in either mode .i.e., the library initialized by UCC\_LIB\_THREAD\_MULTIPLE, UCC\_LIB\_THREAD\_SINGLE, or UCC\_LIB\_THREAD\_FUNNEDLED. In the UCC\_LIB\_THREAD\_MULTIPLE mode, each of the user threads can post a collective operation. However, it is not valid to post concurrent collectives operations from multiple threads to the same team.

\b Memory per Team: A team can be configured by a memory descriptor described by ucc\_mem\_map\_params\_t structure. The memory can be used as an input and output buffers for the collective operation. This is particularly useful for PGAS programming models, where the input and output buffers are defined before the invocation operation. For example, the input and output buffers in the OpenSHMEM programming model are defined during the programming model initialization.

Expand All @@ -32,4 +32,3 @@ The newly created team shares the communication contexts with the parent team. T
The split operation can be called by multiple threads, if the parent team to the split operations are different and if it agrees with the thread model of the UCC library.

Notes: The rationale behind requiring all participants of the parent team to participate in the split operation is to avoid overlapping participants between multiple split operations, which is known to increase the implementation complexity. Also, currently, higher-level programming models do not require these semantics.

4 changes: 2 additions & 2 deletions docs/doxygen/ucc_doxygen.conf
Original file line number Diff line number Diff line change
Expand Up @@ -882,7 +882,7 @@ INPUT_ENCODING = UTF-8
# *.vhdl, *.ucf, *.qsf and *.ice.

FILE_PATTERNS = *.h \
*.md
*.md


# The RECURSIVE tag can be used to specify whether or not subdirectories should
Expand Down Expand Up @@ -1007,7 +1007,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 = main.md
USE_MDFILE_AS_MAINPAGE = $(SRCDIR)/docs/doxygen/main.md

#---------------------------------------------------------------------------
# Configuration options related to source browsing
Expand Down
7 changes: 7 additions & 0 deletions src/ucc/api/ucc.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ BEGIN_C_DECLS
* @}
*/

/**
* @defgroup UCC_LIB_INTERNAL Internal library routines
* @{
* Internal library routines
* @}
*/

/**
* @defgroup UCC_CONTEXT_DT Context abstraction data-structures
* @{
Expand Down
4 changes: 2 additions & 2 deletions src/ucc/api/ucc_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ typedef size_t ucc_context_addr_len_t;


/**
* @ingroup UCC_EVENTS_DT
* @ingroup UCC_EVENT_DT
* @brief UCC execution engine handle
*
* The UCC execution engine handle is an opaque handle created by the library representing
Expand All @@ -161,7 +161,7 @@ typedef struct ucc_ee* ucc_ee_h;

typedef struct ucc_dt_generic ucc_dt_generic_t;
/**
* @ingroup UCC_DATATYPES
* @ingroup UCC_DATATYPE
* @brief Helper enum for generic/predefined datatype representation
*
*/
Expand Down

0 comments on commit a08a2f8

Please sign in to comment.