A 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 embarrassingly parallel problem so the more contributors we have the faster we can move!

I know none of you are motivated by things like free computers, but as a token of our appreciation for making parallel computing easier, Adapteva is sending out a free Parallella computer for every optimized function contributed to PAL.

How it Works?

You submit a pull request for one optimized math function to the PAL git repository. If pull request is accepted we will then contact you to send you a free Parallella board as thanks for contributing to the cause.

What functions?

Initially we are looking for contribution to the basic math, DSP, and image processing functions found in the PAL overview. There are currently 61 such functions.

Legal Stuff:

Your contributed code is still owned by you under the Apache license.There is no transfer of copyright involved here.

This is not work for hire. It’s simply us saying thanks for contributing to making parallel programming easier for everyone and for being awesome!

Export restrictions means we can’t ship to certain countries.

You are responsible for import duties if there are any.

Don’t try to game the system. Adapteva can cancel this program at any time.:-)

Guidelines:

Code should be written in vanilla C and compilable with gcc (no assembly!)

These are leaf functions (no calling/linking to other libraries)

Functions should be correct and sufficiently accurate.

Minimize code size AND maximize performance 🙂

At this time, functions do not have to be multi-threaded.

Most of the PAL functions already have naive implementations, what is needed here is optimization.

An example of an optimized function.

UPDATE: No division operations [most DSPs and small micros don’t have hardware division circuits]

The goal is 40% of peak performance as compared to theoretical peak or best in class commercial binary library (pick any architecture…)

If you can’t meet the 40% performance target, write a note in your commit message stating why this an unreasonable target.

If you think there are functions missing from the library please make a suggestion to add (or submit a PR for the function)

For more guidelines, see library documentation

Let’s go!

Andreas