Coder Social home page Coder Social logo

mndiaye24 / xbraid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xbraid/xbraid

0.0 1.0 0.0 21.59 MB

XBraid Parallel-in-Time Solvers

License: Other

Makefile 0.63% C 51.30% C++ 34.21% Python 0.91% Emacs Lisp 0.23% Gnuplot 0.16% MATLAB 0.10% Shell 12.47%

xbraid's Introduction

Table of Contents

  1. What is XBraid?
  2. About XBraid
  3. Documentation
  4. Advice to Users
  5. Building XBraid
  6. Software License

What is XBraid?

XBraid is a parallel-in-time software package. It implements an optimal-scaling multigrid solver for the (non)linear systems that arise from the discretization of problems with evolutionary behavior.

This code and associated algorithms are developed at Lawrence Livermore National Laboratory, and at collaborating academic institutions.

For our publication list, please go here.

About XBraid

Typically, solution algorithms for evolution equations are based on a time-marching approach, solving sequentially for one time step after the other. Parallelism in these traditional time-integration techniques is limited to spatial parallelism. However, current trends in computer architectures are leading towards systems with more, but not faster, processors, i.e., clock speeds are stagnate. Therefore, faster overall runtimes must come from greater parallelism. Our approach to achieve such parallelism in time is with multigrid.

In this software, we implement a non-intrusive, optimal-scaling time-parallel method based on multigrid reduction techniques (multigrid-reduction-in-time or MGRIT). A few important points about XBraid are as follows.

  • The algorithm enables a scalable parallel-in-time approach by applying multigrid to the time dimension.

  • It is designed to be nonintrusive. That is, users apply their existing sequential time-stepping code according to our interface, and then XBraid does the rest. Users have spent years, sometimes decades, developing the right time-stepping scheme for their problem. XBraid allows users to keep their schemes, but enjoy parallelism in the time dimension.

  • XBraid solves exactly the same problem that the existing sequential time-stepping scheme does.

  • XBraid is flexible, allowing for a variety of time stepping, relaxation, and temporal and spatial coarsening options.

  • The full approximation scheme multigrid approach is used to accommodate nonlinear problems.

  • XBraid written in MPI/C with C++ and Fortran 90 interfaces.

  • XBraid is released under LGPL 2.1.

Documentation

  • For examples of using XBraid, see the examples/ and drivers/ directories, and in particular examples/ex-01-*.c

  • See the release page for links to precompiled documentation PDFs that go through, step-by-step, how to use XBraid.

  • For tutorials, see the bottom of our publications page.

  • For citing XBraid, see here.

Advice to Users

The field of parallel-in-time methods is in many ways under development, and success has been shown primarily for problems with some parabolic character. While there are ongoing projects (here and elsewhere) looking at varied applications such as hyperbolic problems, computational fluid dynamics, power grids, medical applications, and so on, expectations should take this fact into account. That being said, we strongly encourage new users to try our code for their application. Every new application has its own issues to address and this will help us to improve both the algorithm and the software.

For bug reporting, please use the issue tracker here on Github. Please include as much relevant information as possible, including all the information in the “VERSION” file located in the bottom most XBraid directory. For compile and runtime problems, please also include the machine type, operating system, MPI implementation, compiler, and any error messages produced.

Building XBraid

  • To specify the compilers, flags and options for your machine, edit makefile.inc. For now, we keep it simple and avoid using configure or cmake.

  • To make the library, libbraid.a,

      $ make
    
  • To make the examples

      $ make all
    
  • The makefile lets you pass some parameters like debug with

      $ make debug=yes
    

    or

      $ make all debug=yes
    

    It would also be easy to add additional parameters, e.g., to compile with insure.

  • To set compilers and library locations, look in makefile.inc where you can set up an option for your machine to define simple stuff like

     CC = mpicc
     MPICC = mpicc
     MPICXX = mpiCC
     LFLAGS = -lm
    

License

This project is released under the LGPL v2.1 license. See files COPYRIGHT and LICENSE file for full details.

LLNL Release Number: LLNL-CODE-660355

xbraid's People

Contributors

rfalgout avatar andersp avatar v-dobrev avatar steffi7574 avatar tzanio avatar beauof avatar jbschroder avatar jcc242 avatar jakubcerveny avatar

Watchers

Mamadou N'diaye 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.