все! Ввод из Италии Этот небольшой фрагмент кода работает, если размер матрицы меньше 800 и не работает с ошибкой сегментации для более высоких размеров .... Я пробовал это с помощью gcc 4.3.2 компилятора в linux и macosx и компиляторе VisualStudio в окна. Проблема Seemsthe в размере стека ..... как я могу увеличить его? Как я могу решить проблему для больших размеров матрицы? Код работает нормально в последовательном переносе с ошибкой при параллельном выполнении. Спасибо.ошибка сегментации с использованием 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;
}}
}
Ссылка не работает. Было бы также полезно знать, есть ли способ изменить поведение OpenMP изнутри программы, не вникая в переменные среды. – darklon 2012-02-14 16:04:16
FYI: по крайней мере, на некоторых системах, версия gcc версии OpenMP, по-видимому, использует 2 МБ в качестве размера стека по умолчанию для всех потоков, которые запускаются. – 2013-02-27 16:18:50