Skip to content

darchr/nugget-protocol-lsms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.


Nugget Protocol LSMS – Nugget Experiment Branch

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.


Table of Contents


Overview

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.


Features

  • 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.


Installation and Setup

Prerequisites

  • 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.

Cloning the Repository

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

Usage

The experiments are highly tight with the executables for the Nugget methodology.

Running the Experiment

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).


Running Experiments

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.


Contributing

Contributions to the experimental branch are welcome. If you wish to contribute:

  1. Fork the Repository:
    Create your own fork on GitHub.

  2. Create a Feature Branch:
    Use descriptive branch names for new features or fixes (e.g., feature/new-instrumentation).

  3. Submit Pull Requests:
    Include a detailed description of your changes, relevant documentation updates, and test results if applicable.

  4. 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.


License

This project is distributed under the LICENSE provided in the repository. Please review the license file for full details.


Contact

For questions, suggestions, or further information, please reach out via:


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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published