How do I construct a complex gpuArray directly on the GPU?
10 次查看(过去 30 天)
显示 更早的评论
I am trying to initialize a complex gpuArray directly on the GPU (i.e. without first creating a complex array in host memory and then copying it over to the device).
So far the only thing I've found that works is:
foo = gpuArray(complex(0));
bar = zeros(4, 1, 'like',foo);
which seems kinda silly. Is there a way to allocate a complex gpuArray directly using something like gpuArray.zeros?
0 个评论
采纳的回答
Edric Ellis
2017-9-12
None of MATLAB's build methods (the zeros, ones family) build complex arrays, so the nearest you can get is to do something like:
complex(zeros(3, 'gpuArray'))
which never allocates any host memory, and results in a complex gpuArray.
1 个评论
Jacob Lynch August
2018-11-9
What about elements on the host that need to be transferred to the GPU, like
G = complex( gpuArray(V(:,1)), gpuArray(:,2) );
It seems silly to me to have those two temporary gpuArrays.
更多回答(1 个)
KSSV
2017-9-12
G = gpuArray(rand(10,1)+1i*rand(10,1));
2 个评论
Jacob Lynch August
2018-11-9
Alternatively:
complex(gpuArray.rand(size,type),gpuArray(size,type))
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!