複雑な引数に対してreduce()をサポートしないバージョンのopenMPを使用しています。次のような高速ドット積関数が必要です
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;
}
明らかに、このコードは問題をスピードアップしませんが、スローダウンします。複雑な引数にreduce()を使用せずに高速なソリューションがありますか?