Skip to content

ExaScience/shark

Repository files navigation

=========================================
Scalable Hybrid Array Kit (Shark): README
=========================================

Shark is a library for high-level parallel programming using n-dimensional
grids. Please see the LICENSE file for licensing terms.

FEATURES

 - n-dimensional global arrays of arbitrary datatypes
 - regular and irregular distributions
 - run-time redistribution
 - ghost regions (with or without diagonals)
 - boundary conditions
 - gather/scatter using sparse arrays
 - asynchronous operations using futures
 - one-sided get/put/accumulate 
 - global array expressions in natural syntax (using expression templates)

REQUIREMENTS

 - A C++ compiler and standard library with support for C++11 features such as
   lambdas, move semantics and varargs templates. Shark is developed using:
     * gcc 4.6, 4.7 and 4.8
     * icc 12.1 and 13 with libstdc++ from gcc 4.4
 - pkg-config
 - An MPI2 implementation (recommended)
 - POSIX threads with spin locks (optional)
 - OpenMP 2.5 support (optional)
 - Intel Threading Building Blocks (TBB) 2.2 or newer (optional)

BUILDING

    mkdir build
    cd build
    ../configure
    make -j4

Try "configure --help" for configuration options. Please note that the
configuration script will use pkg-config to determine how to build with
dependencies such as a particular MPI implementation, TBB,... You may have to
add a simple pkg-config file for a particular dependency if none is available.

For example, tbb.pc could contain:

    tbbdir=/path/to/tbb

    Name: tbb
    Description: Intel Threading Building Blocks
    Version: 4.0
    Cflags: -I${tbbdir}/include
    Libs: -L${tbbdir}/lib -ltbb

FEEDBACK

Please send feedback to Bruno De Fraine <brunodf@lab.exascience.com>.