-
Notifications
You must be signed in to change notification settings - Fork 6
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
Add automation for producing artifact slices. #37
Conversation
* Ship-ready artifact trees are output to `artifacts/` using a common naming heuristic. * These are generic artifact slices which split project groups into run/dev/dbg/doc subsets based on slice specific patterns. * Artifacts can either be target neutral or target-locked, and this is represented in the name. * The build system produces exploded artifact directories ready for upload/streaming via things like GH action artifacts or direct use in downstream processing. * Like with systems such as Bazel, much care was taken on preserving convention and directory layout so that the pieces can all fit together systematically. This is a first step that just produces artifact slices for `base/` and `compiler/`. Still a number of things todo: * A future step will also produce archive files from these for direct installation. * I want to add a diagnostic script which reports any duplication/ommissions so that patterns can be easily maintained. * The build system will have a mode where it can initialize its build tree from an arbitrary set of artifacts from a prior build. This will disable configure/build steps for these pre-built parts and hardwire them to always uptodate. * Populate the remaining directories (core, math-libs, ml-frameworks). * Further tune LLVM's build/install configuration to reduce over-built assets at the source. * Add global build system hooks so that debug symbol separation is done at build time (right now, all of the dbg slices are empty because the build system is either stripping or bundling debug info). * Probably some additional tweaks needed for Windows specific patterns.
FYI - sizes of artifact dirs right now (this is Release so no debug symbols):
I need to do some more surgery on the compiler:
|
SUBPROJECT_DEPS | ||
rocm-cmake | ||
rocm-core | ||
rocm_smi_lib |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For Windows support (#36), it would help to make some of these deps optional. For example, I don't expect rocm_smi_lib (or the successor project, https://github.com/ROCm/amdsmi) to compile on Windows.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, we probably need some loose cmake to make some of them conditional as something like:
set(optional_artifact_deps)
if(NOT WIN32)
list(APPEND optional_artifact_deps rocm_smi_lib)
endif()
...
SUBPROJECT_DEPS
${optional_artifact_deps}
Could try to make it more automagical, but for this stuff, I generally prefer the readability of loose branchiness.
artifacts/
using a common naming heuristic.therock-artifacts
produces all artifacts for the project. Individuals can be reached via targets liketherock-artifact-base
,therock-artifact-amd-llvm
,therock-artifact-hipify
.This is a first step that just produces artifact slices for
base/
andcompiler/
. Still a number of things todo: