使用共享矩阵数据的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护套,但无法购买。谢谢