arrayfun
在GPU上应用函数数组的每个元素
描述
请注意
这个函数的行为类似于MATLAB®函数arrayfun
,除了函数的评估发生在GPU上,而不是在CPU上。任何必需的数据没有在GPU上搬到GPU内存。MATLAB函数通过评价被编译,然后在GPU上执行。所有输出参数返回gpuArray对象。您可以检索gpuArray数据使用收集
函数。
应用函数B
= arrayfun (有趣的
,一个
)有趣的
的每个元素gpuArray一个
。arrayfun
然后连接输出有趣的
到输出gpuArrayB
。B
一样的尺寸吗一个
和B (i, j,…) =乐趣((i, j,…))
。输入参数有趣的
是一个函数句柄一个MATLAB函数,它接受一个输入参数,并返回标量值。有趣的
被称为多少倍的元素吗一个
。
你不能指定的顺序arrayfun
计算的元素B
或者依靠他们在任何特定的顺序。
例子
输入参数
输出参数
提示
你第一次打电话
arrayfun
在GPU上运行一个特定的功能,有一些开销GPU执行时间设置功能。后续调用的arrayfun
使用相同的函数可以运行得更快。Nonsingleton维度的输入数组必须相互匹配。换句话说,对应的尺寸参数
A1,…,一个
,必须相等,否则等于1。每当输入数组的维度是单例(等于1
),arrayfun
使用单例扩张。数组几乎是复制的单维度匹配另一个数组中最大的尺寸。当输入数组的尺寸单和相应的维度在另一个参数数组中为零,arrayfun
几乎减少了单维度0
。每个维度的输出数组
B
是相同的输入数组的大小作为最大的为非零维的大小,或零。下面的代码显示了如何的尺寸大小1
上升或下降来匹配相应尺寸的大小在其他参数。R1 =兰德(2、5、4、“gpuArray”);R2 =兰德(2,1,4,3,“gpuArray”);R3 =兰德(1、5、4、3、“gpuArray”);R = arrayfun (@ (x, y, z) (x + y。* z), R1, R2, R3);大小(R)
2 5 4 3
R1 =兰德(2 2 0 4“gpuArray”);R2 =兰德(2,1,1,4,“gpuArray”);R = arrayfun (@plus、R1、R2);大小(R)
2 2 0 4
因为支持的操作金宝app
arrayfun
严格element-wise,每个计算每个元素执行独立于他人,施加一定的限制:输入和输出数组不能改变形状或大小。
数组创建等功能
兰德
不支持大小规格金宝app。随机数数组每个元素有独立的溪流。
就像
arrayfun
在MATLAB矩阵指数的权力,乘法和除法(^
,*
,/
,\
)执行element-wise计算。操作,改变大小或形状的输入或输出数组(
猫
,重塑
不支持等等)。金宝app只读索引(
subsref
)和访问父(外部)的变量函数支持工作区中嵌套函数。金宝app你可以索引变量中存在的函数在GPU上的评价。转让或者subsasgn
从内部索引这些变量不支持嵌套的函数。金宝app支持使用的一个示例,请参阅金宝app对GPU模板操作。匿名函数不能访问父函数的工作区。
重载的支持功能是不允许的。金宝app
代码不能调用脚本。
没有
答
变量未赋值的计算结果。一定要明确分配所有计算变量的结果。不支持以下语言特性:持久或全局变量,金宝app
parfor
,spmd
,开关
,试一试
/抓
。不能包含调用p代码文件
arrayfun
gpuArray数据。
版本历史
介绍了R2010b