>100 Views
August 14, 19
スライド概要
JVM Language Summit Feedback Tokyoでの発表資料です
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
JVM Language Summit Feedback TOKYO Vector API 2019年8⽉9⽇ 鯵坂 明 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
⾃⼰紹介 鯵坂 明 (@ajis_ka) ヤフー株式会社 Apache Hadoop committer, PMC member • Hadoopバージョンアップ + 新機能導⼊検証 • HadoopのJava11対応 (JJUG CCC 2019 Springで発表) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 2
なぜ参加したのか HadoopのJavaバージョンを上げるときに、 ⾮互換な部分を修正するのに苦戦 • こんなコードは避けたほうがいい、とい う情報があれば早めに知りたい Javaのパフォーマンス(特にGC)がつらい • パフォーマンスを向上させる取り組みに ついて最新動向を知りたい Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 3
参加するためには 申込が⼀番難しい (去年は申込失敗) • 枠が200名程度しかなくてすぐ埋まる • Twitterや公式サイトを注意深くチェック https://twitter.com/jyukutyo/status/1120243437628878848 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 4
Video https://youtube.com/java Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 5
Vector API Copyright (C) 2019 Yahoo Japan Corporation. All Rights Copyright (C) 2019 Yahoo Japan Corporation. All Reserved. Rights Reserved.
発表スライド (画像引⽤元) Vectors and Numerics on the JVM • http://cr.openjdk.java.net/~vlivanov/t alks/2019_JVMLS_Vector_Numerics.p df Vectors and other Primitives • http://cr.openjdk.java.net/~jrose/pre s/201907-Vectors.pdf Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 7
Current Status • Project Panama 配下で開発 • JEP is still candidate (JEP 338) • First version of API in CSR (Compatibility and Specification Review): https://bugs.openjdk.java.n et/browse/JDK-8223348 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 8
ベクタ演算に関する課題 • Javaにはベクタ演算⽤のライブラリが提 供されておらず、愚直に処理を書くしか ない • SIMDが適切に使われるかはJIT頼み Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 9
Vector API – Design Goals Expressive and portable API Performant Graceful performance degradation • 処理を実⾏するハードウェアのSIMDの 対応状況によって⼤きく性能が落ちる、 という状況を避ける Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 10
Design Immutable vectors • JITによる⾼速化がしやすい Length-agnostic vector views • データサイズに応じて固定⻑のvectorがいくつ必要 かユーザが計算する必要はない Strongly typed vectors • IntVector, LongVector, FloatVector, ... • ⽣のbitは⾒せない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 11
Interface/Class Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 12
Method Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 13
Java実装へのフォールバック Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 14
Vectorの構成要素 • VLENGTH (要素数) • ETYPE (element type) • ESIZE (size of ETYPE, sizeof(v) = VLENGTH * ESIZE) • VSHAPE (bit-size) VSHAPEとETYPEで残りが決まる Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 15
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 16
実装例 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 17
現状での注意点 (1) Preferred vector speciesを利⽤する • ⻑さを決め打ちすると、決め打ちしたSIMD 命令がないハードウェアではJava実装に fallbackするため性能が激減 • XxxVector.SPECIES_PREFERRED を利 ⽤すべし • "Write once, unroll (differentially) everywhere" Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 18
現状での注意点 (2) Vector APIを利⽤するコードは1つのメ ソッドの中に⼊れる • 複数のメソッドに処理が分割されている とbox elimination analysisができない ため Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 19
Box elimination analysis Boxingが性能に⼤きく影響するため、アグ レッシブにreboxする Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 20
今後の展望 Project Valhallaとの連携 • よりsystematicなbox elimination analysis • Vector<Complex>, Vector<bfloat16> などnonprimitive typeのVectorが定義できるよ うになる Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 21
イベントの感想 • JVMの深淵に触れた • Java技術者が普段触っている技術は氷⼭ の⼀⾓にすぎない • 豪華メンツが揃っているので、JVMの開 発者と喋りたい⼈には⾮常におすすめ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 22
その他 ⾯⽩かったセッション (時間調整⽤) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Copyright (C) 2019 Yahoo Japan Corporation. All Reserved. Rights Reserved. 23
TornadoVM GPU/FPGA上でJavaプログラムを動かす プロジェクト • Vectorといい感じに組み合わさると、 Javaの適⽤範囲がさらに広がりそう • 内容は難しい Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Differentiable Programming エモい系のセッション • AIの⼒でプログラマは10倍強くなる • MLで利⽤される⼆重数と⾃動微分の紹介 • Javaでも⼆重数を使いたい、Pythonを書 きたくない • かわいいイラストが多い • (Vector + Valhallaに期待...?) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
Nullness Annotation for Java Guavaなどの開発者による発表 • Null checkの解析はannotationにやらせ るべき • 現状Annotationは乱⽴ • 新しくstandardを作りたい • 意⾒募集中 ([email protected]) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.
EOP Copyright (C) 2019 Yahoo Japan Corporation. All Rights Copyright (C) 2019 Yahoo Japan Corporation. All Reserved. Rights Reserved.