我有一个复杂的函数,它执行不能矢量化的数学运算。我发现使用NUMBA jit编译器实际上会降低性能。可能是因为我在这个函数中使用了对python math.sqrt的调用。如何强制NUMBA替换对python math.sqrt的调用,以加快对sqrt的C调用?
--向Kes致敬
发布于 2014-05-30 05:58:05
Numba已经将对math.sqrt的调用替换为对sqrt机器代码库的调用。所以,如果你的性能变慢了,那可能是别的原因。
你能发布你想要加速的代码吗?另外,您使用的是哪个版本的Numba。在最新版本的Numba中,您可以调用修饰函数的inspect_types方法来打印被解释为python对象的列表(因此仍然很慢)。
发布于 2014-05-30 06:43:47
Numba已经将math.sqrt调用映射到libc中的sqrt/sqrtf。速度减慢可能来自于Numba的开销。这种开销来自(取消)装箱PyObjects和检测编译后的代码中是否发生错误。它影响从Python调用小函数,但从另一个Numba编译函数调用时影响较小,因为没有(取消)装箱
如果您设置了环境变量NUMBA_OPT=3,则会启用主动优化,从而消除一些开销,但会增加代码生成时间。
https://stackoverflow.com/questions/23908547
复制相似问题