tous! Taper à partir de l'Italie Ce petit morceau de code fonctionne si la taille de la matrice est inférieure à 800 et échoue avec un défaut de segmentation pour les tailles plus élevées .... Je l'ai essayé avec le compilateur gcc 4.3.2 dans Linux et MacOSX et le compilateur VisualStudio les fenêtres. Semble-t-il que le problème est dans la taille de la pile ..... comment puis-je l'augmenter? Comment puis-je résoudre le problème pour des tailles de matrice plus grandes? Le code fonctionne correctement en cas d'échec de la mise en série en parallèle. Merci.erreur de segmentation en utilisant OMP
#include <omp.h>
#include <stdio.h>
#define Nu 4000
int main() {
float A[Nu][Nu],B[Nu][Nu],C[Nu][Nu];
int i,j;
#pragma omp parallel
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
#pragma omp parallel for private(j,i) shared(A,B,C) schedule(static)
for(j=0;j<Nu;j++){
for(i=0;i<Nu;i++){
//printf("Hello from thread %d, i,j %d %d\n", omp_get_thread_num(),i,j);
A[i][j]=0;
B[i][j]=0;
C[i][j]=0;
}}
}
Le lien est rompu. Il serait également bon de savoir s'il existe un moyen de modifier le comportement d'OpenMP à l'intérieur du programme, sans se soucier des variables environnementales. – darklon
FYI: au moins sur certains systèmes, la version gcc d'OpenMP semble utiliser 2 Mo comme taille de pile par défaut pour tous les threads qu'elle lance. –