【问题标题】:Matlab GPU/CUDA operations using a shared matrix dataMatlab GPU/CUDA 操作使用共享矩阵数据
【发布时间】:2013-07-17 19:41:15
【问题描述】:

有没有办法用gpuArray 类型的共享矩阵来做arrayfun

在我的情况下,我想对gpuArray 矩阵的两列或多列求和,但我不知道如何在gpuFunction 中实现,arrayfun 是最好的选择吗?

我想在 CUDA 中进行这种简单的操作,因为我需要使用不同的组合进行一百万次此类操作。

非常感谢。

我会更好地解释这个问题。如果你看到我的问题是这样的

functionarrayfun = @(row)functionMex(data1,data2,row);

i = 1:length(tablaCombinaciones(:,1));%从 1 到行尾

ratio = arrayfun(functionarrayfun,i);

不支持使用 gpuArray/arrayfun 索引时出错。第 6 行错误

【问题讨论】:

  • 作为arrayfungpuArraygpuFunction 的替代方案,您可以尝试直接在CUDA 中编写函数,使用nvcc 编译它,然后在@987654331 下链接它@ 作为mex-文件。
  • 是的,我知道,但我问是因为我想知道是否有其他方法可以做到这一点,我想避免 c ,但我想我必须这样做

标签: matlab matrix cuda gpu


【解决方案1】:

Arrayfunbsxfun 使用 gpuArray:

看例子:

A = gpuArray.rand(100,2);
B = A(:,1);
C = A(:,2);
bsxfun(@plus,A(:,1),A(:,2))
arrayfun(@(x,y)x+y,A(:,1),A(:,2))

【讨论】:

  • 问题是在 gpu arrayfun 中你不能使用 @ 函数,它需要有一个书面函数。在我的情况下,我想要一个这样的函数的 arrayfun [ ratio(i) ] = functionMex(array1,array2,i ) 我认为现在仅在 matlab 中是不可能的,您需要使用带有 cuda 内核的 mex。或使用无法购买的matlab的arrayfire夹克。谢谢
猜你喜欢
  • 2015-10-13
  • 2017-04-06
  • 2017-04-06
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 2015-06-17
  • 2012-11-16
相关资源
最近更新 更多