scala - 使用 Intel AVX 和 Spark

标签 scala apache-spark jvm avx avx512

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

最佳答案

这取决于几件事。

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

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

关于scala - 使用 Intel AVX 和 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947376/

相关文章:

events - 用于连续查询的 Cassandra(+ Spark?)的最佳方法?

apache-spark - 提交后如何退出spark-submit

java - SpringBoot sun.security.ssl.SSLSessionContextImpl 内存泄漏

java - 元空间和类加载的远足

Java 垃圾回收碎片整理

Scala - 打印数组

scala - 如何使用 Slick 的 insertOrUpdate 返回整行

scala - 将 List[String] 或 Seq[String] 传递给 Spark 中的 groupBy

Scala sortBy 参数作为序列

scala - 加特林在讲解中