- Intel Threading Building Blocks
- Intel Cilk Plus
你会推荐哪一个呢?
请注意,我在安装CilkPlus时遇到了很多问题(正在继续尝试并大声喊叫)。所以我想知道,我应该先看看TBB吗?CilkPlus比TBB更好吗?你会推荐哪一个?
它们兼容吗?
如果我成功安装CilkPlus(仍在祈祷),是否可以同时使用TBB?它们可以共同工作吗?是否有人同时使用CiclkPlus和TBB进行软件开发?你会推荐同时使用它们吗?
谢谢。
在开源社区中使用者较少,很难找到示例。
文档中的示例非常基础,在旧版本中甚至是错误的。然而,英特尔论坛总是准备好扩展支持以解决问题。
模板类中的抽象程度非常高,使得学习曲线非常陡峭。
创建任务的开销很高。用户必须确保问题规模足够大,以便分区器创建最优粒度大小的任务。
我也没有使用过cilk,但显而易见的是,如果在这两个领域中有用户,那么大多数用户都是TBB的。如果英特尔通过更新的文档和免费支持推广TBB,那么TBB的用户社区就会增长。
您为什么不能使用我们在https://www.cilkplus.org/download#gcc-development-branch提供的预构建GCC二进制文件?它是从cilkplus_4-8_branch构建的,应该是相当新的。
您可以选择任何解决方案。Cilk提供了一种非常自然的表达递归算法的方式,如果您使用缓存无关算法,它的子任务窃取调度程序可以非常友好地使用缓存。如果您有关于Cilk Plus的问题,最好在Intel Cilk Plus论坛http://software.intel.com/en-us/forums/intel-cilk-plus/中提出。
Cilk Plus和TBB相互兼容,如果混合使用它们,它们应该可以很好地协同工作。您最多只会得到TBB线程池中的线程数加上Cilk工作线程数,而不是线程的组合爆炸。这通常意味着您将获得2P个线程(其中P是核心数量),除非您通过库调用或环境变量更改默认设置。您可以使用Cilk Plus的向量化功能与任何一个线程库一起使用。- Barry Tannenbaum
Intel Cilk Plus developer
所以,根据发帖者的要求:
我之前用过 TBB
,感觉不错。它有很好的文档和活跃的论坛。很少见到库的开发者回答问题。你可以试试看。(我从来没用过 cilkplus
,所以无法评论)。
我在 Ubuntu 和 Windows 上都使用过它。你可以通过 Ubuntu 的软件包管理器下载包,或者自己构建源代码。在这种情况下,不应该有问题。在 Windows 中,我使用 cygwin
环境下的 MinGW
编译了 TBB
。
至于兼容性问题,应该没有任何问题。例如,TBB
可以很好地与 Boost.Thread
或 OpenMP
一起使用;它被设计成可以与其他线程解决方案混合使用。
TBB
,并对它感到满意。它有良好的文档和活跃的论坛。库开发人员回答问题也很常见。尝试一下吧。(我没有使用过cilkplus
,所以无法评价它。) - Adri C.S.Ubuntu
也在 Windows 上使用它。您可以通过 Ubuntu 的包管理器下载软件包,或者您可以自己构建源代码。在这种情况下,这不应该是个问题。在 Windows 上,我使用cygwin
环境构建了TBB
。 - Adri C.S.TBB
。 - Adri C.S.