0

嘿伙计们,我正在尝试使用 cilk plus 减速器进行简单的查找最小值操作。出于某种奇怪的原因,我能够包含 reducer_min 库,但我无法使用函数 calc_min。有谁知道我为什么会收到这个错误?

47:错误:“class cilk::reducer_min_index”没有名为“calc_min”的成员

#include <cilk.h>
#include <reducer_min.h>
#include <iostream>
void findMin(int *d, int *v)
{

    int nv, totalnv;
    *d = largeint;
    cilk::reducer_min_index<unsigned,int> min;
    cilk_for (int i = 0; i < totalnv ; i++)
    {
        if(notdone[i] && mind[i] < min.get_value())
        {
            min.calc_min(i,ohd[i]);
        }
    }
    cilk_sync;
    *v = min.get_index();
    *d = min.get_value();
}

任何建议将不胜感激!

4

2 回答 2

0

我只能说它对我有用。

了解您使用的平台以及您使用的 Cilk 库的版本会有所帮助。(如果您使用的是 Intel 编译器,则与您的编译器版本相同。如果您使用的是 Cilk 开源套件,则可以定义环境变量CILK_VERSION并运行任何 Cilk 程序来打印 Cilk 版本信息。)

顺便说一句,请注意 Cilk 库头文件将位于cilk默认编译器包含路径中目录的子目录中,因此包含它们的正常方法是

#include <cilk/cilk.h>
#include <cilk/reducer_min.h>

如果您使用该表单,您将从标准位置获取标题,而无需将 Cilk 库添加到您的包含路径。


Neil Faiman
英特尔 Cilk Plus 运行时开发

于 2013-12-02T16:23:33.463 回答
0

您可能必须将 i 强制转换为无符号,以适应模板cilk::reducer_min_index<unsigned,int>
所以替换min.calc_min(i,ohd[i]);min.calc_min((unsigned)i,ohd[i]);

来源:源代码

于 2013-11-30T03:21:42.630 回答