Matlab: parfeval в сочетании с автономным исполняемым файлом (MCC)

Я пытаюсь создать автономный исполняемый файл matlab, содержащий операторы parfeval и панель ожидания. Следующий код отлично работает в среде исполнения Matlab. Однако после компиляции с использованием mcc -m test_mcc.m я получаю следующую ошибку:

ошибка:

    Error using parallel.FevalFuture/fetchNext (line 243)
The function evaluation completed with an error.

Error in test_mcc (line 11)



Caused by:
    An error occurred interpreting the results of the function evaluation.

parallel:fevalqueue:FetchNextFutureErrored

код:

function test_mcc()
    N = 100;
    for idx = N:-1:1
        % Compute the rank of N magic squares
        F(idx) = parfeval(@rank,1,magic(idx));
    end
    % Build a waitbar to track progress
    h = waitbar(0,'Waiting for FevalFutures to complete...');
    results = zeros(1,N);
    for idx = 1:N
        [completedIdx,thisResult] = fetchNext(F);
        % store the result
        results(completedIdx) = thisResult;
        % update waitbar
        waitbar(idx/N,h,sprintf('Latest result: %d',thisResult));
    end
    delete(h)
end

какие-нибудь подсказки?

1 ответ

Очевидно, это ошибка в R2014a. Mathworks предоставил мне следующую поддержку:

Ошибка, которую вы получаете, вызвана ошибкой в ​​Parallel Computing Toolbox. "parfeval" требует, чтобы определенные компоненты были скомпилированы в автономное приложение, но эти компоненты по умолчанию не видны для анализа зависимостей в MATLAB Compiler. Эта ошибка была исправлена ​​в выпуске R2014b.

Чтобы обойти эту проблему в вашем текущем выпуске MATLAB, добавьте следующую строку в ваш M-файл, а затем перекомпилируйте автономное приложение, используя "mcc":

% # function parallel.internal.queue.evaluateRequest

Эта строка позволит компилятору включать правильные зависимости в автономное приложение.

Другие вопросы по тегам