Intel recently made Cilk++ open source. Cilk++ allows you to write parallel programs but without having to deal with all the low-level details that an API like Pthreads forces on you. Cilk++ consists of language extensions and a smart runtime that balances the available work to keep the cores busy. Intel has merged the compiler code of Cilk++ into GCC 4.7 and the runtime is also available under a BSD license.
What I find interesting about Cilk++ is that it supports sequential semantics for your parallel programs. Since sequential programs are vastly easier to reason about than parallel ones, they are cheaper to develop and maintain. With Cilk++ you can build a parallel application while paying for a sequential one. Not bad, right?
This methodology matches what we advocate at Vector Fabrics. At Vector Fabrics, we encourage developers to use their current expertise on sequential programming to develop their applications. Then, they gradually transform their applications to a parallel implementation. These transformations are guided by powerful tools that ensure a correct and efficient implementation on the target hardware. This flow is much cheaper and lower risk than the alternative of working directly with low-level parallel programming.
Intel’s and Vector Fabrics’ technologies leverage existing sequential development methodologies and infrastructure. In addition, the technologies complement each other. A developer uses powerful analysis tools (for example our vfEmbedded tool) to find the parallel sections in the application and then to identify the sections that yield the most speedup with least effort. Then, the developer can use a parallel programming API that allows incremental, cheap parallelization of code such as Cilk++ or OpenMP.
Agreed, not all parallel algorithms can be developed using this methodology. Nevertheless, a project that uses tools to exploit parallelism present in sequential code can free up resources to tackle the more challenging parallelization problems.