Возможно ли запустить файл MEX параллельно с помощью Parallel Computing Toolbox в Matlab (parfor)? Я скомпилировал приложение Fortran в MEX-файл, используя gfortran-компилятор. Он работает без проблем:Параллельные вычисления с файлами MEX в Matlab?
mass=getMass(x);
Но когда я пытаюсь запустить его параллельно, он падает. Fe .:
matlabpool 4
parfor i=1:80
mass(i)=getMass(x);
end
Я получаю следующее сообщение об ошибке:
Error using distcomp.remoteparfor/getCompleteIntervals (line 22) The session that parfor is using has shut down.
Caused by: Error using distcomp.remoteparfor/getCompleteIntervals (line 22) The session that parfor is using has shut down.
The client lost connection to lab 3. This might be due to network problems, or the interactive matlabpool job might have errored.
Другие функции (не MEX) выполняются без проблем параллельно. Я использую Matlab R2013a на OS X 10.8.5.
Как выглядит код для getMass? Он не может быть потокобезопасным. См., Например, https://software.intel.com/en-us/forums/topic/270572 –
Это довольно сложная программа Fortran. Может быть, проблема с IO? Поскольку каждый раз он записывает на жесткий диск некоторые неформатированные данные: OPEN (UNIT = 3, FORM = "UNFORMATTED", ACCESS = "SEQUENTIAL") – picusiaubas
Это может быть что угодно. IO или сохраненные переменные, кто знает. Попробуйте выполнить некоторую отладку. Попробуйте объявить подпрограмму 'recursive'. –