Giter Club home page Giter Club logo

zhaobin74 / dlb Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bsc-pm/dlb

0.0 1.0 0.0 2.41 MB

DLB (Dynamic Load Balancing) library is a tool, transparent to the user, that will dynamically react to the application imbalance modifying the number of resources at any given time.

Home Page: https://pm.bsc.es/dlb

License: GNU Lesser General Public License v3.0

Makefile 3.55% Shell 5.38% M4 4.50% Python 2.49% C 80.41% C++ 1.72% Fortran 1.93%

dlb's Introduction

Dynamic Load Balancing Library

DLB is a dynamic library designed to speed up HPC hybrid applications (i.e., two levels of parallelism) by improving the load balance of the outer level of parallelism (e.g., MPI) by dynamically redistributing the computational resources at the inner level of parallelism (e.g., OpenMP). at run time.

This dynamism allows DLB to react to different sources of imbalance: Algorithm, data, hardware architecture and resource availability among others.

Lend When Idle

LeWI (Lend When Idle) is the algorithm used to redistribute the computational resources that are not being used from one process to another process inside the same shared memory node in order to speed up its execution.

Dynamic Resource Ownership Manager

DROM (Dynamic Resource Ownership Manager) is the algorithm used to manage the CPU affinity of a process running a shared memory programming model (e.g., OpenMP).

Installation

  1. Build requirements

    • A supported platform running Linux (i386, x86-64, ARM, PowerPC or IA64)
    • GNU C/C++ compiler versions 4.4 or higher
    • Python 2.4 or higher
  2. Download DLB code

    1. From a git repository
      • Clone DLB repository

        • From GitHub:

          git clone https://github.com/bsc-pm/dlb.git
        • From our internal GitLab repository (BSC users only):

          git clone https://pm.bsc.es/gitlab/dlb/dlb.git
      • Bootstrap autotools:

        cd dlb
        ./bootstrap
    2. From a distributed tarball
  3. Run configure. Optionally, check the configure flags by running ./configure -h to see detailed information about some features.

    ./configure --prefix=<DLB_PREFIX> [<configure-flags>]
  4. Build ans install

    make
    make install
  5. Optionally, add the installed bin directory to your PATH

    export PATH=<DLB_PREFIX>/bin:$PATH

For more information about the autotools installation process, please refer to INSTALL

Basic usage

Simply link or preload a binary with the DLB shared library libdlb.so and configure DLB using the environment variable DLB_ARGS.

# Link application
mpicc -o myapp myapp.c -L<DLB_PREFIX>/lib -ldlb -Wl,-rpath,<DLB_PREFIX>/lib

# Launch two processes sharing resources
export LB_ARGS="--policy=lewi"
mpirun -n 2 ./myapp
# Launch an application preloading DLB
export OMP_NUM_THREADS=4
export LD_PRELOAD=<DLB_PREFIX>/lib/libdlb.so
taskset -c 0-3 ./myapp &

# Reduce CPU binding to [1,3] and threads to 2
myapp_pid=$!
dlb_taskset -p $myapp_pid -c 1,3

User Guide

Please refer to our DLB User Guide for a more complete documentation.

Citing DLB

If you want to cite DLB, you can use the following publications:

Contact Information

For questions, suggestions and bug reports, you can contact us via e-mail at [email protected].

dlb's People

Contributors

vlopezh avatar mggasulla avatar

Watchers

James Cloos 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.