Announcing the Parallel Architectures Library (PAL)

1024_diagram
We have shipped well over 10,000 Parallella computers across the globe and we are now ready to move on to the next phase of making parallel computing ubiquitous. Unfortunately the energy needed to escape the current “von Neumann potential well” seems to be approaching infinity. The legacy programming stack is so effective and so easy to use that developers and companies simply cannot afford to choose the better (parallel) solution. To make parallel computing ubiquitous our only choice is to rewrite the whole software stack from scratch, including: algorithms, run-times, libraries, and applications. This is not a problem specific to Adapteva, Epiphany, or the Parallella, it’s a problem for the whole industry!

For a few months we have been working on a new portable and opens source standard library effort called the Parallel Architectures Library (“PAL” for short).  The library includes basic functions for parallel math, communication, and synchronization. It’s work in progress and far from complete, but the basic API is ready for broader review and contribution.

Functionality:

  • Math, DSP, and Image Processing
  • Synchronization
  • Communication

Design Goals

  • Parallel (Make parallelism a first class citizen in a standard library)
  • Fast (Speed over safety )
  • Compact (Small enough to work for memory limited processors with < 32KB RAM)
  • Portable (Portable across different ISAs and systems)
  • Permissive (Apache 2.0 license to maximize industry adoption)

License

The PAL source code is licensed under the Apache License, Version 2.0. See LICENSE for full license text unless otherwise specified

Sources

To find the complete API and browse the current source code, check out the repository and README on github:
https://github.com/parallella/pal

Contribution

Here’s how you can help:

  • Review and comment on API and approach (all feedback is appreciated)
  • Suggest improvements
  • Write a function. If 100 people contributes one function each, we could be done in a week!
  • Write tests
  • Fix bugs
  • Report problems
  • Try it out

At the risk of sounding like the guy standing on the soapbox in the square talking about the sky falling…

  • If you are not part of the solution, you are part of the problem.
  • If you are not with us you are against us.

The future is parallel, spread the word!

Sincerely,
Andreas

4 Comments

  • Alex Y. says:

    I am a bit confused about the relationship between the new PAL and the existing Epiphany SDK libraries e-HAL and e-LIB. I can easily see that some features in the PAL, like Math and DSP, are not the main concerns of the Epiphany SDK. But other basic features, like mutex manipulation is already provided in the SDK.

    Is the PAL mutex functions just a wrapper over the e-LIB mutex functions?

    Or is PAL a host-side library that is going to manage task dispatching to epiphany cores and result collection from the cores when the Math and DSP functions are called?

  • Lex says:

    The problem is not parallelism, per se. The problem as with most fields is entrenched thinking and the reluctance to change. What is needed is the ability to put one of these in front of any newbie and have a complete language, api and interface that is intuitive and fast to learn, something like a parallel version of cython, that will interface with the multicore epiphany chips and get maximum performance from the outset. Having the parallella firing on all cylinders would scare the living daylights out of any chip or computer manufacturer on the planet.

  • […] Announcing the Parallel Architectures Library (PAL) […]

  • […] few months back we started an effort called the “Parallel Architecture Library” (PAL). We already have a few external contributors, but we are really looking for many more! PAL is an […]

Leave a Reply to Alex Y. Cancel Reply