предложение firstprivate в OpenMP не работает

У меня есть цикл, который работает с объектами и функциями класса. Также он вычисляет несколько значений суммы. Я пытаюсь параллельно с OpenMP:

    Network  net = *m_pNetwork;
TrainingSet tran = trainingSet;
omp_set_num_threads(4);

#pragma omp parallel for reduction(+:MSE, incorrectEntries) firstprivate(tran, net) lastprivate(net) private(outputIdx)
for (int i = 0; i < tran.size(); i++)
{
net->Evaluate(tran[i].m_inputs);
Backpropagate(tran[i].m_expectedOutputs);

// Check all outputs from neural network against desired values
bool resultCorrect = true;
for (outputIdx = 0; outputIdx < net->m_numOutputs; outputIdx++)
{
if (net->m_clampedOutputs[outputIdx] != tran[i].m_expectedOutputs[outputIdx])
{
resultCorrect = false;
}
MSE += pow((net->m_outputNeurons[outputIdx] - tran[i].m_expectedOutputs[outputIdx]), 2);
}
if (!resultCorrect)
{
//#pragma omp atomic
incorrectEntries++;
}
}

*m_pNetwork = net;

Моя проблема в том, что значения суммы одинаковы для каждой итерации. Так что я не правильно сделал?

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector