Использование openMP для параллельного получения индекса минимального элемента

Я пытался написать этот код

float* theArray; // the array to find the minimum value
int   index, i;
float thisValue, min;

index    = 0;
min = theArray[0];
#pragma omp parallel for reduction(min:min_dist)
for (i=1; i<size; i++) {
    thisValue = theArray[i];
    if (thisValue < min)

    { /* find the min and its array index */

        min = thisValue;

        index    = i;
    }
}
return(index);

Однако этот не выводит правильных ответов. Кажется, что мин в порядке, но правильный индекс был уничтожен потоками.

Я также попробовал некоторые способы, предоставленные в Интернете и здесь (с использованием параллельного для внешнего цикла и критического для окончательного сравнения), но это вызывает скорее снижение скорости, чем ускорение.

Что я должен сделать, чтобы оба значения min и его индекс были правильными? Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос