https://github.com/sbromberger/gompi
OpenMPI bindings for the Go programming language
https://github.com/sbromberger/gompi
go golang hpc mpi openmpi parallel
Last synced: about 1 month ago
JSON representation
OpenMPI bindings for the Go programming language
- Host: GitHub
- URL: https://github.com/sbromberger/gompi
- Owner: sbromberger
- License: other
- Created: 2019-10-15T17:52:52.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-02-18T13:37:43.000Z (about 3 years ago)
- Last Synced: 2025-03-18T05:23:25.365Z (about 1 month ago)
- Topics: go, golang, hpc, mpi, openmpi, parallel
- Language: Go
- Homepage:
- Size: 97.7 KB
- Stars: 42
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
[](https://github.com/sbromberger/gompi/actions/workflows/ci.yml)
GoMPI: Message Passing Interface for Parallel Computing
The `gompi` package is a lightweight wrapper to the [OpenMPI](https://www.open-mpi.org) C++ library
designed to develop algorithms for parallel computing.GoMPI is a fork of the [gosl](https://github.com/cpmech/gosl) MPI library with additional methods.
## Installation
1) install [OpenMPI](https://www.open-mpi.org) for your system
2) ensure [golang.org/x/tools/cmd/stringer](https://godoc.org/golang.org/x/tools/cmd/stringer) is installed (`go get` if not)
3) run `make install`(Other `make` options include `test`, `build`, and `clean`.)
## Performance
The latency benchmarks are as follows (note: the Go benchmark does not test a message size of zero bytes):
| message size (bytes) | GoMPI (µs) | OSU MPI Latency Test v5.8 (µs) |
|---|---|---|
| 0 | n/a | 0.36 |
| 1 | 0.45 | 0.33 |
| 2 | 0.45 | 0.32 |
| 4 | 0.42 | 0.31 |
| 8 | 0.45 | 0.30 |
| 16 | 0.43 | 0.32 |
| 32 | 0.43 | 0.32 |
| 64 | 0.43 | 0.32 |
| 128 | 0.45 | 0.35 |
| 256 | 0.47 | 0.37 |
| 512 | 0.60 | 0.41 |
| 1024 | 0.66 | 0.34 |
| 2048 | 0.74 | 0.45 |
| 4096 | 2.01 | 1.51 |
| 8192 | 2.75 | 1.82 |
| 16384 | 3.61 | 2.36 |
| 32768 | 4.83 | 3.32 |
| 65536 | 9.24 | 4.96 |
| 131072 | 17.15 | 10.53 |
| 262144 | 31.09 | 23.07 |
| 524288 | 57.01 | 43.78 |
| 1048576 | 117.72 | 84.43 |
| 2097152 | 235.34 | 220.47 |
| 4194304 | 599.43 | 619.64 |Benchmark code may be found in `cmd/latency.go`.