Я использую версию openMP, которая не поддерживает Reduce () для сложных аргументов. Мне нужна быстрая функция точечного произведения, такая как
std::complex< double > dot_prod( std::complex< double > *v1,std::complex< double > *v2,int dim )
{
std::complex< double > sum=0.;
int i;
# pragma omp parallel shared(sum)
# pragma omp for
for (i=0; i<dim;i++ )
{
#pragma omp critical
{
sum+=std::conj<double>(v1[i])*v2[i];
}
}
return sum;
}
Очевидно, что этот код не ускоряет проблему, а замедляет ее. Есть ли у вас быстрое решение без использования redu () для сложных аргументов?