Mneme

RESOURCE

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]
  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.:
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

RESOURCE

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}
}