Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

jdevinney/bale

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bale

The bale effort is, first and foremost, a vehicle for discussion for parallel programming productivity.

The bale effort attempts to:

  • demonstrate some challenges of implementing interesting (i.e. irregular) scalable distributed parallel applications.

  • demonstrate an approach (aggregation libraries) to achieving high performance for the internode communication in such applications

  • explore concepts that make it easier to write, maintain, and get top performance from such applications

bale does not claim to have the answers to better parallel programming.

bale is not a collection of benchmarks.

We use bale to evolve our thinking on parallel programming in the effort to make parallel programming easier, more productive, and more fun. Yes, we think making it fun is a worthy goal!

The original bale (now called "bale_classic") was implemented in UPC or C and SHMEM. If you are new to bale, you should start by exploring there. New in bale 3.0, the bale repository now contains other variants of bale (sequential, parallel, and custom parallel). Each variant is a separate project and comes with its own build and run instructions. All source code is found in the src directory.

Here is a short presentation on bale from June 2022.

Contents

bale_classic: Built with UPC or C/SHMEM. Contains three aggregation APIs (exstack, exstack2, and conveyors) and the widest collection of apps and implementations of those apps. Location: src/bale_classic

C: Sequential versions of the bale_classic apps, meant to be a gentle introduction to some of the more complicated algorithms in bale_classic. Location: src/other_serial/C

Serial Rust: Similar to the C version, only in Rust. Location: src/other_serial/Rust

Parallel Rust: Parallel versions of the bale apps in Rust on top of Rust conveyors (which are currently implemented on SHMEM). Location: src/other_parallel/Rust

Chapel: A collection of some of the bale apps written in Chapel. Location: src/other_parallel/Chapel

Version History

  • May 2018: Initial Release version 1.0.0

  • Dec. 2018: version 2.0.0

    • New apps: transpose, randperm, permute_matrix, write_sparse_matrix
  • Sep. 2019: version 2.1.0

    • update conveyors to version 0.5.0
  • Oct. 2020: version 3.0.0

    • Added cousins: Rust, Parallel Rust, Serial C, and Chapel to bale
    • new bale_classic features:
      • New graph model: Geometric graphs
      • New app: SSSP
      • replaced write_sparse_matrix with sparse_matrix_io
      • convey-0.6.0 updates
      • arg_parse replaced getopt
      • unit tests with pytest
      • new make_bale script
      • new run_apps script
      • docker files
      • AGP (Atomics, Gets, and Puts) replaces AGI: simple PGAS style programming
      • FTB (From the Book) replaces As God Intended.

Contact

bale@super.org

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages