Write a C function and get a free computer

parallella-slider-2

 

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?

  1. You submit a pull request for one optimized math function to the PAL git repository.
  2. 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

17 Comments

Leave a Reply