empi

package module
v1.0.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2023 License: BSD-3-Clause Imports: 0 Imported by: 0

README

eMPI: Message Passing Interface

Go Report Card GoDoc

eMPI contains Go wrappers around the MPI message passing interface for distributed memory computation, in the empi/mpi package. This has no other dependencies and uses code generation to provide support for all Go types.

You must set the mpi build tag to actually have it build using the mpi library -- the default is to build a dummy version that has 1 proc of rank 0 always, and nop versions of all the methods.

$ go build -tags mpi

The empi/empi package has methods to support use of MPI in emergent simulations:

  • Gathering etable.Table and etensor.Tensor data across processors.

  • AllocN allocates n items to process across mpi processors.

Development

After updating any of the template files, you need to update the generated go files like so:

cd mpi
go install github.com/apache/arrow/go/arrow/_tools/tmpl
make generate

Documentation

Overview

Package empi wraps the Message Passing Interface for distributed memory data sharing across a collection of processors (procs).

It also contains some useful abstractions and error logging support in Go.

The wrapping code was initially copied from https://github.com/cpmech/gosl/mpi and significantly modified.

All standard Go types are supported using the apache arrow tmpl generation tool. Int is assumed to be 64bit and is defined as a []int because that is typically more convenient.

Directories

Path Synopsis
Package empi wraps the Message Passing Interface for distributed memory data sharing across a collection of processors (procs).
Package empi wraps the Message Passing Interface for distributed memory data sharing across a collection of processors (procs).
Package mpi wraps the Message Passing Interface for distributed memory data sharing across a collection of processors (procs).
Package mpi wraps the Message Passing Interface for distributed memory data sharing across a collection of processors (procs).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL