gpt4 book ai didi

使用 CUDA 的 matlab if 语句

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:58 24 4
gpt4 key购买 nike

我有以下 matlab 代码:

randarray = gpuArray(rand(N,1));
N = 1000;

tic
g=0;
for i=1:N

if randarray(i)>10
g=g+1;
end

end
toc

secondrandarray = rand(N,1);
g=0;

tic
for i=1:N

if secondrandarray(i)>10
g=g+1;
end

end
toc



Elapsed time is 0.221710 seconds.
Elapsed time is 0.000012 seconds.

1) 为什么 if 子句在 GPU 上这么慢?它正在减慢我所有的优化尝试

2) 我该怎么做才能绕过这个限制?

谢谢

最佳答案

无论您是在 cpu 上还是在 gpu 上,这通常都是一件坏事。

以下是执行您正在查看的操作的好方法。

N = 1000;
randarray = gpuArray(100 * rand(N,1));
tic
g = nnz(randarray > 10);
toc

我没有 PCT,我无法验证这是否真的有效(GPU 支持的功能数量相当有限)。

但是如果你有 Jacket ,您一定可以做到以下几点。

N = 1000;
randarray = gdouble(100 * rand(N, 1));
tic
g = nnz(randarray > 10);
toc

全面披露:我是开发 Jacket 的工程师之一。

关于使用 CUDA 的 matlab if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com