【发布时间】:2019-11-08 16:40:24
【问题描述】:
NumPY 有 complex64 对应于两个 float32。
但它也有 float16,但没有 complex32。
怎么会?我有涉及 FFT 的信号处理计算,我认为我可以使用 complex32,但我不知道如何到达那里。我特别希望通过cupy 在 NVidia GPU 上加速。
不过,float16 在 GPU 上似乎是 slower,而不是更快。
为什么不支持和/或忽略半精度?
同样相关的是为什么我们没有complex integers,因为这也可能显示opportunity for speedup。
【问题讨论】:
-
你为什么期待加速?
-
因为一半的位要推来推去。
-
但是如果处理器(和
c代码)针对 32 位和 64 位处理进行了优化怎么办?我们大多数人不再使用 8 位处理器! -
关于cupy有什么没有实现,这可能只是开发优先级的问题。 cupy 仍然很新(例如,至少与 CUDA 或 numpy 相比)。您可能会以问题或拉取请求的形式向 cupy 开发人员表达您的愿望。我怀疑问一个关于 SO 的随机问题是向 Cupy 开发团队表明您的兴趣的好方法。更好的方法是直接联系他们(例如 github)并提供一个具体的例子,甚至可能是一个具体的流派,作为激励。
-
However it seems that float16 is slower on GPU rather than faster.GPU 上的 FP16 FFT 肯定有可能比相应的 F32(或 FP64)FFT 更快。当然,GPU 类型很重要。似乎您可能已经在您的 cmets 中以一种倾斜的方式指出了这一点,所以我不确定您为什么要在您的问题中保留这样的陈述而不进行编辑。所以我就把这个留给未来的读者。
标签: numpy fft cupy half-precision-float