Matlab 如何解决PALOOP中的广播变量问题?

Matlab 如何解决PALOOP中的广播变量问题?,matlab,Matlab,我在matlab中创建了for-loop-parralel,但是我得到警告,我的一些数组被广播,这会导致不必要的通信开销。我是matlab新手,不知道如何解决这个问题。有人能帮我吗? A和Y在此代码中广播 parfor k=1:length(gamma) Lambda=gamma(k); tmp=zeros(nfolds,Num_Tasks); for p=1:length(omega) OmegA= omega(p) for Fol

我在matlab中创建了for-loop-parralel,但是我得到警告,我的一些数组被广播,这会导致不必要的通信开销。我是matlab新手,不知道如何解决这个问题。有人能帮我吗?
A
Y
在此代码中广播

parfor k=1:length(gamma)

    Lambda=gamma(k);
    tmp=zeros(nfolds,Num_Tasks);

    for p=1:length(omega)

        OmegA= omega(p)
        for Fold=1:size(Fold_indices,2)
            % Creat train and test fold
            A_Train=A(logical(Fold_indices(:,Fold)),1:end);  # A is broadcasted
            %size(A_Train)
            Y_Train=Y(logical(Fold_indices(:,Fold)),1:Num_Tasks); # Y is broadcated

            A_Test=A(~logical(Fold_indices(:,Fold)),1:end);
            Y_Test=Y(~logical(Fold_indices(:,Fold)),1:Num_Tasks);
            coff=Estimate_x(Y_Train,A_Train,Lambda,OmegA,Binding_matrix)  ;


            % Do the prediction on Kth f;old and compute the error
            % coff
            %sum((A_Test*coff-Y_Test).^2) ./ size(A_Test,1)
            tmp(Fold,1:end)=sum((A_Test*coff-Y_Test).^2) ./ size(A_Test,1);
            tmp;
            %Coefficents{:,Fold}=coff;
            coff
        end
        In_Fold_Error{1,p}=tmp;
        %In_Fold_Error{2,k}= Lambda;


        Coefficents{:,p}=coff;
    end
    CVErr_twoparam{1,k}=In_Fold_Error;
    Coefficents_twoparam=Coefficents;

end

除非您可以直接在
parfor
循环中计算
A\u列
Y\u列
,而不是使用下标从
A
Y
获取它们的值,否则您将无能为力。您的信息源是唯一的,因此这些值将被广播


如果您有足够的内存,最好将
a_列
Y_列
计算为正常
for
中的矩阵单元数组,然后在
parfor
中使用这些顺序预计算值。这样,您不会将整个矩阵
A
Y
发送给员工。

请编辑您的问题,并添加准确的错误消息或警告(逐字)