首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有cilk_for关键字的代码示例

带有cilk_for关键字的代码示例
EN

Stack Overflow用户
提问于 2014-08-07 06:45:22
回答 1查看 1.4K关注 0票数 2

cilk_for是Intel的关键字,我们可以通过以下方式使用它:

代码语言:javascript
复制
cilk_for (int i = 0; i < 8; ++i)
{
    do_work(i);
}

我需要一些更多的英特尔Cilk与cilk_for关键字的例子代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 19:19:43

差不多就是这些了。cilk_for循环是将代码并行化的最简单方法之一。需要注意的事情:

  • 不要试图将您的循环大小到核心的数目。像这样调优您的代码本质上是脆弱的。相反,在for循环中公开全部数据,让Cilk运行时担心调度循环迭代。
  • 小心种族!如果您还没有使用荧光屏英特尔检验员这样的竞争检测器测试应用程序,那么您可能会发现竞争会减慢您的速度(最好是)并产生异常的结果。
  • cilk_for循环(示例)是使用分而治之的算法实现的,该算法递归地将范围分成两部分,直到剩余的迭代数小于“粒度”为止。运行时通过将范围除以8P,或核数的8倍来计算粒度。这通常是一个很好的价值-不是太多,所以有多余的开销,也不是太少,所以你渴望并行。您可以使用“#实用化cilk grainsize=value”形式的杂注来指定粒度,其中"value“可以是常量或表达式。但我们的经验是,有一些专门的地方,正确的粒度为1,而在其他大多数地方,你最好使用默认。
  • 如果您的代码正在积累结果,请考虑使用还原器而不是锁。还原器提供由Cilk运行时自动合并的数据的无锁“视图”,以便保持顺序顺序。

Barry Tannenbaum,Intel Cilk Plus Development

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25175821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档