Вложено для циклов в программировании Matlab GPU - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу запустить этот конкретный вложенный цикл в GPU, используя matlab, может кто-нибудь помочь мне,

        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  

1 Ответ

0 голосов
/ 14 декабря 2018

Здесь необходимо сделать две вещи: сначала построить данные на графическом процессоре, а затем для достижения максимальной производительности работать с ними в векторизованном виде, например:

% 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));
...