Below is an example Markdown documentation file for the Nugget Protocol LSMS experimental branch. You can save this as, for example, Nugget-Protocol-LSMS.md
in your repository.
Note: This documentation is generated by AI. I fixed it a bit but please let me know if there are any inaccurate descriptions and unclear points.
This repository contains the experimental implementation of the Nugget Protocol LSMS. The nugget-experiment branch explores new features and modifications to the core Nugget protocol, aiming to enhance performance, scalability, and functionality within LSMS (Lightweight Scalable Memory System—or your project’s defined LSMS acronym).
Note: This branch is experimental. Features and APIs are subject to change. Contributions and feedback are highly welcome.
The Nugget Protocol LSMS project implements a protocol framework designed for efficient instrumentation and analysis in memory systems. This experimental branch, nugget-experiment, introduces:
- Create LSMS samples using the Nugget methodology.
- New mechanisms for data collection and analysis.
The project is structured to allow easy integration with existing systems, providing modular components that can be configured and extended according to experimental needs.
-
Experimental Protocol Enhancements:
Implements new ideas for protocol communication and data aggregation within LSMS environments. -
Modular Design:
Components are organized to allow independent testing and evaluation of protocol modules. -
Enhanced Instrumentation:
Tools for collecting, analyzing, and visualizing profiling data in real time. -
Integration with LSMS:
Provides hooks and APIs for integrating with memory system components and applications. -
Configurable Parameters:
Experimental parameters (such as region lengths, instrumentation granularity, and clustering thresholds) can be easily tuned via configuration files or CMake options.
- Operating System: Linux
- Build System: CMake (version 3.30 or higher recommended)
- Compiler: LLVM compilers Clang/Clang++ and flang-new (LLVM gold recommended)
- LLVM Toolchain: llvm-extract, opt, llvm-link, and llc must be installed and accessible via your system PATH
- Dependencies: Additional libraries may be required; please refer to the LSMS repository’s dependency list.
Clone the repository and check out the experimental branch:
git clone https://github.com/darchr/nugget-protocol-lsms.git
cd nugget-protocol-lsms
git checkout nugget-experiment
The experiments are highly tight with the executables for the Nugget methodology.
The experimental binaries or scripts are located in the build directory. For example:
mkdir cbuild && cd cbuild
NUGGET_PROCESS_TYPE=lsms-naive-exe NUGGET_CONFIG_FILE=${PWD}/../experiments/papi-naive/cmake/papi-naive-exe.cmake cmake -DCMAKE_TOOLCHAIN_FILE=${PWD}/../lsms/toolchain/generic-cpu.cmake ${PWD}/../lsms
The configuration file allows you to adjust parameters such as:
- Instrumentation Region Length
- Data Collection Frequency
- Protocol Timeout Settings
- Logging and Debug Options
One example for generating bitcode for the IR basic block analysis program: [ir-bb-analysis-bc.cmake](https://github.com/darchr/nugget-protocol-lsms/blob/nugget-experiment/experiments/ir-bb-analysis/cmake/ir-bb-analysis-bc.cmake).
Please refer to the experiments
folder for examples.
There are also pre-built bitcodes under the cbuild
folder.
You can launch experiments just like running the original benchmark, but depending on what hooks you use, the executable has different purpose and outcome.
Contributions to the experimental branch are welcome. If you wish to contribute:
-
Fork the Repository:
Create your own fork on GitHub. -
Create a Feature Branch:
Use descriptive branch names for new features or fixes (e.g.,feature/new-instrumentation
). -
Submit Pull Requests:
Include a detailed description of your changes, relevant documentation updates, and test results if applicable. -
Discussion and Feedback:
Open issues or join discussions on GitHub to share ideas and feedback.
Please adhere to the repository’s coding style and contribution guidelines.
This project is distributed under the LICENSE provided in the repository. Please review the license file for full details.
For questions, suggestions, or further information, please reach out via:
- GitHub Issues: darchr/nugget-protocol-lsms Issues
- Email: [email protected]
This documentation is intended as a starting point for developers exploring the experimental Nugget Protocol LSMS branch. Updates and improvements are welcome as the project evolves.