直接从Numb使用CPU指令

2024-04-28 11:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Numba编译的函数中使用CPU的内置指令,但在弄清楚如何引用它们时遇到了困难。例如,SSE4指令集中的popcnt指令,我可以使用 llvmlite.binding.get_host_cpu_features(),但无法调用函数本身。在

我需要能够从其他nopython编译的函数中调用这些函数(指令)。在

理想情况下,这将尽可能接近Python,但在这种情况下,速度比可读性更重要。在


Tags: 函数hostget指令情况cpu内置binding
2条回答

可以使用Cython调用SSE intrinsics,但不能使用Numba来调用它。通过Cython执行您想要的代码在这里:https://gist.github.com/aldro61/f604a3fa79b3dec5436a和这里:https://gist.github.com/craffel/e470421958cad33df550

你可以制作一个小的汇编语言DLL并通过ctypes调用它,在我的经验中,当从Numba nopython代码中使用时,没有任何开销。或者,您可以直接使用指令代码,就像在这个blog post on jit in PythonPiston JavaScript中一样。汇编程序可能用于获取小型asm例程的机器代码。Numba允许在llvmir中生成小函数,如this thread所述,当然也可以使用llvmlite。在

相关问题 更多 >