Bonjour,
je viens de découvrir l'une de mes limites dans la compréhension d'openmp.
Je suis dans une fonction dans laquelle j'utilise deux sections pour paralléliser deux bouts de codes. Dans ces deux bouts de code, j'utilise deux objets de type CMatrice (une classe que j'ai créée moi-même, qui contient deux entiers et un pointeur double**) qui sont définis privés pour chacune des sections.
Or, en instanciant les deux objets, j'appelle un constructeur à deux paramètres entiers, qui sont affectées aux deux entiers membres de la classe, et qui alloue dynamiquement le double** avec ces deux entiers.
MAIS, quand je souhaite modifier dans chaque section les deux objets, j'obtiens une erreur de segmentation, car il semble que le pointeur double** ne soit pas alloué.
Voici mon code :
Je n'ai pas mis le vrai bout de code qui modifie les matrices, mais cela revient exactement au même. Le code m'envoie une erreur de segmentation quand j'essaie d'accéder à l'élement 0,0 de P1 ou P2.
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
18
19
20
21
22 CMatrix P1(2,2) CMatrix P2(2,2); #pragma omp sections private(P1, P2) { #pragma omp section { P1.set(0,0,1); P1.set(0,1,2); P1.set(1,0,3); P1.set(1,1,4); } #pragma omp section { P2.set(0,0,1); P2.set(0,1,2); P2.set(1,0,3); P2.set(1,1,4); } }
Ma question est donc : l'initialisation par constructeurs avec paramètres est-elle complètement occultée par les sections ???
Merci par avance.
Cordialement.
Partager