Matlab Parfor и SPMD не работает

Сценарий выглядит следующим образом:

    Lambdass = [0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000];
    numcores = feature('numcores'); % get the number of cpu cores
    num_slices = floor(length(Lambdass)/numcores); % get the number of slices for parallel computing
    if mod(length(Lambdass), numcores)~=0
        num_slices = num_slices + 1;
    end
    for slice_i=1:num_slices
        if slice_i~=num_slices
            Lambdas = Lambdass(((slice_i-1)*numcores+1):((slice_i)*numcores));
        else
            Lambdas = Lambdass(((slice_i-1)*numcores+1):end);
        end

        % start the parallel processing
        myparpool = parpool(length(Lambdas))
        parfor li = 1:length(Lambdas)
        % spmd
            lambda = Lambdas(li);
            save_path1 = sprintf('results/lambda_%f/', lambda);
            if ~exist([save_path1, '/fs_results.mat'], 'file') 
                do_something_and_save_results(lambda, save_path1);
            end
        end
        delete(myparpool)
    end

Этот скрипт может быть правильно запущен на одном компьютере, но на другом компьютере parfor кажется, не работает должным образом, и есть некоторые предупреждения, как показано ниже, и parfor наконец работает без параллельного режима, просто кажется for в последовательном. Может ли кто-нибудь помочь дать совет, пожалуйста?

    Starting parallel pool (parpool) using the 'local' profile ... Warning: Could not launch SMPD process manager. Using fallback parallel mechanism.
    > In SmpdGateway>SmpdGateway.canUseSmpd at 81
    In Local.hSubmitCommunicatingJob at 15
    In CJSCommunicatingJob>CJSCommunicatingJob.submitOneJob at 81
    In Job.Job>Job.submit at 302
    In InteractiveClient>InteractiveClient.start at 327
    In Pool.Pool>iStartClient at 537
    In Pool.Pool>Pool.hBuildPool at 434
    In parpool at 104

0 ответов

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