Техники векторизации кода в JVM

День 2 /  / Зал 4  /  RU / Дичь

У каждого современного процессора присутствует «джентльменский набор» векторных инструкций (SIMD) для параллельной обработки данных: множество версий SSE и AVX на x86/x64, VIS на SPARC, NEON в ARM, AltiVec в Power. Такое многообразие не лучшим образом сказывается на удобстве использования. Существует множество нюансов в работе даже в рамках одной платформы, не говоря уже о кросс-платформенном случае. Разговор пойдёт о том, как сейчас выглядят векторные расширения процессора и на какие ухищрения приходится идти JVM, чтобы не давать им простаивать: CPU dispatching, VM intrinsic’и, автоматическая векторизация байт-кода в JIT-компиляторах. Будет упомянут и специализированный векторный API (Vector API), работы над которым активно ведутся в Project Panama.

Владимир Иванов
Oracle

Ведущий инженер Oracle, работает в группе разработки виртуальной Java-машины HotSpot. Специализируется на JIT-компиляции и поддержке альтернативных языков на платформе Java. Работает над созданием новых механизмов работы с native кодом и off-heap данными (Project Panama).

Наши контакты