【发布时间】:2022-01-19 14:52:13
【问题描述】:
我正在尝试使用gpuArray 来加快我的计算速度。但是,下面的代码并非如此。
for i=1:10
calltest;
end
function [t1,t2]=calltest
N=10;
tic
u=gpuArray(rand(1,N).^(1./[N:-1:1]));
t1=toc
tic
u2=rand(1,N).^(1./[N:-1:1]);
t2=toc
end
我在哪里
t1 =
4.8445e-05
t2 =
1.4369e-05
我有一块 Nvidia GTX850M 显卡。我是否错误地使用了gpuArray?这段代码被包裹在一个函数里面,这个函数被循环调用了上千次。
【问题讨论】:
-
请注意,
timeit将返回更可靠的结果。 -
您正在将最终结果复制到 GPU,这不是您想要的。你应该做类似
u=gpuArray(rand(1,N)).^(1./gpuArray([N:-1:1])));(untested) -
查看
gpuArray文档。 -
实际上使用您建议的方法要慢得多。我编辑了代码,使用
gpuArray时,似乎循环和调用函数使其变慢!有什么想法吗? -
将数据传输到 GPU 可能需要一些时间。您可以通过预先传输来仅计时计算时间。