使用带火花的英特尔 AVX

Sim*_*aPK 3 jvm scala avx apache-spark avx512

我们有一个带有 intel AVX 512 CPU 的新集群。我们对该主题进行了研究,但没有结果。我们想知道 Spark 作业是否能够在 AVX 本地运行以处理 DataFrames 对象,或者我们是否必须更改代码以允许 JVM 使用它,或者它是否完全无用。我们的 spark 应用程序是用 scala 编码的。我们的大部分工作是 DataFrames 对象处理和算法。在此先感谢您的帮助

Spe*_*ava 6

这将取决于几件事。

AVX512 支持已添加到 JDK 9 中的 OpenJDK(请参阅https://bugs.openjdk.java.net/browse/JDK-8076276),因此您需要在 JDK 9 或更高版本上运行。要明确启用此功能,您需要添加命令行标志-XX:UseAVX=3

但是,使用多少将在很大程度上取决于您的代码的工作方式以及 JIT 编译器如何使用矢量化。在 Azul(我为他工作),我们用 Falcon JIT 替换了 Zing JVM 中的 C2 JIT。这是基于 LLVM 编译器项目,并且能够在比 C2 通常识别的更复杂的情况下使用矢量化。

  • 仅供记录 - Spark 尚不支持 JDK9 或更高版本。 (2认同)