We welcome community contributions to oneCCL. You can:
- Submit your changes directly with a pull request.
- Log a bug or feedback with an issue.
Refer to our guidelines on pull requests and isssues before you proceed.
Use GitHub issues to:
- report an issue
- provide feedback
- make a feature request
Note: To report a vulnerability, refer to Intel vulnerability reporting policy.
Before you submit a pull request, make sure that:
- You follow our code contribution guidelines and our coding style.
- You provided the requested details for new primitives or extended the existing unit tests when fixing an issue.
- You signed-off your work.
Note: This project follows the GitHub flow. To get started with pull requests, see GitHub howto.
It is strongly advised to open an RFC (request for comments) pull request when contributing new primitives. Please provide the following details:
-
The definition of the operation as a oneCCL primitive. It should include an interface and semantics. We welcome sketches for the interface, but the semantics should be fairly well-defined.
-
A use case, including a model and parallelism scenario.
The code must be:
-
Tested: oneCCL uses
gtests
for lightweight functional testing. -
Documented: oneCCL uses
Doxygen
for inline comments in public header files that are used to build the API reference andreStructuredText
for the Developer Guide. See oneCCL documentation for reference. -
Portable: oneCCL supports CPU and GPU architectures as well as different compilers and run-times. The new code should be complaint with the System Requirements.
The general principle is to follow the style of existing or surrounding code.
Be sure to extend the existing tests when fixing an issue.
Use the sign-off line at the end of the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. If you can certify the below (from developercertificate.org):
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
660 York Street, Suite 102,
San Francisco, CA 94110 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
Then you add a line to every git commit message:
Signed-off-by: Kris Smith <kris.smith@email.com>
Note: Use your real name.
If you set your user.name
and user.email
git configs, you can sign your
commit automatically with git commit -s
.