CPU 与 AVX
ND4J/Deeplearning4j中的 CPU与AVX支持
什么是AVX,为什么重要?
AVX(高级向量扩展)是一组用于加速数值计算的CPU指令。更多细节见维基百科。
请注意,AVX仅适用于x86设备的nd4j-native(CPU)后端,而不适用于GPU和ARM/PPC设备。
AVX的重要性:性能。您希望使用系统支持的最高级别AVX编译的ND4J版本。
不同CPU的AVX支持-摘要:
大多数现代x86 CPU:支持AVX2
一些高端服务器CPU:AVX512可能被支持
旧CPU(2012年之前)和低功耗x86(Atom、Celeron):不支持AVX(通常)
注意,支持更高版本AVX的CPU还包括所有更早版本。这意味着可以在支持AVX512的系统上运行通用X86或AVX2二进制指令。但是,不可能在不支持这些指令的CPU上运行为更高版本(如AVX512)构建的二进制指令。
在版本1.0.0-beta6和更高版本中,如果未优化配置AVX,则可能会收到以下警告:
在ND4J/DL4J中配置AVX
如前所述,为了获得最佳性能,您应该使用与CPU支持的AVX级别相匹配的ND4J版本。
对于nd4j/nd4j-platform依赖项,ND4J默认配置(仅包括nd4j-native 或 nd4j-native-platform依赖项而不包括maven分类器配置)是“generic x86”(无AVX)。
要配置AVX2和AVX512,需要为适当的架构指定一个分类器。
为X86体系结构提供了以下二进制文件(nd4j-native分类器):
Generic x86 (no AVX):
linux-x86_64
,windows-x86_64
,macosx-x86_64
AVX2:
linux-x86_64-avx2
,windows-x86_64-avx2
,macosx-x86_64-avx2
AVX512:
linux-x86_64-avx512
示例:在Windows上配置AVX2(Maven pom.xml)
示例:在Linux上配置AVX512(Maven pom.xml)
请注意,您需要nd4j-native依赖项-有或没有分类器。
在上面的例子中,假设Maven属性 nd4j.version
设置为适当的ND4J版本, 1.0.0-beta6
Last updated