使用共享矩阵数据的Matlab GPU/CUDA操作

使用共享矩阵数据的Matlab GPU/CUDA操作,matlab,matrix,cuda,gpu,Matlab,Matrix,Cuda,Gpu,有没有办法在gpuArray类型中使用共享矩阵执行arrayfun 在我的例子中,我想对gpuArray矩阵的两列或多列求和,但我不知道如何在gpuffunction中实现,arrayfun是最好的选择吗 我想在CUDA中做这个简单的操作,因为我需要用不同的组合做一百万个这样的操作 多谢各位 我会更好地解释这个问题。如果你看到我的问题是这样的 functionarrayfun=@(行)functionMex(数据1,数据2,行) i=1:长度(表格组合(:,1));%从1到行的末尾 比率=阵列风

有没有办法在
gpuArray
类型中使用共享矩阵执行
arrayfun

在我的例子中,我想对
gpuArray
矩阵的两列或多列求和,但我不知道如何在
gpuffunction
中实现,
arrayfun
是最好的选择吗

我想在CUDA中做这个简单的操作,因为我需要用不同的组合做一百万个这样的操作

多谢各位

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

functionarrayfun=@(行)functionMex(数据1,数据2,行)

i=1:长度(表格组合(:,1));%从1到行的末尾

比率=阵列风(功能阵列风,i)

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

并使用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))
并使用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))

作为
arrayfun
gpuArray
gpuffunction
的替代方案,您可以尝试直接在
CUDA
中编写函数,使用
nvcc
编译函数,然后在
Matlab
下将其链接为
mex
文件。是的,我知道,但是我问这个问题是因为我想知道是否还有其他的方法,我想避免使用c,但我想我必须使用它作为
arrayfun
gpuArray
gpuffunction
,你可以尝试直接在
CUDA
中编写你的函数,用
nvcc
编译它,然后在
Matlab
下链接成
mex
文件。是的,我知道,但我问这个问题是因为我想知道是否还有其他方法,我想避免使用c,但我想我必须这样做。问题是,在gpu阵列中,如果你不能使用@函数,它需要有一个写函数。在我的例子中,我想有一个函数的arrayfun,比如[ratio(i)]=functionMex(array1,array2,i)我认为现在不仅在matlab中是不可能的,你需要使用mex和cuda内核。或者使用matlab的arrayfire护套,但无法购买。感谢这个问题是在gpu arrayfun中你不能使用@函数,它需要一个写函数。在我的例子中,我想让arrayfun用于像[ratio(i)]=functionMex(array1,array2,i)这样的函数,我认为现在不可能只有在matlab中你才需要使用mex和cuda内核。或者使用matlab的arrayfire护套,但无法购买。谢谢