Skip to content

Commit

Permalink
Merge pull request #1 from gvallee/initial_code
Browse files Browse the repository at this point in the history
Initial code
  • Loading branch information
gvallee authored Nov 15, 2021
2 parents 4f441c6 + 05ef0e3 commit bf93d40
Show file tree
Hide file tree
Showing 42 changed files with 7,301 additions and 0 deletions.
70 changes: 70 additions & 0 deletions .gitignore
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
6 changes: 6 additions & 0 deletions .gitmodules
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
31 changes: 31 additions & 0 deletions Makefile
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
137 changes: 137 additions & 0 deletions README.md
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
```
1 change: 1 addition & 0 deletions SMB
Submodule SMB added at fd975b
1 change: 1 addition & 0 deletions etc/examples/workspace.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
workspace_dir = /tmp/workspace_dir
18 changes: 18 additions & 0 deletions openhpca.conf
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
1 change: 1 addition & 0 deletions osu_noncontig_mem
Submodule osu_noncontig_mem added at f3333c
60 changes: 60 additions & 0 deletions src/overlap/Makefile
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
Loading

0 comments on commit bf93d40

Please sign in to comment.