Matlab GPU 编程中的嵌套 for 循环

Nested for loops in Matlab GPU programming

我想 运行 使用 matlab 在 GPU 中这个特定的嵌套 for 循环,任何人都可以帮助我,

        Phi=rand(100,100); FluxD=rand(100,100); FluxC=rand(100,100);
        Ima = 100;
        Jma = 100;

        for i=1:Ima-1
             for j=1:Jma-1
                  Phi(i,j) =Phi(i,j)+dt*(FluxD(i,j)-FluxC(i,j));
             end
         end  

您需要在这里做两件事 - 首先,在 GPU 上构建数据,然后为了获得最佳性能,以矢量化方式对其进行操作,如下所示:

% Build input data arrays directly on the GPU
Phi = rand(100, 'gpuArray');
FluxD = rand(100, 'gpuArray');
FluxC = rand(100, 'gpuArray');
Ima = 100;
Jma = 100;
% For convenience, make index vectors for i and j
ii = 1:Ima-1;
jj = 1:Jma-1;
% Compute Phi in a vectorised manner
Phi(ii, jj) = Phi(ii, jj) + dt * (FluxD(ii,jj) - FluxC(ii,jj));