Моя программа на C++ выполняется около 300 секунд. Внутри моей программы мне нужно разделить мои векторы. Анализатор VS сообщает, что это занимает около 15% времени выполнения. вот код:
template <class T> myVector<T> cWisDivide(myVector<T> &vec1,
myVector<T> &vec2)
{
try
{
if (vec1._rows == vec2._rows)
{
myVector<T> result(vec1._rows);
//#pragma omp parallel for
for (int r = 1; r <= vec1._rows; r++)
{
if (vec2(r) != 0)
{
result(r) = vec1(r) / vec2(r);
}
else
{
throw std::runtime_error("");
}
}
return result;
}
}
catch (const exception &e)
{
....
}
}
эта функция вызывается много раз. Если я использую #pragma ... перед циклом, загрузка процессора остается на 100% в течение примерно 350 с. что больше, чем время последовательного запуска программы.
Я был бы признателен, если бы кто-нибудь мог помочь мне в этом вопросе.
vec1._rows
? - person Oliver Charlesworth   schedule 08.02.2015r
в циклеfor
должен быть определен перед самим цикломfor
. Вот так:int r; #pragma.... for(r = 1...)
- person Michał Walenciak   schedule 08.02.2015for
. Он говорит: Обратите внимание, что счетчики итераций j и k должны быть закрытыми. Если вы хотите пометить что-то какpublic
илиprivate
, оно должно уже существовать (поэтому должно быть видно до#pragma
) - person Michał Walenciak   schedule 08.02.2015