Функция calc_min для reducer_min_index не найдена

Эй, ребята, я пытаюсь выполнить простую операцию поиска мин с использованием редукторов cilk plus. По какой-то странной причине я могу включить библиотеки reducer_min, но я не могу использовать функцию calc_min. Кто-нибудь знает, почему я получаю эту ошибку?

47: ошибка: у класса 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();
}

Любой совет будет принята с благодарностью!

0

Решение

Возможно, вам придется привести i к unsigned, чтобы соответствовать шаблону cilk::reducer_min_index<unsigned,int>,
Так замени min.calc_min(i,ohd[i]); с min.calc_min((unsigned)i,ohd[i]);

Источник: Исходный код

0

Другие решения

Все, что я могу сказать наверняка, это то, что это работает для меня.

Было бы полезно узнать, на какой платформе вы находитесь и какую версию библиотек Cilk вы используете. (Если вы используете компилятор Intel, то же самое, что и версия вашего компилятора. Если вы используете комплект с открытым исходным кодом Cilk, то вы можете определить переменную среды CILK_VERSION и запустите любую программу Cilk, чтобы распечатать информацию о версии Cilk.)

Кстати, обратите внимание, что заголовки библиотеки Cilk будут находиться в cilk Подкаталог каталога в компиляторе по умолчанию включает в себя путь, поэтому нормальный способ их включения

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

Если вы используете эту форму, вы получите заголовки из стандартного местоположения без необходимости добавлять библиотеку Cilk в ваш путь включения.


Нил Файман
Intel Cilk Plus Runtime Development

0

По вопросам рекламы [email protected]