Skip to content

matinraayai/Luthier

Repository files navigation

Luthier: A Dynamic Binary Instrumentation Framework Targeting AMD GPUs

What is Luthier?

Luthier is a dynamic binary instrumentation framework for writing tools targeting AMD GPUs. It supports (or aims to support):

  • Analyzing the content of the code objects loaded on the GPU at runtime; This includes kernels, device functions, static variables, etc.
  • Inserting calls to (multiple) device instrumentation functions.
  • Removal/modification/addition of instructions.
  • Querying/modification of the GPU's ISA visible state.

What AMD GPU Applications Luthier Supports?

Luthier supports any ROCm-backed application on Linux. This includes any applications that uses HIP, OpenMP, OpenCL, or even the ROCM runtime directly to load and launch kernels on the GPU, regardless of how their module (code object) was created and loaded.

Luthier does not support the Platform Abstraction Layer (PAL)-based applications or Windows.

How Can I get started?

For more information on how to build, get started, and contribute, see the documentation folder. To report bugs, feel free to file an issue on GitHub.

Found a Bug? Having Issues? Experiencing Crashes? Have a Suggestion or a feature request?

Feel free to file an issue. If you're reporting a crash, please include the stack trace of the error, and preferably, compile Luthier with CMAKE_BUILD_TYPE=Debug and include the debug info alongside the stack trace of the crash.

About

Luthier, a GPU binary instrumentation tool for AMD GPUs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors