How do I program the Epiphany?
Since the Parallella Kickstarter campaign in 2012 the one question I get more than any other is ” How the @#$% do I program this thing?”
You are never going to become fluent in parallel programming without coding, so pick a card, any card. Let’s do some parallel programming!
Thanks to the incredible open source work that has come out of the Parallella community over the last year, we now have all major parallel programming models supported.
MPI (Message Passing)
Many said it couldn’t be done, but David Richie and Brown Deer Technology now has a very effective standard MPI (message passing interface) running on Epiphany!
BSP (Bulk Synchronous Parallel)
The BSP programming model invented by Leslie Valiant and Bill McColl has been resurrected for the Epiphany thanks to Jan-Willem Buurlage and others at the University of Utrecht, Netherlands.
A tutorial framework that’s fantastic for learning from Nick.
Thanks to the heroic efforts of Parallel Processing Group at University of Ioannina, Greece, there is now OpenMP 4.0 support for Parallella. Please try it!
OpenCL (Threading and SIMD)
Brown Deer Technology has continued to work on the OpenCL infrastructure and updated it to the latest Epiphany SDK. The latest version aptly named “Freewill” is now available
ERLANG (Message Passing)
Community member Merk Fleming has implemented the native Erlang interface for Epiphany along for heterogeneous programming within Erlang. Heterogeneous software and hardware is the future, so this is very encouraging. Mark has contributed his code to the new Parallel Architectures Library.
An effective “coprocessor thread” alternative from Brown Deer Technology that lets you expose the parallelism available in a POSIX like manner. For the Epiphany, this is a more suitable programming model than the GPU/SIMD centric OpenCL programming model.
Community member Nick has put together an Epiphany BASIC (for parallel). A neat and simple way to get going with parallel programming.
In addition we know there are people working on Haskell, Occam, APL, and Forth…