Mex files and parallel processing
显示 更早的评论
Hi,
I have a function that uses parfor and I could successfully run it on my local cluster. When running, I could see that the local cluster was starting and was active.
From this file, I created a mex file. The mex file is created on my local machine (Win) and then I run it by using the local cluster (so, always Win). However, when the mex is running, the local cluster does not start. When I first start it, it goes in idle mode while the mex is running. So I assume that the mex file does not run in parallel.
The mex file is compiled for C language, and the default compiler is MinGW64. Shouldn't this be fine for parallel computation of mex files?
>> mex -setup
MEX configured to use 'MinGW64 Compiler (C)' for C language compilation.
2 个评论
Raymond Norris
2021-8-26
Sorry, I'm not quite following the flow here. I understand that you have a function that starts a parallel pool with the local profile. From there, you're probably running parfor.
Are you then trying to compile this function as a MEX-file, but don't see the local pool starting? Not seeing a speed up of your code? Maybe a little more description/sample code.
回答(1 个)
Walter Roberson
2021-8-26
编辑:Walter Roberson
2021-8-26
0 个投票
Historically, MINGW did not support OpenMP, which is what parfor compiles into if you ask to generate code for parfor.
If I recall correctly, you need one of the Microsoft compilers -- but if I recall correctly, any of the Community or Express editions since 2011 should work (but not SDK 7.1), provided that the edition is supported by your MATLAB release.
2 个评论
Maria
2021-8-26
Walter Roberson
2021-8-26
编辑:Walter Roberson
2021-8-26
... which shows about installing OpenMP with MinGW.
However, it does not deal with the incompatibilities issues you rightly pointed to.
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB Support for MinGW-w64 C/C++ Compiler 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!