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

