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

0

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

47: error: '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();
}

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

  • 0
    Какой компилятор (и его версию?) Вы используете. Ваш пример скомпилирован для меня с использованием icc 14.0.1 после того, как я добавил недостающие объявления для largeint, notdone, mind и ohd.
Теги:
cilk-plus

2 ответа

0

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

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

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

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

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


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

0

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

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

  • 0
    Я попробовал это, и это все еще не работает. Это дает мне ту же ошибку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню