я получил следующую часть кода, получая мне ошибку переполнения стекаOpenMP в Mex: StackOverflow ошибка
#pragma omp parallel shared(Mo1, Mo2, sum_normalized_p_gn, Data, Mean_Out,Covar_Out,Prior_Out, det) private(i) num_threads(number_threads)
{
//every thread has a new copy
double* normalized_p_gn = (double*)malloc(NMIX*sizeof(double));
#pragma omp critical
{
int id = omp_get_thread_num();
int threads = omp_get_num_threads();
mexEvalString("drawnow");
}
#pragma omp for
//some parallel process.....
}
переменные, объявленные в совместно создаются таНос. и они потребляют с большим объемом памяти
есть 2 вопроса относительно вышеуказанного кода. 1) почему это привело бы к возникновению ошибки переполнения стека (т. Е. Ошибки сегментации), прежде чем он перейдет в параллельный цикл? он отлично работает, когда он работает в последовательном режиме .... 2) Я прав на динамическое выделение памяти для каждого потока, такого как «normalized_p_gn» выше?
С уважением Эдвин
Когда вы освобождаете динамически выделенную память? –