J. *_*mos 5 python optimization intel instruction-set intel-mkl
英特尔强烈建议使用他们的Python发行版,而不是为自己手动构建Python模块.一个明显的优势是,它们的发行版中有许多优化的模块,如果你想自己编译它们,这是一个非常重要的任务.
但我还没有找到可用的优化方法.如果我手动构建软件包,我确定我的处理器可用的所有指令(AVX,SSE)在编译代码时都要考虑到,并使二进制文件尽可能优化,因此我想知道:
英特尔是否通过为其所有处理器编译的二进制文件发布分发版?(例如,每一代的不同二进制集:Nehalem,Sandy Bridge等)或......
英特尔是否提供某种通用优化?(对他们所有的处理器)或......
中间的东西?
更具体地说,英特尔表示它通过MKL,TBB和DAAL"加速"Python.手动构建将至少利用MKL和主机处理器的指令集定制.
因此,从我的观点来看,这两种方法之间存在交易:如果使用该分布,将节省大量时间并且将具有所有"加速器",但是手动编译将利用MKL和指令集(在最小).那么,你有什么看法?
两者都是正确的 - 大多数库都是使用多个 ISA 目标编译的,如 AVX2、AVX512 和内部调度程序在运行时选择特定的代码路径。
此外,还有较低级别的 sse2 代码路径,可以在包括 AMD CPU 在内的任何现代 x86 系统上工作。根据特定库中调度程序的实现,也会为非 Intel CPU 选择特定的代码路径。
就消息传递而言,情况有点复杂。从 python 级别来看,不期望用户会编译任何特定的东西。但是,如果应用程序从 Python 移植到 C++,则可以获得额外的性能优势 - 在这种情况下,所有这些库都将通过 C++ API 使用