Vorrei convertire il mio ciclo for in STL std :: for_each loop.Come convertire per loop in STL istruzione for_each
bool CMyclass::SomeMember()
{
int ii;
for(int i=0;i<iR20;i++)
{
ii=indexR[i];
ishell=static_cast<int>(R[ii]/xStep);
theta=atan2(data->pPOS[ii*3+1], data->pPOS[ii*3]);
al2[ishell] += massp*cos(fm*theta);
}
}
In realtà avevo intenzione di usare STL parallelo da g ++ 4,4
g++ -D_GLIBCXX_PARALLEL -fopenmp
che permettono di eseguire il codice in parallelo senza modifiche se il codice è scritto in libreria STL standard.
Perché non semplicemente '#pragma omp parallel for' prima del for? – stephan
+1 stephan, anche se tje 'al2 [ishell]' ** + = ** ha bisogno di una clausola di riduzione o di una barriera atomica. Non sono sicuro di come questo si tradurrebbe in parallelo STL. – peterchen
Sì, una delle soluzioni sarà "#pragma omp parallel for" ma sempre prima di ciascuna per una necessità di considerare variabili condivise e private. che è sempre una delle fonti di errori. – Arman