Bonjour,

Durant un calcul si je m'ammuse à changer le nombre de threads d'un boucle à l'autre comme l'example ci-dessous la mémoire du programme ne fait que crimper jusqu'au crach final

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
  double e,c;
  bool ii=false;
  omp_set_num_threads(8);
  for (int i=0;i<100000;i++) {
    // changement du nbr de threads pour test
    if (ii) omp_set_num_threads(8); else omp_set_num_threads(4);
    ii=!ii;
    e=1;
#pragma omp parallel for private(c,d) reduction(+:e)
    for (int j=0;j<1000;j++) {
      c-=10.36-2.4*j;
      e=e+cos(c);
      if (j==0) printf("%d",omp_get_num_threads());
    }
    if (e==123) printf("version:%d\n",_OPENMP); // just pour forcer le calcul de e
  }
Si je supprime la ligne de changement du nbr de threads, la mémoire n'augmente pas continuellement.

Si quelqu'un voit le probleme je suis preneur, ca fait quelques heures que je galére.