Reorganize current native algorithm implementation and DSL algorithm implementation. Provide unified API for DSL algo and native algo and provide interface to tune the algo Provide interface for pytorch integration with native API and DSL --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: chhwang <8018170+chhwang@users.noreply.github.com>
2.2 KiB
Project Contribution Guidelines
This document outlines a few useful informations for contributing to this project.
C/C++ Headers Layout
This project has two C/C++ header directories: include/mscclpp/ and src/include/. Headers in include/mscclpp/ are public headers that define the public API of the project. Headers in src/include/ are internal headers used only within the project.
When adding new headers, place them in the appropriate directory based on their intended usage (public API vs. internal use). To prevent confusion, do not have duplicate names for headers in these two directories.
Symbols declared in public headers must be properly documented using Doxygen-style comments, except forward declarations and private class members. In a few cases, we may need to add declarations in public headers that are not intended for public use. In such cases, declare them under mscclpp::detail namespace, where we do not necessarily document every symbol.
License Header
A license header must be included at the top of each source code file in the project.
For Python source code:
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
For C/C++/CUDA source code:
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Formatting
If you have modified any code in the project, run ./tools/lint.sh to automatically format the entire source code before finishing iterations. Note that this script formats only staged files.
Building and Testing
The following commands are commonly used for building and testing the project. See docs/quickstart.md for more detailed instructions.
For building libraries and tests:
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
cd ..
For testing after successful build:
# To run all tests
mpirun -np 2 ./build/bin/mp_unit_tests
# To run tests excluding IB-related ones (when IB is not available)
mpirun -np 2 ./build/bin/mp_unit_tests --gtest_filter=-*Ib*
For building a Python package:
python3 -m pip install -e .
For building documentation (see dependencies in docs/requirements.txt):
cd docs
doxygen
make html
cd ..