Je souhaite transmettre une variable en tant que variable partagée dans le code parallèle openmp, mais je ne suis pas sûr de ce que je devrais faire pour transmettre une variable structurée en variable partagée. Voici mon code: Je ne sais pas si cela est la bonne façon de le faire ou non:Variable de type structuré en code openmp partagé ou privé
struct lvl{
int *L;
int *list;
};
struct lvl* lvls(int s,int k){
struct lvl* lvls =malloc(sizeof (struct lvl));
lvls->L = (int*)calloc(s+1, sizeof(int));
lvls->list=(int*)calloc(k+1,sizeof(int));
return lvls;
}
int main(int argc, char *argv[])
{
int n=100;
int k=200;
struct lvls *lvl = lvls(n,K);
#pragma omp parallel num_threads(threadnum) private(k,bi,b,kstart,kend,v,bmax,max,bwt) firstprivate(BinAff,Blist) shared(capacity,lvl)
{
#pragma omp for schedule (static,100)
for (u=0;u<G->n;u++){
//some code in here
}
}
}
Non, je voulais savoir si elle est partagée (lvl) est la bonne façon de faire les deux tableaux de la struct (L et liste) des tableaux partagés? Si non, que dois-je faire? J'ai essayé de faire shared (lvl->L,lvl->list)
mais j'ai quelques erreurs de compilation.