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

13:30 /Зал 2 / RU / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии. / Скачать презентацию

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


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

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

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