Quickly Write Parallel Tasks Using Intel® Cilk™ Plus Keywords and Reducers Technical Presentation Questions and Answers

Here are the questions and answers from the Intel® Parallel Building Blocks: Quickly Write Parallel Tasks Using Intel® Cilk™ Plus Keywords and Reducers webinar held January 18, 2011.  Below are the links to the recording, presentation slides and a link to the list of future technical presentations.

Technical Presentation Recording


Presentation Slides


Information on upcoming presentations


Q: What is different of reducer behavior of reducer = reducer + ... and reducer += ...

A: There is no difference.


Q: How do we catch exceptions raised from spawned functions?

A: If an exception is thrown by both branches of a spawn (i.e., from the spawned function and from the continuation after the spawn), then the exception that is caught is the one that would have occurred first in the serialization of the program. The other exception is discarded. Refer to the compiler User’s Guide for the details on exception handling with Cilk Plus codes.


Q: What is the significance of hyper threading on thread count?

A: It’s documented that the default number of Cilk Plus workers is tied to physical core count, but we have seen reports that the default is instead using the number including virtual hyper-threading cores as well. We are investigating.


Q: General question regarding PBB: which is appropriate for "large data" heavy-compute jobs?

A: Intel® Array Building Blocks should be the first solution you look at. Cilk Plus array notations and elemental functions may also be interesting.


Q: Does Inspector XE support Intel® Cilk™ Plus?

A: Yes, with some significant limitations. See http://software.intel.com/en-us/articles/support-for-intel-cilk-plus-in-intel-parallel-inspector-2011/.


Q: In the parts assembly example, the code modification was to a section of the code outside the cilk_for. Why is that? Is that part of the code getting parallelized also?

A: You’ll notice that the body of the cilk_for was a recursive call to the walk() function. So even though the code in question was outside the cilk_for, it was inside walk() and therefore could be called in parallel. The reducer construct is unique among parallel reduction constructs in that it is not directly tied to the for loop being parallelized.

Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.