Skip to content
/ umpi Public
forked from xdsopl/umpi

intentionally small and simple MPI implementation

License

Notifications You must be signed in to change notification settings

caisan/umpi

 
 

Repository files navigation

umpi - intentionally small and simple MPI implementation
Written in 2014 by <Ahmet Inan> <xdsopl@googlemail.com>
To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.

umpi is written arround process_vm_readv and process_vm_writev in C++11 and uses libc++ for its full C++11 support.
To ease the IPC over shared memory, it uses based_ptr, which only saves the offset to a base address (e.g. the starting address of the shared memory map).
Finally, a pool allocator using based_ptr and the nice libc++ allows us to use std containers for the IPC.

Processes communicate entirely over shared memory and no sockets get opened.
This allows us to start thousands of processes on a single shared memory Computer.

Dependencies:

"Cross Memory Support" in Linux:
CONFIG_CROSS_MEMORY_ATTACH=y
Option can be found in "Processor type and features"

A proper C++11 Standard Library:
libc++
http://libcxx.llvm.org/

A proper C99 and C++11 Compiler:
clang, clang++
http://clang.llvm.org/

If you would like to help develop umpi and send me Patches:

Please try to follow the Linux Coding Style:
/usr/src/linux/Documentation/CodingStyle

If you do not like the default vim settings and have your own defaults for tabs, please add this to each file you would like to edit and commit it locally:
// vim: set noexpandtab tabstop=8 shiftwidth=8 softtabstop=0:

you should then be able to switch to the saner defaults before editing by issuing this in vim:
:set modeline

About

intentionally small and simple MPI implementation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 62.0%
  • C 37.1%
  • Makefile 0.9%