필터 지우기
필터 지우기

gpu memory code optimization

조회 수: 1 (최근 30일)
Octavian
Octavian 2014년 12월 13일
댓글: Octavian 2014년 12월 15일
Dear Wizes,
I would appreciate if you could break this: My code includes gpuArray operations inside a for loop; the relevant portion is here:
  1. % allocate gpu memory:
  2. A=GPUArray.eye(x,'single'); B=GPUArray.zeros(y,x,'single'); C=GPUArray.zeros(x,y,'single'); % x>>>y
  3. for n=1:t %for loop begins
  4. ... % not relevant, B and C are 'filled' by specific matrix multiplications
  5. D=B*A; % size(D)= (y,x)
  6. E=C*D; % size(E)= (x,x)
  7. A=A-E;
  8. clear E D
  9. ...
  10. end
I must mention that all of A,B,C,D,E are different with each iteration in the for loop as they are reused.
The problem is that x is large, and A and E are huge (2 to 7Gb, depending on x), killing my gpu. I made it run, albeit slowly, by breaking E (performing operations row-wise in A for steps 6-7 above:
for i=1:size (A,1)
E=C(i,:)*D;
A(i,:)=A(i,:)-E;
clear E D
1. This works, but is very slow, I was wondering if there is a way to calculate the same for blocks of n rows at once, not one row at a time (with n scaled based on what the gpu can take, where x=kn+p, where p<n); or using mtimesx-like bsxfun routines for matrix multiplication.
2. It would be great if A could be broken in blocks of rows or columns, or in one at a time (row-wise or column-wise), however this is above my job description, given that A is the right multiplier in step 5. This would allow me to expand the size of x I can use.
Thank you, as always Octavio
  댓글 수: 6
Matt J
Matt J 2014년 12월 15일
Are none of these matrices sparse? I know that the GPU doesn't support sparse matrices, but if they are sparse, maybe the CPU is better?
Octavian
Octavian 2014년 12월 15일
With the first iterations, A stays sparse, but then it fills pretty quickly, thanks, Octavio

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by