-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit df581c2
Showing
26 changed files
with
17,702 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2020, Lawrence Livermore National Security, LLC | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
This work was produced under the auspices of the U.S. Department of | ||
Energy by Lawrence Livermore National Laboratory under Contract | ||
DE-AC52-07NA27344. | ||
|
||
This work was prepared as an account of work sponsored by an agency of | ||
the United States Government. Neither the United States Government nor | ||
Lawrence Livermore National Security, LLC, nor any of their employees | ||
makes any warranty, expressed or implied, or assumes any legal liability | ||
or responsibility for the accuracy, completeness, or usefulness of any | ||
information, apparatus, product, or process disclosed, or represents that | ||
its use would not infringe privately owned rights. | ||
|
||
Reference herein to any specific commercial product, process, or service | ||
by trade name, trademark, manufacturer, or otherwise does not necessarily | ||
constitute or imply its endorsement, recommendation, or favoring by the | ||
United States Government or Lawrence Livermore National Security, LLC. | ||
|
||
The views and opinions of authors expressed herein do not necessarily | ||
state or reflect those of the United States Government or Lawrence | ||
Livermore National Security, LLC, and shall not be used for advertising | ||
or product endorsement purposes. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
## A Memory-Driven Mapping Algorithm for Heterogeneous Systems | ||
|
||
**mpibind** is a memory-driven algorithm to map parallel hybrid | ||
applications to the underlying hardware resources transparently, | ||
efficiently, and portably. Unlike other mappings, its primary design point | ||
is the memory system, including the cache hierarchy. Compute elements | ||
are selected based on a memory mapping and not vice versa. In | ||
addition, *mpibind* embodies a global awareness of hybrid programming | ||
abstractions as well as heterogeneous devices such as accelerators. | ||
|
||
### Getting Started | ||
|
||
|
||
### Contributing | ||
|
||
Contributions for bug fixes and new features are welcome and follow | ||
a fork/pull model: Contributors develop on a branch of their | ||
personal fork and create pull requests to merge their changes into the | ||
main repository. | ||
|
||
### Authors | ||
|
||
*mpibind* was created by Edgar A. León. | ||
|
||
#### Citing *mpibind* | ||
|
||
To reference *mpibind* in a publication, please cite one of the | ||
following papers: | ||
|
||
* Edgar A. León and Matthieu Hautreux. *Achieving Transparency Mapping | ||
Parallel Applications: A Memory Hierarchy Affair*. In International | ||
Symposium on Memory Systems, MEMSYS'18, Washington, DC, | ||
October 2018. ACM. | ||
|
||
* Edgar A. León. *Mapping MPI+X Applications to Multi-GPU | ||
Architectures: A Performance-Portable Approach*. In GPU Technology | ||
Conference, GTC'18, San Jose, CA, March 2018. | ||
|
||
* Edgar A. León. *mpibind: A Memory-Centric Affinity Algorithm for | ||
Hybrid Applications*. In International Symposium on Memory Systems, | ||
MEMSYS'17, Washington, DC, October 2017. ACM. | ||
|
||
* Edgar A. León, Ian Karlin, and Adam T. Moody. *System Noise | ||
Revisited: Enabling Application Scalability and Reproducibility with | ||
SMT*. In International Parallel & Distributed Processing Symposium, | ||
IPDPS'16, Chicago, IL, May 2016. IEEE. | ||
|
||
[Bibtex file](doc/mpibind.bib). | ||
|
||
|
||
### License | ||
|
||
*mpibind* is distributed under the terms of the MIT license. All new | ||
contributions must be made under this license. | ||
|
||
See [LICENSE](LICENSE) and [NOTICE](NOTICE) for details. | ||
|
||
SPDX-License-Identifier: MIT. | ||
|
||
LLNL-CODE-812647. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
|
||
## mpibind for two-level memory systems | ||
@InProceedings{ leon.memsys18, | ||
author = {Edgar A. Le{\'o}n and Matthieu Hautreux}, | ||
title = {Achieving Transparency Mapping Parallel Applications: A Memory Hierarchy Affair}, | ||
booktitle = {International Symposium on Memory Systems}, | ||
series = {MEMSYS'18}, | ||
publisher = {ACM}, | ||
address = {Washington, DC}, | ||
year = {2018}, | ||
month = oct | ||
} | ||
|
||
## mpibind for multi-GPU systems | ||
@InProceedings{ leon.gtc18, | ||
author = {Edgar A. Le{\'o}n}, | ||
title = {Mapping {MPI+X} Applications to Multi-{GPU} Architectures: A Performance-Portable Approach}, | ||
booktitle = {GPU Technology Conference}, | ||
series = {GTC'18}, | ||
address = {San Jose, CA}, | ||
year = {2018}, | ||
month = mar | ||
} | ||
|
||
## The initial mpibind algorithm | ||
@InProceedings{ leon.memsys17, | ||
author = {Edgar A. Le{\'o}n}, | ||
title = {{mpibind}: A Memory-Centric Affinity Algorithm for Hybrid Applications}, | ||
booktitle = {International Symposium on Memory Systems}, | ||
series = {MEMSYS'17}, | ||
publisher = {ACM}, | ||
address = {Washington, DC}, | ||
year = {2017}, | ||
month = oct | ||
} | ||
|
||
## Using mpibind to reduce system noise through thread specialization | ||
@inproceedings{ leon.ipdps16, | ||
author = {Edgar A. Le{\'o}n and Ian Karlin and Adam T. Moody}, | ||
title = {System Noise Revisited: Enabling Application Scalability and Reproducibility with {SMT}}, | ||
booktitle = {International Parallel \& Distributed Processing Symposium}, | ||
series = {IPDPS'16}, | ||
publisher = {IEEE}, | ||
address = {Chicago, IL}, | ||
year = {2016}, | ||
month = may | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
|
||
UNAME = $(shell uname) | ||
BASIC_CFLAGS = -Wall -Werror | ||
|
||
HWLOC_CFLAGS = $(shell pkg-config --cflags hwloc) | ||
HWLOC_LDLIBS = $(shell pkg-config --libs hwloc) | ||
|
||
# Building libmpibind | ||
VER = 1 | ||
MIN = 0 | ||
REL = 1 | ||
MPIBIND_LIB = libmpibind.so | ||
MPIBIND_SONAME = $(MPIBIND_LIB).$(VER) | ||
MPIBIND_FNAME = $(MPIBIND_SONAME).$(MIN).$(REL) | ||
|
||
# Using libmpibind | ||
MPIBIND_DIR = $(shell pwd) | ||
MPIBIND_CFLAGS = -I$(MPIBIND_DIR) $(HWLOC_CFLAGS) | ||
MPIBIND_LDLIBS = -L$(MPIBIND_DIR) -lmpibind $(HWLOC_LDLIBS) | ||
ifeq ($(UNAME),Linux) | ||
MPIBIND_LDLIBS += -Wl,-rpath=$(MPIBIND_DIR) | ||
endif | ||
|
||
|
||
PROGS = main | ||
|
||
## HWLOC_XML_VERBOSE=1 | ||
## HWLOC_XMLFILE=topo-xml/lassen-hw2.xml | ||
## ./mpibind_v0.14.1 | ||
|
||
all: $(PROGS) $(MPIBIND_SONAME) $(MPIBIND_LIB) | ||
|
||
dev_tests: dev_tests.c mpibind.h | ||
$(CC) $(BASIC_CFLAGS) $(HWLOC_CFLAGS) $@.c $(HWLOC_LDLIBS) -o $@ | ||
|
||
main: main.c $(MPIBIND_LIB) | ||
$(CC) $@.c $(BASIC_CFLAGS) $(MPIBIND_CFLAGS) -o $@ $(MPIBIND_LDLIBS) | ||
|
||
# Todo | ||
#check: | ||
#install: | ||
|
||
$(MPIBIND_SONAME): $(MPIBIND_FNAME) | ||
ln -s -f $< $@ | ||
|
||
$(MPIBIND_LIB): $(MPIBIND_FNAME) | ||
ln -s -f $< $@ | ||
|
||
$(MPIBIND_FNAME): mpibind.o | ||
ifeq ($(UNAME),Linux) | ||
$(CC) -shared -Wl,-soname,$(MPIBIND_SONAME) -o $@ $< $(HWLOC_LDLIBS) | ||
else | ||
$(CC) -shared -o $@ $< $(HWLOC_LDLIBS) | ||
endif | ||
|
||
mpibind.o: mpibind.c mpibind.h mpibind-priv.h | ||
$(CC) -fPIC $(BASIC_CFLAGS) $(HWLOC_CFLAGS) -c mpibind.c | ||
|
||
|
||
clean: | ||
rm -f $(PROGS) $(MPIBIND_LIB) $(MPIBIND_SONAME) $(MPIBIND_FNAME) *.dSYM *.o *~ |
Oops, something went wrong.