Используйте Intel AVX со искрой

У нас есть новый кластер с процессорами Intel AVX 512. Мы провели исследование по этому вопросу безрезультатно. Мы хотели бы знать, может ли искровое задание запускаться с AVX изначально для обработки объектов DataFrames, или нам нужно изменить код, чтобы позволить JVM использовать его, или это совершенно бесполезно. Наше искровое приложение написано на scala. Большая часть нашей работы связана с обработкой объектов и алгоритмов DataFrames. Заранее спасибо за помощь


person SimbaPK    schedule 01.03.2019    source источник


Ответы (2)


Это будет зависеть от нескольких вещей.

Поддержка AVX512 была добавлена ​​в OpenJDK в JDK 9 (см. https://bugs.openjdk.java.net/browse/JDK-8076276), поэтому вам нужно будет использовать JDK 9 или более позднюю версию. Чтобы включить это явно, вам нужно будет добавить флаг командной строки -XX:UseAVX=3.

Однако то, насколько часто это будет использоваться, будет во многом зависеть от того, как работает ваш код и как JIT-компилятор может использовать векторизацию. В компании Azul (на которую я работаю) мы заменили C2 JIT в нашей Zing JVM на Falcon JIT. Он основан на проекте компилятора LLVM и может использовать векторизацию в более сложных случаях, чем обычно распознаются C2.

person Speakjava    schedule 01.03.2019
comment
Просто для протокола: Spark еще не поддерживает JDK9 или более позднюю версию. - person 10465355; 01.03.2019

Как заметил @Speakjava, в данный момент использование SIMD-инструкций в коде Spark невозможно, поскольку AVX512 был добавлен в Java 9, который еще не поддерживается Spark. Но в ближайшие годы произойдут радикальные изменения - Project Panama. Как только векторный API будет готов, такие проекты, как Spark, смогут получить от него огромную прибыль. Вы можете следить за предстоящими изменениями по JEP-338.

Если вы заинтересованы в использовании низкоуровневого API Intel для повышения производительности, обратите внимание на библиотеку Intel Data Библиотека ускорения Google Analytics. Intel заявляет, что это может повысить производительность MLlib. Имеет аналоги некоторых классов из Spark - org.apache.spark.mllib.feature.{PCA, PCAModel} -> daal_for_mllib.{PCA, PCAModel} - подробный пример здесь.

person Artem    schedule 06.03.2019