Giter Site home page Giter Site logo

george-matheou / freddo-project Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 1.54 MB

FREDDO is a software runtime that provides data-driven concurrency on single-node and distributed multi-core systems.

License: GNU General Public License v3.0

Makefile 1.58% C++ 61.32% C 36.70% Shell 0.40%
high-performance-computing data-flow data-driven cplusplus multi-core multithreading clusters runtime-system

freddo-project's Introduction

freddo-project

FREDDO is a software runtime, implemented in C++11, that provides data-driven concurrency on single-node and distributed multi-core systems. It is based on Data-Driven Multithreading [1-2], a hybrid control-flow/data-flow model that schedules threads based on data availability on sequential processors.

Preface

In case you have any publications resulting from FREDDO, please cite the following publications:

  • G. Matheou and P. Evripidou, "FREDDO: an efficient framework for runtime execution of data-driven objects," Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA), 2016. ISBN: 1-60132-444-8. [Online]. Available: http://worldcomp-proceedings.com/proc/p2016/PDP3458.pdf

  • G. Matheou and P. Evripidou, "Data-Driven Concurrency for High Performance Computing," ACM Transactions on Architecture and Code Optimization (TACO) 14.4 (2017): 53. DOI: 10.1145/3162014

Install/uninstall FREDDO

A) Install Prerequisites

  1. GCC compiler with C++11 support
  2. MPI library with multi-threading support. FREDDO has been tested with OpenMPI (Versions: 1.8.4, 2.0.1 and 2.1.1). However, we expect that FREDDO will work with any MPI version that supports multithreading.

B) Install FREDDO

  • Go to freddo directory
  • make clean (will clean the freddo project in the current directory)
  • make MPI_BIN_PATH=<Path to the MPI's bin directory>
    • e.g., make MPI_BIN_PATH=/opt/openmpi3/bin/
  • make install
    • FREDDO library will be installed in /usr/local by default. If you want to change the installation directory you should set the FREDDO_INSTALL_DIR variable. For example:
      • make install FREDDO_INSTALL_DIR=../install_freddo

C) Uninstall FREDDO

  • Go to freddo directory
  • make uninstall (will remove the binaries/libraries and header files from the installation directory)
    • If during installation you set a different installation directory than the default (i.e., /usr/local), you should set the FREDDO_INSTALL_DIR variable. For example:
      • make uninstall FREDDO_INSTALL_DIR=../install_freddo

Compile and execute benchmarks

A) Install prerequisite libraries

Install ScaLAPACK, LAPACK and PLASMA libraries following the instructions found in docs directory. The SCALAPACK_LIB_DIR, LAPACK_DIR and PLASMA_DIR should be specified, either by modifying the Makefile files or by using them directly along with the make commands, or by exporting them to the shell.

B) Compile benchmarks

  • Go to ./benchmarks directory
  • make clean
  • make MPI_BIN_PATH=<Path to the MPI's bin directory> (all benchmarks will be compiled and installed in bin directory)
    • e.g.: make MPI_BIN_PATH=/opt/openmpi3/bin/
  • make <X> MPI_BIN_PATH=<MPI bin directory> (will compile and install the X benchmark)
    • e.g.: make fibonacci MPI_BIN_PATH=/opt/openmpi3/bin/
  • Notice: if during FREDDO installation you set a different installation directory than the default (i.e., /usr/local), you should set the FREDDO_INSTALL_DIR variable, using absolute paths. For example:
    • e.g.: make MPI_BIN_PATH=/opt/openmpi3/bin/ FREDDO_INSTALL_DIR=~/Desktop/Workspace/freddo-project/install_freddo/
    • e.g.: make fibonacci MPI_BIN_PATH=/opt/openmpi3/bin/ FREDDO_INSTALL_DIR=~/Desktop/Workspace/freddo-project/install_freddo/

C) Execute benchmarks

  • Execute a benchmark as an MPI application. Here we show how we run Cholesky using OpenMPI (V3).
    • Run Cholesky on the same machine using 2 MPI processes (not recommended, only for testing)
      • /opt/openmpi3/bin/mpirun -np 2 --npernode 2 ./bin/cholesky/cholesky_scalapack_with_coll 2 1024 32 1
    • Run Chokesky on a 4-node cluster (one MPI process per node)
      • /opt/openmpi3/bin/mpirun -np 4 --machinefile peers.txt --npernode 1 ./bin/cholesky/cholesky_scalapack_with_coll 2 1024 32 1

References

[1] Kyriacou, Costas, Paraskevas Evripidou, and Pedro Trancoso. "Data-driven multithreading using conventional microprocessors." IEEE Transactions on Parallel and Distributed Systems 17.10 (2006): 1176-1188.

[2] Matheou, George, and Paraskevas Evripidou. "Architectural support for data-driven execution." ACM Transactions on Architecture and Code Optimization (TACO) 11.4 (2015): 52.

freddo-project's People

Contributors

george-matheou avatar

Stargazers

 avatar  avatar  avatar  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.