multi-dimensional gpu array multiplication

3 vues (au cours des 30 derniers jours)
Qiu Xu
Qiu Xu le 26 Oct 2021
Commenté : Walter Roberson le 26 Oct 2021
Hi,
I am performing the following two GPU calculations:
(1) The first problem
m=100;
n=100;
p=1024;
A=gpuArray(rand(m,n,p)); % 3D matrix
B=gpuArray(rand(m,n,p)); % 3D matrix
C=gpuArray(rand(m,n)+i*rand(m,n)); % 2D matrix with element being complex numbers
D=gpuArray(zeros(p,p));
for j=1:p
for k=1:p
D(j,k)=sum(sum(A(:,:,j).*C.*B(:,:,k)));
end
end
(2) The second problem
m=1024;
n=2048;
p=1024;
a0=2;
a1=3;
u=gpuArray(rand(m,n)+i*rand(m,n)); % 2D complex matrix
v=gpuArray(rand(m,n)+i*rand(m,n)); % 2D complex matrix
B=gpuArray(rand(60,60,m)); % 3D matrix
c=0;
d=0;
for j=1:n
usum=0;
vsum=0;
for k=1:m
usum=usum+u(k,j)*B(:,:,k);
vsum=vsum+v(k,j)*B(:,:,k);
end
c=c+a0*usum.*conj(vsum);
d=d+a1*abs(vsum).^2;
end
In above two problems, the two for-loops are very slowly, are there some good methods to aviod the two for-loops on GPU calculations?
Thanks a lots.

Réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by