gpt4 book ai didi

numpy - numpy 中的哪些操作使用 SIMD?

转载 作者:行者123 更新时间:2023-12-02 01:44:46 28 4
gpt4 key购买 nike

下午好!目前,我正在挖掘 numpy 速度快的原因。更具体地说,我想知道为什么 np.sum() 这么快。我的一个建议是 np.sum() 使用某种 SIMD 优化,但我不确定它是否是。有什么方法可以检查哪个 numpy 的方法使用 SIMD 操作?提前致谢

最佳答案

Numpy does not currently use SIMD instructions for trivial np.sum calls yet .但是,我做了 this PR应该很快合并并用整数解决这个问题(如果可用,它将使用 256 位 AVX2 指令集,否则使用 128 位 SSE/Neon 指令集)。由于当前使用的算法(成对求和),并且应该关心精度,因此将 SIMD 指令用于带有 float 的 np.sum 有点困难。

Is there any way that I can check which numpy's method uses SIMD operations?

低级分析器和基于硬件计数器的工具(例如 Linux perf、Intel VTune)可以做到这一点,但它们对用户来说不是很友好(即,您需要了解一些汇编概念,大致了解处理器如何工作工作并阅读一些关于硬件计数器的文档)。另一种解决方案是使用 objdump 之类的工具查看 Numpy 的反汇编代码(需要非常了解汇编和调用的 C 函数的名称)或者简单地查看 Numpy C 代码(注意编译器可以自动矢量化循环,所以这个解决方案不是那么简单)。

更新:如果您在连续 double Numpy 数组上使用np.sum,那么使用 SIMD 指令的好处不是很大。事实上,对于不适合高速缓存的大型连续 double 组,标量实现应该能够使大多数 PC(但肯定不是 Apple M1 或计算服务器)的内存带宽饱和,尤其是在高频处理器上。在小数组(例如 <4000)上,Numpy 开销主导了此类函数的执行时间。对于连续的中型数组(例如 >10K 和 <1M 项),使用 SIMD 指令应该会显着加快速度,特别是对于简单精度数组(例如,在 DP 上快 3-4 倍,快 6-8 倍在主流机器上的 SP 上)。

关于numpy - numpy 中的哪些操作使用 SIMD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71059081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com