在并行for循环中调用函数

时间:2013-02-12 04:09:27

标签: c parallel-processing cilk-plus

我试图在Cilk plus中调用并行for循环内的函数。如果我在我调用的函数中声明一个数组,它会有种族问题吗?在循环运行后,我收到了Segmentation fault或Aborted(Core dumped)错误。

PScan()
{
    // Would working on w create race issues?
    double *w = calloc(num,sizeof(double));
}

1 个答案:

答案 0 :(得分:1)

如果从cilk_for循环调用PScan(),那么使用w数组将不会是竞赛。所有并行链都有自己分配的w副本。完成后请务必释放内存。

但是,请注意调用内存分配例程(如calloc)可能涉及可能限制性能的锁定。像tbbmalloc这样的备用内存分配器可以减轻这种情况。

您可以使用Cilkscreen工具搜索比赛。 Cilk工具(Cilkscreen竞赛检测器和Cilkview可扩展性分析器)免费提供http://cilkplus.org/download

- Barry Tannenbaum
  Intel Cilk Plus Runtime Development