{"id":25940516,"url":"https://github.com/ibm/microprobe","last_synced_at":"2025-03-04T05:17:00.542Z","repository":{"id":30619357,"uuid":"125558719","full_name":"IBM/microprobe","owner":"IBM","description":"Microprobe: Microbenchmark generation framework","archived":false,"fork":false,"pushed_at":"2024-06-27T19:17:07.000Z","size":56243,"stargazers_count":21,"open_issues_count":4,"forks_count":17,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-01T01:13:07.315Z","etag":null,"topics":["asm","automation","c-code","characterization","generation","linux","microbenchmark","microbenchmarks","profiling","python","riscv"],"latest_commit_sha":null,"homepage":"https://ibm.github.io/microprobe/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IBM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-16T19:05:30.000Z","updated_at":"2024-12-31T07:53:33.000Z","dependencies_parsed_at":"2023-10-12T13:44:50.716Z","dependency_job_id":"8d98ffa1-81b5-46ee-8211-3a0ce42686df","html_url":"https://github.com/IBM/microprobe","commit_stats":{"total_commits":97,"total_committers":4,"mean_commits":24.25,"dds":"0.14432989690721654","last_synced_commit":"61000a6ab60543db6a4bde0527b8b50059c493b0"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fmicroprobe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fmicroprobe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fmicroprobe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Fmicroprobe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IBM","download_url":"https://codeload.github.com/IBM/microprobe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241787484,"owners_count":20020101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asm","automation","c-code","characterization","generation","linux","microbenchmark","microbenchmarks","profiling","python","riscv"],"created_at":"2025-03-04T05:16:59.768Z","updated_at":"2025-03-04T05:17:00.528Z","avatar_url":"https://github.com/IBM.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Getting started\n===============\n\n[![Build Status](https://travis-ci.org/IBM/microprobe.svg?branch=master)](https://travis-ci.org/IBM/microprobe)\n\n![GitHub](https://img.shields.io/github/license/IBM/microprobe.svg)\n![GitHub forks](https://img.shields.io/github/forks/IBM/microprobe.svg?style=social)\n![GitHub stars](https://img.shields.io/github/stars/IBM/microprobe.svg?style=social)\n![GitHub watchers](https://img.shields.io/github/watchers/IBM/microprobe.svg?style=social)\n\n![PyPI - License](https://img.shields.io/pypi/l/microprobe_all.svg)\n![PyPI - Implementation](https://img.shields.io/pypi/implementation/microprobe_all.svg)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/microprobe_all.svg)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/microprobe_all.svg)\n\n![PyPI - Downloads - Day](https://img.shields.io/pypi/dd/microprobe_all.svg)\n![PyPI - Downloads - Week](https://img.shields.io/pypi/dw/microprobe_all.svg)\n![PyPI - Downloads - Month](https://img.shields.io/pypi/dm/microprobe_all.svg)\n\nThis is a short description. We refer you to the full documentation\nthat can be found here:\n\n**https://ibm.github.io/microprobe/**\n\nIBM users can refer to the following extended documentation:\n\n**https://pages.github.ibm.com/MicroProbe/microprobe_private/**\n\nRequired commands\n-----------------\n\n* git\n* python (3.7, 3.8, 3.9)\n* virtualenv: https://virtualenv.pypa.io/en/stable/\n\nFirst-time set up\n-----------------\n\nWe are assuming a bash environment throughout the process. You might\ntry to use other shell, although some commands might need to be\nmodified accordingly. Execute the following commands the first\ntime:\n\n```bash\ngit clone --recursive git@github.com:IBM/microprobe.git INSTALLDIRECTORY/microprobe\ncd INSTALLDIRECTORY/microprobe\nbootstrap_environment.sh\n```\n\nHopefully, the installation is complete. Otherwise, report the\nerror to the development team. The commands above did the following:\ncreate a virtual python environment to avoid any dependency issues\n(which we found quite often...) and activate it. Then, we have\nchecked out the repository and all of its submodules. Finally,\nwe installed the required dependencies.\n\nUsing Microprobe\n----------------\n\nAssuming that all the variables above are set in your environment,\nyou just need to execute the following command to start using Microprobe.\n\n```bash\ncd INSTALLDIRECTORY\nsource activate_microprobe\n```\n\nYou will see that you command prompt changes. You should be able\nto execute the Microprobe related commands. This should be the only\ncommand you need to execute before using Microprobe related commands.\n\nUpdating Microprobe\n-------------------\n\nSince we are in development mode, you just need to go to\n**INSTALLDIRECTORY/microprobe** and execute the following command:\n\n```bash\ngit pull --update --recurse-submodules\nfind . -name \\.*.cache -delete\nfind . -name \\.*.lock -delete\n```\n\nBasically, we are pulling the latest copy of the repository and the\nsubmodules, and cleaning up any cached files.\n\nContributing to Microprobe\n--------------------------\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for policies\non pull-requests to this repo.\n\nMicroprobe\n==========\n\nMicroprobe is a **productive** microbenchmark generation framework that an user\ncan **adapt** towards exercising a complex multi-core, multi-threaded computing\nsystem in a variety of redundant ways for answering a range of questions\nrelated to energy and performance.\n\nThe growth in complexity of microprocessor systems today --composed of\nmulti-core, multi-threaded processors with multi-level cache hierarchies and\ngiga-bytes of memory--, hardens the pre-silicon system modeling and the\npost-silicon system characterizations. We believe that microbenchmarks,\ngenerated with particular objectives in mind, hold the key to obtaining\naccurate characterizations of microprocessor systems. Specially crafted\nmicrobenchmarks may be run on simulators (pre-silicon stage) or real machines\n(post-silicon stage) to help understand, diagnose and fix deficiencies\nsystematically. However, manual generation of such \"stress-marks\" is tedious,\nand requires intimate knowledge of the underlying microarchitecture pipeline\nsemantics. Automated microbenchmark generation is therefore crucial in this\nregard. Microprobe is developed to fulfill that need.\n\nKey features\n------------\n\nThe automated generation facility must maximize the productivity\nof the end-user, allowing the generation of different classes of\nmicrobenchmarks that are useful in answering a range of different\n(*unknown*/*future*) questions.  Therefore, we develop Microprobe with the\nfollowing features in mind:\n\n\n* **Adaptive and flexible**. We design the microbenchmark\n  synthesizer of Microprobe to work in a compiler-like fashion, i.e.\n  applying a set of passes to a internal representation of the\n  microbenchmark. This allows the users to adapt the\n  microbenchmark generation process to their needs,\n  providing the flexibility and the extensibility required.\n\n* **Microarchitecture semantics aware**. Microprobe includes\n  low-level information of the target microarchitectures.\n  This information is crucial to assist the generation of\n  microarchitecture aware microbenchmarks, allowing the definition\n  of microbenchmark generation policies based on them.\n  It provides a *white-box* solution to the users to define microbenchmarks\n  with very specific microarchitecture properties, avoiding the need to\n  master every detail of the complex underlying architectures.\n\n* **Integrated design space exploration (DSE)**. Design space explorations\n  have become mandatory to understand the performance of computer architectures\n  due to their increase in complexity. In addition, DSE are required to\n  find microbenchmarks that fulfill a set of dynamic properties that cannot be\n  ensured statically (during code generation). DSE support is therefore a basic\n  functionality that any productive microbenchmark generation framework\n  should have. Microprobe provides generic DSE support to be able to implement\n  different  customizable search strategies within the design space defined\n  by the user (*feature not yet released*)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibm%2Fmicroprobe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibm%2Fmicroprobe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibm%2Fmicroprobe/lists"}