Je veux paralléliser une boucle dans une fonction de membre de classe. Cependant, il y a deux erreurs dans le code:Questions OpenMP
class myclass
{
public:
int _k;
void f(int nb_examples, int nb_try)
{
int i;
int ks[nb_try];
// assignment to elements in ks
omp_set_num_threads(_nb_threads);
#pragma omp parallel shared(ks) private(i, _k) // error: ‘myclass::_k’ is not a variable in clause ‘private’
{
#pragma omp for schedule(dynamic) nowait
for(i=0; i < nb_try; i ++){
_k = ks[i];
if (_k > nb_examples) break;// error: break statement used with OpenMP for loop
// operations on _k
}
}
}
}
Comment expliquer ces erreurs et résoudre les problèmes? Merci et salutations!
Merci! J'ai vu que les varialbles définis en dehors de la région parallèle peuvent être déclarés privés, mais pourquoi pas ici? Y a-t-il une solution de contournement pour la première erreur? – Tim
J'ai modifié mon message. Y at-il une raison pour laquelle vous ne pouvez pas insérer int dans la méthode? Cela fonctionne-t-il si vous le faites? –