-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from gvallee/initial_code
Initial code
- Loading branch information
Showing
42 changed files
with
7,301 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,70 @@ | ||
# Prerequisites | ||
*.d | ||
|
||
# Object files | ||
*.o | ||
*.ko | ||
*.obj | ||
*.elf | ||
|
||
# Linker output | ||
*.ilk | ||
*.map | ||
*.exp | ||
|
||
# Precompiled Headers | ||
*.gch | ||
*.pch | ||
|
||
# Libraries | ||
*.lib | ||
*.a | ||
*.la | ||
*.lo | ||
|
||
# Shared objects (inc. Windows DLLs) | ||
*.dll | ||
*.so | ||
*.so.* | ||
*.dylib | ||
|
||
# Executables | ||
*.exe | ||
*.out | ||
*.app | ||
*.i*86 | ||
*.x86_64 | ||
*.hex | ||
|
||
# Debug files | ||
*.dSYM/ | ||
*.su | ||
*.idb | ||
*.pdb | ||
|
||
# Kernel Module Compile Results | ||
*.cmd | ||
.tmp_versions/ | ||
modules.order | ||
Module.symvers | ||
Mkfile.old | ||
dkms.conf | ||
|
||
# Generated binaries | ||
tools/cmd/openhpca_setup/openhpca_setup | ||
tools/cmd/openhpca_run/openhpca_run | ||
tools/cmd/webui/webui | ||
src/overlap/overlap_iallreduce | ||
src/overlap/overlap_ialltoall | ||
src/overlap/overlap_ialltoallv | ||
src/overlap/overlap_ibarrier | ||
src/overlap/overlap_ibcast | ||
src/overlap/overlap_igather | ||
src/overlap/overlap_igatherv | ||
src/overlap/overlap_iallgather | ||
src/overlap/overlap_iallgatherv | ||
src/overlap/overlap_ireduce | ||
|
||
|
||
# Generated logs | ||
*.log |
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,6 @@ | ||
[submodule "SMB"] | ||
path = SMB | ||
url = https://github.com/sandialabs/SMB | ||
[submodule "osu_noncontig_mem"] | ||
path = osu_noncontig_mem | ||
url = https://github.com/yqin/osu-micro-benchmarks |
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,31 @@ | ||
.PHONY: check update tools init install | ||
|
||
.SILENT: | ||
all: check tools | ||
@echo "Done" | ||
|
||
GOCMD := $(shell command -v go 2>/dev/null) | ||
ifndef GOCMD | ||
tools: | ||
@echo "Go not installed; skipping tools' compilation" | ||
else | ||
tools: | ||
cd tools && make; | ||
endif | ||
|
||
check: | ||
|
||
init: | ||
./tools/cmd/openhpca_setup/openhpca_setup | ||
|
||
install: check update tools init | ||
|
||
update: | ||
git submodule init | ||
git submodule update --remote | ||
|
||
clean: | ||
cd SMB/src/mpi_overhead; make clean | ||
cd SMB/src/msgrate; make clean | ||
cd tools; make clean | ||
cd src/overlap; make clean |
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 |
---|---|---|
@@ -1 +1,138 @@ | ||
# openhpca | ||
|
||
OpenHPCA is an implementation of the benchmarks defined by the High performance | ||
compute availability (HPCA) group. | ||
HPCA aims at providing a comprehensive set of benchmarks to evaluate the | ||
overall compute resource performance in the presence of in-network computing | ||
technologies. These benchmarks are a mix of existing benchmarks as well as new | ||
benchmarks that are defined and implemented by the group. | ||
|
||
The benchmarks included in OpenHPCA are: | ||
- Sandia micro-benchmarks (SMB): https://cs.sandia.gov/smb/ | ||
- the OSU micro-benchmarks: http://mvapich.cse.ohio-state.edu/benchmarks/ | ||
- a modified version of the OSU mico-benchmarks for non-contiguous data | ||
- a OpenHPCA benchmark suite evaluating the overlap capabilities in the | ||
context of non-blocking MPI operations (overlap). | ||
|
||
The currently rely on the following versions of the different external | ||
bemchmarks: | ||
- OSU 5.7 | ||
- SMB from `https://github.com/sandialabs/SMB` | ||
|
||
# Installation | ||
|
||
Since OpebHPCA is composed of already existing benchmarks and new benchmarks. | ||
an entire infrastructure has been developed to integrate them together and | ||
make it easier to install and run. While users are encouraged to use the | ||
integrated infrastructure, it is also possible to manually install all the | ||
different benchmarks. | ||
|
||
## Pre-requirements | ||
|
||
The OpenHPCA software requires the following components to be installed prior | ||
setting it up: | ||
- Go, version 1.14 or newer, | ||
- an MPI implementation. | ||
|
||
## Using the integrated infrastructure | ||
|
||
OpenHPCA relies on a workspace so before installing OpenHPCA for the first | ||
time, users | ||
are required to define the configuration of the workspace. A new workspace can | ||
be specified by creating the `~/.openhpcx/workspace.conf` file. only one | ||
workspace is supported at any given time at the moment, multiple workspaces | ||
can only be currently used by creating a symlink to the target configuration | ||
file that needs to be used at a given time. Future versions of the suite will | ||
support multiple workspace so multiple MPI installation could be evaluated | ||
in parallel. The content of the file should look like: | ||
|
||
``` | ||
dir = <PATH/TO/DIRECTORY> | ||
mpi = <PATH/TO/THE/MPI/INSTALLATION/TO/USE/WITH/OPENHPCA> | ||
``` | ||
Only two configuration parameters are required: | ||
- `dir`, which specifies where the workspace will be practically deployed, i.e., | ||
where all the data, source codes, compiled data is stored. Note that it must be | ||
on a location that is accessible from compute nodes when installed on a cluster. | ||
- `mpi`, which points to the MPI installation to use to run the MPI benchmarks | ||
(e.g., SMB, OSU, overlap). | ||
Once the workspace configuration created, execute the following command: | ||
`make init` | ||
|
||
Once the workspace defined, users can install the benchmarks simply by running | ||
`make install`. This configures, builds and installs all the benchmarks | ||
in the workspace. | ||
|
||
## Manual installation | ||
|
||
### OSU | ||
|
||
While the intergated infrastructure will automatically download and install the | ||
OSU mico-benchmarks, a manual installation requires users to manually download, | ||
configure and install it. Please refer to the OSU documentation for details. | ||
|
||
### SMB | ||
|
||
While the intergated infrastructure will automatically download and install the | ||
SMB micro-benchmarks, a manual installation requires users to manually download, | ||
configure and install it. Please refer to the documentation available from the | ||
github project: https://github.com/sandialabs/SMB. | ||
|
||
### overlap | ||
|
||
Please refer to the `src/overlap/README.md` file for instructions. | ||
|
||
# Execution | ||
|
||
## Using the integrated framework | ||
|
||
OpenHPCA provides the `openhpca_run` tool that automatically run all the | ||
benchmarks following best practices for such benchmarks. This tool can | ||
interface with Slurm and other job management systems. Note that the | ||
current implementation focuses on Slurm and already provide some support | ||
for SSH based configuration. If support for other job managers is required, | ||
please contact the development team. The infrastructure has been designed | ||
to be easily extensible and support for additional job managers should be | ||
doable with minimum effort. | ||
|
||
To run the benchmarks, the full command line looks like: | ||
``` | ||
./tools/cmd/openhpca_run/openhpca_run -d mlx5_0:1 -p cluster_partition | ||
``` | ||
Where `mlx5_0:1` is the device to use for the execution of the device and | ||
`cluster_partition` the partition to use, for instance, on a Slurm cluster. | ||
For a full description of the supported parameters, please execute | ||
`./tools/cmd/openhpca_run/openhpca_run -h` from the top directory of the | ||
OpenHPCA source code. | ||
|
||
## Manual execution | ||
|
||
For a manual execution, users are asked to run the various benchmarks as they | ||
would usually do. All the benchmarks are available from the `install` directory | ||
in the workspace that they defined. | ||
|
||
# Data visualization | ||
|
||
Since OpenHPCA generates a fairly large of data, the recommanded way to | ||
visualize all the results is to use the OpenHPCA viewer. | ||
|
||
To start the viewer, simply execute the following command from the top | ||
directory of the OpenHPCA source code: | ||
``` | ||
./tools/cmd/webui/webui -port 8082 | ||
``` | ||
In this example, the viewer starts on the 8082 port (8080 is used by default). | ||
|
||
For details about all the supported parameters, please refer to the | ||
`./tools/cmd/webui/webui -h` command output. | ||
|
||
As a note, to connect to a remmote server through SSH where the webui is meant | ||
to be executed, use a SSH port fowarding command such as: | ||
``` | ||
ssh -L 8080:127.0.0.1:8080 remote-server | ||
``` | ||
You can the connect to the remote server and access the webui using your | ||
preferred web browser on your local machine by using the following URL: | ||
``` | ||
http://127.0.0.1:8080 | ||
``` |
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 @@ | ||
workspace_dir = /tmp/workspace_dir |
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,18 @@ | ||
# This is the configuration file used by OpenHPCA to store configuration | ||
# data. This configuration file is not meant to be modified by users. | ||
# To customize the openHPCA environment, please create/update the | ||
# ~/.openhpca/workspace.conf file. | ||
# An example of openhpca_workspace.conf file is provided in: | ||
# etc/examples/openhpca_workspace.conf | ||
|
||
[OSU] | ||
URL=http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.7.tar.gz | ||
|
||
[osu_noncontig_mem] | ||
URL=file://OPENHPCA_DIR/osu_noncontig_mem | ||
|
||
[SMB] | ||
URL=file://OPENHPCA_DIR/SMB | ||
|
||
[overlap] | ||
URL=file://OPENHPCA_DIR/src/overlap |
Submodule osu_noncontig_mem
added at
f3333c
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 @@ | ||
# | ||
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. | ||
# | ||
# See LICENSE.txt for license information | ||
# | ||
|
||
CFLAGS=-Wall -std=c99 | ||
|
||
all: overlap_ialltoall \ | ||
overlap_ialltoallv \ | ||
overlap_ireduce \ | ||
overlap_iallreduce \ | ||
overlap_ibcast \ | ||
overlap_ibarrier \ | ||
overlap_igather \ | ||
overlap_igatherv \ | ||
overlap_iallgather \ | ||
overlap_iallgatherv | ||
|
||
overlap_igather: overlap_igather.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_igather overlap_igather.c -lm | ||
|
||
overlap_igatherv: overlap_igatherv.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_igatherv overlap_igatherv.c -lm | ||
|
||
overlap_iallgather: overlap_iallgather.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_iallgather overlap_iallgather.c -lm | ||
|
||
overlap_iallgatherv: overlap_iallgatherv.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_iallgatherv overlap_iallgatherv.c -lm | ||
|
||
overlap_ialltoall: overlap_ialltoall.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_ialltoall overlap_ialltoall.c -lm | ||
|
||
overlap_ialltoallv: overlap_ialltoallv.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_ialltoallv overlap_ialltoallv.c -lm | ||
|
||
overlap_ireduce: overlap_ireduce.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_ireduce overlap_ireduce.c -lm | ||
|
||
overlap_iallreduce: overlap_iallreduce.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_iallreduce overlap_iallreduce.c -lm | ||
|
||
overlap_ibcast: overlap_ibcast.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_ibcast overlap_ibcast.c -lm | ||
|
||
overlap_ibarrier: overlap_ibarrier.c overlap.h overlap_tdm.h overlap_ddm.h | ||
mpicc -Wno-format-zero-length ${CFLAGS} -o overlap_ibarrier overlap_ibarrier.c -lm | ||
|
||
clean: | ||
@rm -f overlap_ireduce | ||
@rm -f overlap_iallreduce | ||
@rm -f overlap_ialltoall | ||
@rm -f overlap_ialltoallv | ||
@rm -f overlap_igather | ||
@rm -f overlap_igatherv | ||
@rm -f overlap_iallgather | ||
@rm -f overlap_iallgatherv | ||
@rm -f overlap_ibcast | ||
@rm -f overlap_ibarrier |
Oops, something went wrong.