From: Brad Moore <brad.moore@shaw.ca>
Subject: ANN: Paraffin 4.0 and Paraffinalia for Ada 2012 with Ravenscar support and task pools
Date: Sat, 06 Apr 2013 12:20:11 -0600
Date: 2013-04-06T12:20:11-06:00 [thread overview]
Message-ID: <0HZ7t.160452$m21.34226@newsfe02.iad> (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
reply other threads:[~2013-04-06 18:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox