Matlab crashes using mex-Function and openMP

I have a problem using matlab mexfunction and openMP instructions. I found some related topics but none of them were able to help me.
I want to use openMP with a mex-Function to create a .mexw64 file. But when i use my matlab function, matlab crashes in a brutal way.
Theses are my codes:
C++ code
#include "mex.h"
#include <iostream>
#include <omp.h>
void mexFunction(int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[])
{
#pragma omp parallel default(shared)
{
}
mexPrintf("Hi !\n", N);
}
Matlab code:
clear all, close all, clc;
testopenMP();
clear mex;
When i call my function testopenMP matlab crashes. But if I comment the "#pragma omp parallel" instruction, everything work fine:
#include "mex.h"
#include <iostream>
#include <omp.h>
void mexFunction(int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[])
{
//#pragma omp parallel default(shared)
{
}
mexPrintf("Hi !\n", N);
}
Another important point, with the pragma omp parallel intruction, sometimes the program works, and sometimes it crashes...
Do you have any ideas of what crashes matlab ? Any help is welcolme

4 Comments

Did you find a solution? I am having the same issue with a MEX code in FORTRAN. It crashes if I compile with -fopenmp flag, but runs smoothly without -fopenmp
mex feature_on_sun_fortran.F90 FFLAGS="$FFLAGS -O3" LDFLAGS="$LDFLAGS -O3"
The code does not even have a OMP_PARALLEL construct, it only has
include 'omp_lib.h'
I just discovered that having a mexPrintf statement inside a OMP PARALLEL construct causes the program to crash. Move the print statement outside the parallel construct and it runs fine.
I met the same issue. Seems like MEX does not support mexPrintf inside OpenMP parallel region. Litterally can't find a way to output any information inside parallel region.

Sign in to comment.

Answers (0)

Categories

Asked:

on 9 Jun 2016

Commented:

on 8 Oct 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!