Switched MSCCLPP.cmake to use targets
Details
Do not mention proprietary info or link to internal work items in this PR.
Work item: LWPCOMMLIBS-582
What were the changes?
Refactored MSCCLPP.cmake to use a target-based paradigm to build mscclpp rather than a scripting-based style. It also now allows the substitution of an external mscclpp installation or source code, and allows disabling of the patching step.
Why were the changes made?
- The ability to build rccl was dependent on the state of the mscclpp build, which could lead to strange failures.
- Desire to use cmake in a more idiomatic way.
- To make the use of mscclpp more configurable and flexible.
How was the outcome achieved?
The process was divided into stages, some of which are optional based on circumstance or configuration: git submodule update, copy, patch, build, redefine symbols, output library target.
Approval Checklist
Do not approve until these items are satisfied.
- [ ] Verify the CHANGELOG has been updated, if
- there are any NCCL API version changes,
- any changes impact library users, and/or
- any changes impact any other ROCm library.
/azp run
Azure Pipelines could not run because the pipeline triggers exclude this branch/path.
/azp run
Azure Pipelines successfully started running 2 pipeline(s).
@nileshnegi @nusislam @thananon I'm looking to get this one off the books. I think it's an important change to our mscclpp build to use build targets instead of procedurally scripting the build. It helps avoid rebuilding and unnecessary modification of files in the working tree.
This PR also makes it easier to test with alternative mscclpp working copies, and may be a stepping stone towards using our own fork of mscclpp.