Я пишу программу на C (двумерный решатель Пуассона) и использую openMP для ускорения большого цикла for.Я заметил, что внутри параллельного блока openMP цикл for не векторизован даже в случае, когда я включаю директиву # pragma всегда вектор .Для компиляции я использую компилятор pathscale.
Код, который я хочу векторизовать, выглядит следующим образом:
#pragma omp parallel shared(in, out, lambda,dim,C) private(k)
{
#pragma omp for schedule(guided,dim/nthreads) nowait
for(k = 0;k < dim; k++){
in[k] = C*out[k]*lambda[k];
}
}
где out, lambda и in - массивы двойной точности.
Но даже если я включу # pragma всегда vector , ответ компилятора будет таким:
warning: ignoring #pragma always vector
Знаете ли вы, есть ли обходной путь для этого?
Спасибо.