Code Monkey home page Code Monkey logo

zmpi_atasp's Introduction

ZMPI-ATASP -- ZMPI All-to-all Specific Library


Overview
--------
The ZMPI-ATASP library provides a new collective communication operation for performing a more fine-grained all-to-all data redistribution.
While the MPI standard all-to-all operation 'MPI_Alltoallv' allows to exchange only blocks of consecutive data elements between processes, the new fine-grained operations 'ZMPI_Alltoall_specific' allows to send each data element to an individual process.
This is achieved by accepting a user-defined distribution function the returns the target process for each data element.
A distribution function has to be specified in form of an object of type 'ZMPI_Tproc' that was previously created using one of the 'ZMPI_Tproc_create_...' functions.
Function 'ZMPI_Tproc_free' has to be used to deallocate a distribution function object.
Several implementation variants of the new communication operation as well as an earlier version of its interface can be found in:

  M. Hofmann and G. Rünger: Fine-grained Data Distribution Operations for Particle Codes.
  In: Recent Advances in Parallel Virtual Machine and Message Passing Interface, 16th European PVM/MPI Users Group Meeting, pg. 54-63. Springer, 2009.


Usage
-----
1. Use 'make' to create the library archive 'libzmpi_atasp.a' containing the ZMPI-ATASP library.
   Edit file 'Makefile' to modify compiler and options.

2. File 'zmpi_atasp.h' provides interface definitions of the library functions.

3. Use 'make demo' to create a short demo program 'specific_demo'.
   The source code of the demo is located in directory 'demo' and demonstrates the usage of the new fine-grained data redistribution operation 'ZMPI_Alltoall_specific'.


Namespace
---------
Since the definitions of this library are not part of the MPI standard, the prefix 'ZMPI_' is used for all non-standard extensions.


Datatype limitations
--------------------
The current implementation uses the lower bounds and extents of the specified MPI datatypes to copy/move data elements in memory (using memcpy/memmove operations).
Thus, sparse datatypes with wholes are not supported and can lead to undefined behavior.

zmpi_atasp's People

Contributors

mh0fm4 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.