Hi there, for multiple cores on CPU you can use parfor. But for a loop on gpu how can you speed it up?
Any help?

 채택된 답변

Edric Ellis
Edric Ellis 2012년 3월 26일
편집: Edric Ellis 2023년 2월 3일

1 개 추천

The nearest equivalent on the GPU is to use arrayfun. This implicitly loops over each element of your input gpuArray, so there's no need for an explicit parfor loop.
Have a look at this demo which shows using a while loop inside a call to arrayfun on the GPU. In this case, the arrayfun call parallelises operations on each element of a large array, and the function running on the GPU includes a for loop.

댓글 수: 2

Answer is so helpful for me but my problem is quite different from the above problem. can you please help me to solve the below problem.
function [s,q]=initial(p,cn)
if cn<5
s=100./cn;
q=s+p;
cn(2,1)=s+2;
else
s=500./cn;
q=s+p;
cn(2,1)=s+4;
end
p=gpuArray([4;5;7;8;7;8;7;2]);
cn=gpuArray([15]);
[s,q]=arrayfun(@initial,p,cn)
my problem is similar to above code. i want to run the above code through "parallel computations using GPU".
my questions are
1. can use "ARRAYFUN" (my inputs (cn,p) have different size) to solve the above problem? i need to get "cn(i+1)" value from s(i).
2. if not how can i solve above problem through "parallel computations using GPU".
AVINABA BISWAS
AVINABA BISWAS 2020년 5월 16일
Yes. I have also the similar situation. Means I have created a function and I want to call this function by using inputs which are already in gpuarray.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 GPU Computing에 대해 자세히 알아보기

태그

질문:

2012년 3월 24일

편집:

2023년 2월 3일

Community Treasure Hunt

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

Start Hunting!

Translated by