Abstract
A simple tool allowing recording the execution of a GPU (CUDA) kernel and replaying that kernel as an
independent executable.
The tool operates in 3 phases. During compile time the user needs to apply a provided LLVM pass to
instrument the code. The pass detects all device global variables
and device functions and stores this information with the respective LLVM-IR in the global device
memory. The compilation generates a record-able executable.
The second phase involves running the application executable with a desired input and using
LD_PRELOAD to enable recording. When recording before invoking a device kernel
the pre-loaded library stores device memory in persistent storage and associates the memory with the
device kernel and an LLVM IR file. At the end of the recorded execution
the pre-load library generates a database in the form of a JSON file containing information regarding the
LLVM-IR files and the snapshots of device memory.
During the third and last phase the user can replay the execution of an kernel as a separate independent
executable. Besides executing it the user can modify the LLVM IR file and
auto-tune parameters such as kernel launch-bounds or kernel runtime execution parameters (e.g. Kernel
Block and Grid Dimensions).
Is
- Developers:
-
Parasyris, Konstantinos [1] ; Georgakoudis, Giorgis [1]
- Lawrence Livermore National Laboratory (LLNL), Livermore, CA (United States)
- Release Date:
- 2024-09-11
- Project Type:
- Open Source, Publicly Available Repository
- Software Type:
- Scientific
- Version:
- 0.0.0.alpha
- Licenses:
-
Apache License 2.0
- Sponsoring Org.:
-
USDOE National Nuclear Security Administration (NNSA)Primary Award/Contract Number:AC52-07NA27344
- Code ID:
- 147006
- Site Accession Number:
- LLNL-CODE-2000766
- Research Org.:
- Lawrence Livermore National Laboratory (LLNL), Livermore, CA (United States)
- Country of Origin:
- United States
Citation Formats
Parasyris, Konstantinos, and Georgakoudis, Giorgis.
Mneme.
Computer Software.
https://github.com/Olympus-HPC/Mneme.
USDOE National Nuclear Security Administration (NNSA).
11 Sep. 2024.
Web.
doi:10.11578/dc.20241104.6.
Parasyris, Konstantinos, & Georgakoudis, Giorgis.
(2024, September 11).
Mneme.
[Computer software].
https://github.com/Olympus-HPC/Mneme.
https://doi.org/10.11578/dc.20241104.6.
Parasyris, Konstantinos, and Georgakoudis, Giorgis.
"Mneme." Computer software.
September 11, 2024.
https://github.com/Olympus-HPC/Mneme.
https://doi.org/10.11578/dc.20241104.6.
@misc{
doecode_147006,
title = {Mneme},
author = {Parasyris, Konstantinos and Georgakoudis, Giorgis},
abstractNote = {A simple tool allowing recording the execution of a GPU (CUDA) kernel and replaying that kernel as an
independent executable.
The tool operates in 3 phases. During compile time the user needs to apply a provided LLVM pass to
instrument the code. The pass detects all device global variables
and device functions and stores this information with the respective LLVM-IR in the global device
memory. The compilation generates a record-able executable.
The second phase involves running the application executable with a desired input and using
LD_PRELOAD to enable recording. When recording before invoking a device kernel
the pre-loaded library stores device memory in persistent storage and associates the memory with the
device kernel and an LLVM IR file. At the end of the recorded execution
the pre-load library generates a database in the form of a JSON file containing information regarding the
LLVM-IR files and the snapshots of device memory.
During the third and last phase the user can replay the execution of an kernel as a separate independent
executable. Besides executing it the user can modify the LLVM IR file and
auto-tune parameters such as kernel launch-bounds or kernel runtime execution parameters (e.g. Kernel
Block and Grid Dimensions).
Is},
doi = {10.11578/dc.20241104.6},
url = {https://doi.org/10.11578/dc.20241104.6},
howpublished = {[Computer Software] \url{https://doi.org/10.11578/dc.20241104.6}},
year = {2024},
month = {sep}
}