Intel Distribution for Python提供了哪些优化?

5

英特尔强烈建议使用他们的Python分发版,而不是手动构建Python模块。一个明显的优点是他们的分发版提供了许多优化模块,如果您想自己编译这些模块,则是一项非常棘手的任务。

但我还没有找到有哪些优化可用。如果我手动构建软件包,我可以确保在编译代码时考虑了处理器上的所有指令(AVX、SSE),使二进制文件尽可能地优化,因此我想知道:

英特尔是否为其所有处理器提供了编译后的二进制文件?(例如每个处理器代际都有不同的二进制文件集:Nehalem、Sandy Bridge等)或...

英特尔是否提供某种通用优化?(适用于所有处理器)或...

介于两者之间的某种方案?

更具体地说,Intel表示它通过MKL、TBB和DAAL的方式“加速”Python。手动构建至少可以利用MKL和主机处理器指令集的定制化。因此,在我看来,这两种方法之间存在一种权衡:如果使用分发版,将节省大量时间,并且将拥有所有“加速器”,但手动编译将利用MKL和指令集(至少)。那么,你的看法是什么?
1个回答

2
两种说法都是对的 - 大多数库都编译了多个ISA目标,如AVX2、AVX512,内部调度程序在运行时选择特定的代码路径。
此外,还有低级别的SSE2代码路径,适用于包括AMD CPU在内的任何现代x86系统。根据特定库中的调度程序实现,也会为非英特尔CPU选择特定的代码路径。
就消息传递而言 - 有点混合。从Python层面来看,没有期望用户会编译任何特定的内容。但是,如果将应用程序从Python移植到C++,还可以获得额外的性能优势 - 在这种情况下,所有这些库都将通过C++ API使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接