У меня есть следующий код, который в основном является прямой заменой нижней треугольной матрицы.
for (int i = 0; i < matrix.get_rowptr()->size() - 1; ++i)
{
double sum = 0.0;
#pragma omp parallel for reduction(+:sum)
for (int j = matrix.get_rowptr()->operator[](i); j < matrix.get_diagonal_index()->operator[](i); ++j)
{
sum += matrix.get_value()->operator[](j) * result[matrix.get_columnindex()->operator[](j)];
}
result[i] = sum;
result[i] = vector1[i] - result[i];
}
Первый цикл проходит по строкам, а второй - по столбцам. Среднее количество операций во внутреннем цикле составляет минимум 100.
Я попытался использовать OpenMP, чтобы парализовать внутренний цикл, просто добавив
#pragma omp parallel for
Но время стены увеличилось. Есть ли способ парализовать этот мир кода хорошим способом?
Спасибо заранее.
С наилучшими пожеланиями.