英特尔TBB vs CilkPlus

我正在开发针对Intel x86_64机器的C ++时间模拟。 经过一番研究,我发现了两个有趣的库来实现并行化:

  • 英特尔线程加固块
  • 英特尔Cilk Plus
  • 正如文档中所述,它们都针对多核处理器的并行性,但还没有计算出哪一个最好。 AFAIK Cilkplus只是简单地实现了三个关键字,以实现更简单的并行性(这导致GCC被重新编译为支持这些关键字); 而TBB只是一个促进更好的平行发展的图书馆。

    你会推荐哪一个?

    考虑到我在安装CilkPlus时遇到了很多很多问题(仍在尝试和仍然尖叫)。 所以我想知道,我应该先检查TBB吗? Cilkplus比TBB更好吗? 你会推荐什么?

    它们是兼​​容的吗?

    我应该如何完成安装CilkPlus(仍在为此祈祷),是否有可能将TBB与它一起使用? 他们可以一起工作吗? 有没有人与CiclkPlus和TBB一起经历过开发? 你会推荐与他们一起工作吗?

    谢谢


    以下是原始帖子中问题的一些FAQ类型的信息。

    Cilk Plus vs. TBB与Intel OpenMP

    简而言之,它取决于您尝试实施的并行化类型以及应用程序的编码方式。


    此链接还可以帮助:英特尔TBB和Cilk +进行比较


    我可以在TBB的背景下回答这个问题。 使用TBB的优点是:

  • 运行代码无需编译器支持。
  • TBB的通用C ++算法允许用户创建自己的对象并将它们映射为线程作为任务。
  • 用户不需要担心线程管理。 内置的任务调度程序会自动检测可能的硬件线程数量。 但是用户可以选择修复性能研究的线程数。
  • 用于创建尊重依赖关系的任务的流程图可轻松让用户利用功能以及数据并行性。
  • 当迁移到更大的系统时,TBB自然可以扩展,无需修改代码。
  • 活跃的论坛和文档不断更新。
  • 与英特尔编译器,最新版本的tbb表现非常好。
  • 缺点可以

  • 开源社区中的用户量很低,很难找到示例
  • 文件中的例子非常基本,在旧版本中它们甚至是错误的。 但是,英特尔论坛随时准备提供支持来解决问题。
  • 模板类中的抽象性非常高,使得学习曲线非常陡峭。
  • 创建任务的开销很高。 用户必须确保问题的大小足以让分区器创建最佳粒度的任务。

    我还没有和cilk一起工作,但很明显,如果在这两个域中都有用户,那么大部分都是TBB的用户。 如果英特尔通过更新文件和免费支持来推动TBB,TBB很可能会增长

  • 链接地址: http://www.djcxy.com/p/64521.html

    上一篇: Intel TBB vs CilkPlus

    下一篇: Main differences between threading with shared memory and MPI?