在GPU上使用复数
图形处理器使用复数的条件
如果在GPU上运行的函数的输出可能很复杂,则必须显式指定其输入参数为复杂复杂的
函数。这适用于操作的函数gpuArray
对象直接连接到所操作的函数gpuArray
数据使用arrayfun
.
当创建一个gpuArray
有负面的成分,使用G = gpuArray(复杂的(x))
,则可以成功执行sqrt (G)
.例如,
X = [-1 0 1];G = gpuArray(复杂的(x));rootG = sqrt (G)
0.000 + 1.0000i 0.000 + 0.000 i 1.000 + 0.000 i
如果结果是agpuArray
对于复数据,如果所有虚部都为零,这些虚部保留,数据保持复。这可能导致在对数据进行操作时执行不必要的计算,例如,排序
而且伊斯雷尔
.
如果使用arrayfun
,函数输入可以指定为arrayfun
调用。例如,
X = [-1 0 1];G = gpuArray (x);A = arrayfun(@(p)√(complex(p)), G)
0.000 + 1.0000i 0.000 + 0.000 i 1.000 + 0.000 i
返回复杂数据的函数
这个表列出了可能返回复杂数据的函数,以及输出保持实数的输入范围。
函数 | 实际输出的输入范围 |
---|---|
这些“可信赖医疗组织”(x) |
abs (x) < = 1 |
作用(x) |
x > = 1 |
acoth (x) |
abs (x) > = 1 |
正式启动(x) |
abs (x) > = 1 |
asec (x) |
abs (x) > = 1 |
asech (x) |
0 <= x <= 1 |
正如(x) |
abs (x) < = 1 |
atanh (x) |
abs (x) < = 1 |
日志(x) |
x > = 0 |
log1p (x) |
x > = 1 |
log10 (x) |
x > = 0 |
log2 (x) |
x > = 0 |
功率(x, y) |
x > = 0 |
reallog (x) |
x > = 0 |
realsqrt (x) |
x > = 0 |
sqrt (x) |
x > = 0 |