Perte de memoire avec mingw et pthread ou openMP
Bonjour,
Voici un bout de code que je link de 2 facon différente avec le dernier mingW, gcc4.4.1 sous windows
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
for (int k=0;k<=100000;k++) {
for (int j=1;j<=8;j++) {
omp_set_num_threads(j);
int h=0;
#pragma omp parallel for reduction(+:h)
for (int i=0;i<1000;i++) {
h++;
}
if (h==100) printf("%d",h);
}
} |
Alors dans mon example j'utilise OpenMP mais si c'était des pthreads le comportement serait le même.
Si je link avec l'option "-mthread" et je que je met la dll "mingwm10.dll" tout se passe bien
Maintenant si je link en static avec "libmingwthrd.a" + "libmingw32.a", la mon programme grossis de plus en plus en mémoire et c'est liée au fait que je change le nombre de threads actif par la fonctrion openMP omp_set_num_threads(). Je ne sais pas exactement ce qui se passe mais quand le pools de threads change de taille quelquechose n'est pas d'ésaloué. Et ca va trés vite ~120 octect par thread.
J'ai peu d'espoir que quelqu'un ait déjà été confronté à ca, mais sait-on jamais