如何使用GPU/MATLAB加速自定义函数



假设我得到一个函数f(x(,s.t.yi=f(xi(

现在给出了一个数组=(x1,x2,……,xn(,我们想计算z=f(数组(,如何使用GPU加速计算?

也就是说,该代码没有反映gpu 的并行加速能力

shape = 40;
shapez = 100000;
b = gpuArray(single(ones(shape,shape,shapez)));
for i=1:shapez
c =mean(b(:,:,i));
end
disp(['gpu processing time: ', num2str(toc(t1)), ' seconds']);

如果我按如下方式更改代码,它会变得更快。

t1 = tic;
shape = 40;
shapez = 100000;
b = gpuArray(single(ones(shape,shape,shapez)));
disp(['gpu processing time: ', num2str(toc(t1)), ' seconds']);

那么,如果我的算法的基本逻辑如下,如何实现它,使其可以被GPU加速?:

for i=1:length(array)
yi = f(xi)
end

要使用预先存在的Matlab GPU加速函数,您可以在中找到它们

如果您想实现自己的功能,您可以使用MEX,如其官方文档中所述。

最新更新