comp.lang.ada
 help / color / mirror / Atom feed
* ANN: Paraffin 4.0 and Paraffinalia for Ada 2012 with Ravenscar support and task pools
@ 2013-04-06 18:20 Brad Moore
  0 siblings, 0 replies; only message in thread
From: Brad Moore @ 2013-04-06 18:20 UTC (permalink / raw)


I am pleased to announce a new major release of Paraffin for Ada 2012.

Paraffin is a set of Ada 2012 generics that may be used to add
parallelism to iterative loops and recursive code.

Paraffin now includes generics for both Ravenscar and non-Ravenscar use.
The Ravenscar version utilizes static task pools with dispatching
domains suitable for real-time programming.

Paraffin also includes Paraffinalia, which is a suit of useful parallel
utilities that utilize the Paraffin generics. These include generics for;
    1) generic to integrating a function in parallel
    2) generic to apply quicksort algorithm in parallel to an array
    3) generic to apply fast fourier transform to an array of data.
    4) generic Red-Black tree container that performs some operations
       in parallel.
    5) function to solve matrices using Gauss-Jordan Elimination
    6) generic to perform prefix sum calculations

The Ada 2012 version of the code is a major change to the API, which is
why this is a major release. The 2005 version still has the old
interface, and currently is treated as an archive, though the 2012
version of the API may eventually get backported to 2005 at some point.

The latest stable release and older releases may be downloaded from;

  https://sourceforge.net/projects/paraffin/files/

For those who want the current development versions of the source they
can download using git (http://git-scm.com/) by issuing the following
commands;

  mkdir sandbox
  cd sandbox
  git clone git://git.code.sf.net/p/paraffin/code paraffin-code

The current development version typically will correspond to the latest
stable release, but may at times be unstable when new features are being
worked on.

Major New Features include:
- The new API is more unified between parallel loops and parallel
   recursion. A parallelism manager is declared at the site of the
   Parallelism OPportunity (POP).
- Ada 2012 support and use of Ada 2012 language features.
- Ravenscar generics added for parallel real-time programming.
   The Ravenscar generics require declaration of static worker task
   pools, since all tasks have to declared statically. The Ravenscar
   task pools can interoperate with Ada 2012 dispatching domains.
- Exception handling added to worker tasks which store the exception
   and reraise it in the main task before returning from the parallelism
   opportunity
- Task pool versions also added for non-ravenscar. It was thought that
   task pools would introduce a performance benefit, but on the tested
   platforms this appears to not be the case, as creating tasks
   on the fly is approximately the same performance as reusing tasks
   from a task pool. Further, for non-ravenscar, using a bounded task
   pool introduces other undesirable affects centered around the cas
   of handling when more tasks are requested than exist in the pool.
   Therefore, it is recommended for non-ravenscar use that the non-pooled
   versions of the generics be used. The pooled versions are provided
   for experimental purposes.
- No longer need to with target specific packages to use barriers, or
   affinity, since these are included in Ada 2012. This simplifies
   use in GNAT project files, since only the top level paraffin folder
   needs to be mentioned, if that folder is tagged to recursively pull
   in all the sub-folders in the project file.
- Many other changes, including improved folder structure.

Brad Moore


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-04-06 18:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-06 18:20 ANN: Paraffin 4.0 and Paraffinalia for Ada 2012 with Ravenscar support and task pools Brad Moore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox