Draft: rocprofiler-sdk
-
commit changes needed to build with latest afar
-
rocprofilerv3: restore binary processing.
-
Remove AMD debugging hotpatch
-
rocprofilerv3 changes with AMD
-
hpcrun-c: Fix crash when running with no path
If hpcrun-c is launched with no path, the command crashes attempting to
canonicalize "hpcrun-c
". Hackily fix this by using /proc/self/exe
instead.
Consider #819
- hpcrun: Convert the launch script to C++
(This commit is cherry-picked from e0e39d3f, but modified to retain the
original hpcrun
script instead of replacing it. The C++ launcher is
built as hpcrun-c
. Intended for debugging/experimentation only.)
As our initialization code gets more complex, we need earlier and
earlier "hooks" to attach to with gdb
. As it stands right now, you
can't just gdb --args hpcrun -e REALTIME ./my_app
, since hpcrun
is
a shell launch script and gdb
only operates on (binary) executables.
We have the hpcrun -d
flag for this case which invokes a spin-wait
for attachment, but for some initialization tasks this is still "too
late" of an attachment point to observe everything going on.
Shell is also notorious for its many flaws (non-portability, inelegant
and insufficient error handling, lack of first-class values, etc.) that
make it unsuitable for large and robust applications. The hpcrun
launch script is >850 lines of complex logic. Times need to change.
This commit converts the script to C++, as close to 1-to-1 as possible. A few difficult logic pieces that probe the application binary have been removed, most of these only generated early errors and so have little effect on users. The logic to find libmonitor has also been rewritten.
And yes, gdb --args hpcrun ...
just works now. You're welcome.
Resolves #699 (closed) and #703 (closed)
- devcontainers: Integrate with Clangd extension
Clangd requires a reference to the build directory to properly find the compile_commands.json. In devcontainers the expectation is that the Meson extension is being used, so add (default) configuration for the Clangd extension will use the Meson extension's build directory.
Note that this doesn't add Clangd as an extension, it only adds the configuration to make it work.
-
rocprofilerv3 preliminary implementation
-
update meson.build for hpcstruct to populate devenv
-
update container description for rocm on ubuntu 22.04
-
add rocm path into container
-
Devcontainer setup for rocm-rc
-
Revert changes to ROCprofiler find script
-
Refactor the build system to smoothly support different ROCm versions
Now meson setup
completes successfully on ROCm 6.0 and ROCm AFAR. It doesn't build yet,
but the dependencies are now in place.
- Restore original ROCm Containerfile
This allows using the rocm5.x and 6.x devcontainers in addition to the custom rocm-afar one from the same branch.
- Adjust container script to build from scratch
It does need a secret, which is present by default on our shared development machine.
- setup for rocm afar container
To Demonstrate
Backward Compatibility
Additional Information
Checklist
-
I have run pre-commit run -a
on my local checkout and fixed any reported issues. -
I have confirmed that existing tests and/or the tests added by this MR cover the changes introduced by this MR. -
I have confirmed that any added tests will be automatically run in CI. -
I have updated all relevant documentation: -
The --help
text for the tools -
The man page for the tools -
The HPCToolkit User's Manual
-