{"id":19705748,"url":"https://github.com/llnl/mpibind","last_synced_at":"2025-04-29T15:31:18.006Z","repository":{"id":45136732,"uuid":"281534202","full_name":"LLNL/mpibind","owner":"LLNL","description":"Pragmatic, Productive, and Portable Affinity for HPC","archived":false,"fork":false,"pushed_at":"2025-03-30T20:19:24.000Z","size":12698,"stargazers_count":36,"open_issues_count":5,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T05:03:33.122Z","etag":null,"topics":["gpu","hpc","linux","mpi","mpibind","openmp","parallel","parallel-computing","performance","portability","productivity","scientific-computing","system-software"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LLNL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2020-07-22T00:28:33.000Z","updated_at":"2025-03-31T15:30:09.000Z","dependencies_parsed_at":"2023-11-22T08:09:52.446Z","dependency_job_id":"3b13059c-06d5-42fb-8595-45a732b6cf0c","html_url":"https://github.com/LLNL/mpibind","commit_stats":{"total_commits":169,"total_committers":6,"mean_commits":"28.166666666666668","dds":"0.12426035502958577","last_synced_commit":"7b34e355abe939776411e12fde3ff0b87f75c569"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2Fmpibind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2Fmpibind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2Fmpibind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LLNL%2Fmpibind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LLNL","download_url":"https://codeload.github.com/LLNL/mpibind/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251529550,"owners_count":21603975,"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":["gpu","hpc","linux","mpi","mpibind","openmp","parallel","parallel-computing","performance","portability","productivity","scientific-computing","system-software"],"created_at":"2024-11-11T21:29:58.001Z","updated_at":"2025-04-29T15:31:16.077Z","avatar_url":"https://github.com/LLNL.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"## A Memory-Driven Mapping Algorithm for Heterogeneous Systems\n\n`mpibind` is a memory-driven algorithm to map parallel hybrid\napplications to the underlying hardware resources transparently,\nefficiently, and portably. Unlike other mappings, its primary design point\nis the memory system, including the cache hierarchy. Compute elements\nare selected based on a memory mapping and not vice versa. In\naddition, mpibind embodies a global awareness of hybrid programming\nabstractions as well as heterogeneous systems with accelerators.\n\n### Getting started \n\nThe easiest way to get `mpibind` is using\n[spack](https://github.com/spack/spack).  \n\n```\nspack install mpibind\n\n# On systems with NVIDIA GPUs\nspack install mpibind+cuda\n\n# On systems with AMD GPUs\nspack install mpibind+rocm\n\n# More details\nspack info mpibind\n```\n\nAlternatively, one can build the package manually as described below. \n\n### Building and installing \n\nThis project uses GNU Autotools.\n\n```\n$ ./bootstrap\n\n$ ./configure --prefix=\u003cinstall_dir\u003e\n\n$ make\n\n$ make install\n```\n\nIf building from a release tarball, please specify MPIBIND_VERSION appropriately. For example: \n\n```\n$ MPIBIND_VERSION=0.15.1 ./bootstrap\n\n$ ./configure --prefix=\u003cinstall_dir\u003e\n\n$ make\n\n$ make install\n```\n\n\nThe resulting library is `\u003cinstall_dir\u003e/lib/libmpibind` and a simple program using it is `src/main.c`\n\n\n### Test suite \n\n```\n$ make check\n```\n\n### Dependencies \n\n* `GNU Autotools` is the build system. \n\n* `hwloc` version 2 is required to detect the machine topology.\n\n  Before building mpibind, make sure `hwloc` can be detected with `pkg-config`:\n  ```\n  pkg-config --variable=libdir --modversion hwloc\n  ```\n  If this fails, add hwloc's pkg-config directory to `PKG_CONFIG_PATH`, e.g.,\n  ```\n  export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:\u003chwloc-prefix\u003e/lib/pkgconfig\n  ```\n\n* `libtap` is required to build the test suite.\n\n  To verify `tap` can be detected with `pkg-config`, follow a\n  similar procedure as for `hwloc` above. \n\n\n### Contributing\n\nContributions for bug fixes and new features are welcome and follow\nthe GitHub\n[fork and pull model](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-collaborative-development-models).\nContributors develop on a branch of their personal fork and create\npull requests to merge their changes into the main repository. \n\nThe steps are similar to those of the Flux framework:\n\n1. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) `mpibind`.\n2. [Clone](https://help.github.com/en/github/getting-started-with-github/fork-a-repo#keep-your-fork-synced)\nyour fork: `git clone git@github.com:[username]/mpibind.git`\n3. Create a topic branch for your changes: `git checkout -b new_feature`\n4. Create feature or add fix (and add tests if possible)\n5. Make sure everything still passes: `make check`\n6. Push the branch to your GitHub repo: `git push origin new_feature`\n7. Create a pull request against `mpibind` and describe what your\nchanges do and why you think it should be merged. List any\noutstanding *todo* items. \n\n\n### Authors\n\n`mpibind` was created by Edgar A. León.\n\n### Citing mpibind\n\nTo reference mpibind, please cite one of the\nfollowing papers:\n\n* Edgar A. León and Matthieu Hautreux. *Achieving Transparency Mapping\n  Parallel Applications: A Memory Hierarchy Affair*. In International\n  Symposium on Memory Systems, MEMSYS'18, Washington, DC,\n  October 2018. ACM. \n\n* Edgar A. León. *mpibind: A Memory-Centric Affinity Algorithm for\n  Hybrid Applications*. In International Symposium on Memory Systems,\n  MEMSYS'17, Washington, DC, October 2017. ACM.\n\n* Edgar A. León, Ian Karlin, and Adam T. Moody. *System Noise\n  Revisited: Enabling Application Scalability and Reproducibility with\n  SMT*. In International Parallel \u0026 Distributed Processing Symposium,\n  IPDPS'16, Chicago, IL, May 2016. IEEE.\n  \nOther references: \n\n* J. P. Dahm, D. F. Richards, A. Black, A. D. Bertsch, L. Grinberg, I. Karlin, S. Kokkila-Schumacher, E. A. León, R. Neely, R. Pankajakshan, and O. Pearce. *Sierra Center of Excellence: Lessons learned*. In IBM Journal of Research and Development, vol. 64, no. 3/4, May-July 2020.\n\n* Edgar A. León. *Cross-Architecture Affinity of Supercomputers*. In International Supercomputing Conference (Research Poster), ISC’19, Frankfurt, Germany, June 2019. \n\n* Edgar A. León. *Mapping MPI+X Applications to Multi-GPU\n  Architectures: A Performance-Portable Approach*. In GPU Technology\n  Conference, GTC'18, San Jose, CA, March 2018. \n  \n\n[Bibtex file](doc/mpibind.bib). \n\n\n### License\n\n`mpibind` is distributed under the terms of the MIT license. All new\ncontributions must be made under this license. \n\nSee [LICENSE](LICENSE) and [NOTICE](NOTICE) for details.\n\nSPDX-License-Identifier: MIT.\n\nLLNL-CODE-812647.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fmpibind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllnl%2Fmpibind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllnl%2Fmpibind/lists"}