Intel® Cilk™ Plus: Part of the Intel C++ Compiler

Intel® Cilk™ Plus: Part of the Intel C++ Compiler

Using Intel® Cilk™ Plus can improve application performance dramatically. In this example, the speed-up was 14×. How much faster could your code be?

Vectorization and Intel® Cilk™ Plus

SIMD, SSE 4, and AVX; what do they mean and why are they important to a software Developer?

Parallelization with Intel® Cilk™ Plus, Part 2

David Mackay introduces basic concepts of threading with Intel® Cilk™ Plus. Cilk Plus provides a clean and elegant interface to parallel operations.

Intel Tools for Threaded Parallelism at Super Computing

In this video, Intel's Ronald Green demonstrates the company's tools for threaded parallelism. Recorded at SC11 in Seattle.

Threading with Intel® Cilk™ Plus

Arch Robison, Cilk Plus architect, joins David Mackay to answer some basic questions for users.

Why Use Intel® Cilk™ Plus?

Why Use it?

Intel® Cilk™ Plus is the easiest, quickest way to harness the power of both multicore and vector processing.


What is it?

Intel Cilk Plus is an extension to the C and C++ languages to support data and task parallelism.


Primary Features

High Performance:

  • An efficient work-stealing scheduler provides nearly optimal scheduling of parallel tasks
  • Vector support unlocks the performance that's been hiding in your processors
  • Powerful hyperobjects allow for lock-free programming

Easy to Learn:

  • Only 3 new keywords to implement task parallelism
  • Serial semantics make understanding and debugging the parallel program easier
  • Array Notations provide a natural way to express data parallelism

Easy to Use:

  • Automatic load balancing provides good behavior in multi-programmed environments
  • Exisiting algorithms easily adapted for parallelism with minimal modification
  • Supports both C and C++ programmers

Learn more


Latest Posts

News
Forums
May 10, 2013: Cilk Screen Part II: I found a race. Now what do I do

So you've run your application under the  Cilk screen race detector, and it's pointed to dozens of races in your code. What do you do about it?

Intel engineer, Barry Tannenbaum, has a number of suggestions about how to deal with races in Cilk code.

http://software.intel.com/en-us/articles/cilk-screen-part-ii-i-found-a-race-now-what-do-i-do

April 26, 2013: An Introduction to the Cilk screen Race Detector

Writing parallel code exposes you to race conditions which are extremely difficult to track down using traditional serial programming tools.  Barry Tannenbaum provides an introduction to the Cilk screen race detector which can find races in Cilk code.  A unique feature of the Cilk screen race detector is that it will find races between any set of executed Cilk code, regardless of how it is scheduled by the Cilk runtime.

http://software.intel.com/en-us/articles/an-introduction-to-the-cilk-screen-race-detector

April 18, 2013: Learn more about Cilk Plus Extensions!

Come hear two Intel engineers, Bob Chesebrough and Anoop Madhusoodhanan Prabha, talk about how vectorization can be used to speed up programs on May 14th @ 9:00 AM PST.  Register here.

Title: Introduction to Vectorization using Intel® C++ Compiler Cilk™ Plus Extensions

Vectorization plays a paramount role in speeding up programs with data parallelism inherent in their algorithms. Intel C++ Compiler can boost performance by detecting the potential parallelism in a loop by checking the data dependence and data flow using its auto-vectorization feature. With contemporary hardware, vector register widths continue to increase and explicit vector programming methods can be used to achieve greater performance. Intel® Cilk™ Plus allows a  developer to do explicit vectorization using Intel® Cilk Plus™ SIMD directive, Array Notation and elemental functions to enable the performance potential in your application. Attend this webinar and see it in action, complete with code samples.

Check out other webinars coming up this spring.

Hello everyone,

Yesterday I got fresh version of XE Composer 2013 (finally...). After painless installation, I have turned on the library [Intel Composer XE 2013 - > Use Intel C++]. Furthermore I have set up additional Include Directories: .../mkl/include & ...compiler/include.

Of course I haven't forgotten about the headers -> #include <cilk\cilk.h>.

So after all of this, Visual Studio 2010 is still showing me the error - "_Cilk_for" is undefined, the same for "spawn" and "sync". Why?

Additionally, since I am writing my code in C, I wanted to use C99 standard, but there is also a problem. "Enable C99 support - > Yes (/Qstd = c99)".
When call a loop :
for(int i, ...)
{
...
}
VS tells me that I cannot typedef int i, inside a loop - so C99 is not working.

What have I done wrong? Thank you for all replies.

Regards
Marek

PS. Before I have been using intel MKL, without rest of the XE Composer package - no problems there.

Hello,

I'm looking for a CILK version of FFTW.

Can you help ?

Thanks,

Zvika

The following program causes a runtime crash reducer_impl.cpp:527: cilk assertion failed: h

My compiler is icc 13.1.1 on Ubuntu 12.04. 

#include <cilk/reducer.h>
#include <cilk/reducer_opadd.h> 
#include <cilk/cilk.h> 
#include void empty() {} 
std::atomic n; 
int test(int *x) { 
  cilk::reducer_opadd r; 
  n = 40000; 
  while (n--) { 
    cilk_spawn empty(); 
  } 
  return 0;
} 
int main() { 
  int x = 1; 
  return test(&x); 
} 
Intel Cilk Plus is written with three new keywords and requires fewer source code modifications than Intel® Threading Building Blocks but is really powerful. Cilk Plus also comes with an array language extension to C/C++, providing array section notations for SIMD vector parallelism and parallel function maps for multi-threading.
Brian Reynolds
Brian Reynolds Research

Documentation
and Resources

Reference Manual
Tutorial
Intel Cilk Plus Forum
FAQs
Code Samples
Cilk Tools

 

Structured Parallel Programming:
Patterns for Efficient Computation

Buy Now