Suche senden
Hochladen
もしも… Javaでヘテロジニアスコアが使えたら…
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
977 views
Yasumasa Suenaga
Folgen
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Empfohlen
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Atsushi Tadokoro
Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門
Atsushi Tadokoro
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくる
Atsushi Tadokoro
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
Hirotaka Kawata
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
Empfohlen
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Interactive Music II SuperCollider応用 JITLib - ライブコーディング 2
Atsushi Tadokoro
Interactive Music II - SuperCollider入門
Interactive Music II - SuperCollider入門
Atsushi Tadokoro
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
Interactive Music II SuperCollider入門 5 時間構造をつくる
Interactive Music II SuperCollider入門 5 時間構造をつくる
Atsushi Tadokoro
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
Hirotaka Kawata
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Atsushi Tadokoro
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Atsushi Tadokoro
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
初めてのCPUを作ってみた
初めてのCPUを作ってみた
Eric Sartre
xv6 + mist32 + mruby
xv6 + mist32 + mruby
Hirotaka Kawata
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
Ryo Sakamoto
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
From IA-32 to avx-512
From IA-32 to avx-512
MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
Nishida Kansuke
Weitere ähnliche Inhalte
Was ist angesagt?
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Hirotaka Kawata
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Atsushi Tadokoro
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
MITSUNARI Shigeo
BLS署名の実装とその応用
BLS署名の実装とその応用
MITSUNARI Shigeo
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Atsushi Tadokoro
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
MITSUNARI Shigeo
初めてのCPUを作ってみた
初めてのCPUを作ってみた
Eric Sartre
xv6 + mist32 + mruby
xv6 + mist32 + mruby
Hirotaka Kawata
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
emcjp Item 42
emcjp Item 42
MITSUNARI Shigeo
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
Shuyo Nakatani
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
Hirotaka Kawata
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
Ryo Sakamoto
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
From IA-32 to avx-512
From IA-32 to avx-512
MITSUNARI Shigeo
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
MITSUNARI Shigeo
Wavelet matrix implementation
Wavelet matrix implementation
MITSUNARI Shigeo
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Satoshi imai
Was ist angesagt?
(20)
ゼロから始める自作 CPU 入門
ゼロから始める自作 CPU 入門
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Interactive Music II SuperCollider入門 3 - 音を混ぜる(Mix)、楽器を定義(SynthDef)
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
BLS署名の実装とその応用
BLS署名の実装とその応用
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
Interactive Music II SuperCollider入門 4 - 楽器を定義、変調合成(RM, AM, FM)
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
初めてのCPUを作ってみた
初めてのCPUを作ってみた
xv6 + mist32 + mruby
xv6 + mist32 + mruby
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
emcjp Item 42
emcjp Item 42
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
明日使える超高速Ruby - RXbyak (Mitaka.rb #5)
本当にわかる Spectre と Meltdown
本当にわかる Spectre と Meltdown
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
From IA-32 to avx-512
From IA-32 to avx-512
WASM(WebAssembly)入門 ペアリング演算やってみた
WASM(WebAssembly)入門 ペアリング演算やってみた
Wavelet matrix implementation
Wavelet matrix implementation
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
Ähnlich wie もしも… Javaでヘテロジニアスコアが使えたら…
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
Nishida Kansuke
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Yasuhiro Yoshimura
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
MITSUNARI Shigeo
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
Yoshifumi Yamaguchi
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
sandai
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
Ken'ichi Sakiyama
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
OpenStack + Common Lisp
OpenStack + Common Lisp
irix_jp
Clojure
Clojure
Uehara Junji
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
Ähnlich wie もしも… Javaでヘテロジニアスコアが使えたら…
(20)
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
Programming camp 2008, Codereading
Programming camp 2008, Codereading
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
【学習メモ#4th】12ステップで作る組込みOS自作入門
【学習メモ#4th】12ステップで作る組込みOS自作入門
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
OpenStack + Common Lisp
OpenStack + Common Lisp
Clojure
Clojure
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
らくちん Go言語
らくちん Go言語
Mehr von Yasumasa Suenaga
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Yasumasa Suenaga
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
Yasumasa Suenaga
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Yasumasa Suenaga
HotSpotコトハジメ
HotSpotコトハジメ
Yasumasa Suenaga
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
Metaspace
Metaspace
Yasumasa Suenaga
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
Serviceability Toolsの裏側
Serviceability Toolsの裏側
Yasumasa Suenaga
Mehr von Yasumasa Suenaga
(9)
JDK付属ツールにパッチを出しまくったワケ
JDK付属ツールにパッチを出しまくったワケ
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
Java 9で進化する診断ツール
Java 9で進化する診断ツール
HotSpotコトハジメ
HotSpotコトハジメ
Heap statsfx analyzer
Heap statsfx analyzer
Metaspace
Metaspace
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
HeapStatsのデモ (Java The Night)
HeapStatsのデモ (Java The Night)
Serviceability Toolsの裏側
Serviceability Toolsの裏側
もしも… Javaでヘテロジニアスコアが使えたら…
1.
もしも… Javaでヘテロジニアスコア が 使えたら… 2011/11/09 末永 恭正( @YaSuenag
)
2.
自己紹介 すえなが やすまさ •
末永 恭正 ( @YaSuenag ) • NTT OSSセンタ勤務 – Javaの障害解析なんかやってます – たま~にOpenJDKのパッチ書いてます • 主にJavaとlibcの間を漂う人間 • 基本、サンデープログラマー – ObjectPascal(Delphi)大好き – アセンブラも結構好き
3.
Sumatra の ゴール
4.
Sumatraのゴール http://openjdk.java.net/projects/sumatra/
第一目標: GPU・APUでパワーアッ プ! • GPU上で動作するコードの生成 • ランタイムサポート Lambda APIサポート など • GCのGPU上での実行
5.
sumatra-dev@openjdk.java.net ※ 2012/11/09現在
6.
とっても単純な解 Xeon Phiに対応する
http://newsroom.intel.com/docs/DOC-2851 • Pentiumから派生したコアを搭載 • 移植性が高い – Linuxが動作するらしい – GCCやGDBが用意されているらしい
7.
でも… AMD & Oracleだから http://www.amd.com/us/press-releases/Pages/amd-oracle-openjdk-2012oct1.aspx
• OpenCLベースでやるそうです – 特定のハードウェアに依存させないみたいで す
8.
妄想してみる ~ コード生成 編
~
9.
コード生成 • JITへの適用 –
スタブの用意 • 配列のcopyやfillがこのパターン • ヘテロジニアスコアで実行可能なものにする – ループunrollの適用範囲が広がる?
10.
例えば… 配列内の価格をすべて一定額値引きしてみるメソッド
※イメージです public void discountPrices(int discount){ int[] prices = this.getPrices(); for(int idx = 0; idx < prices.length; idx++){ prices[idx] -= discount; } movq xmm0, discount this.setPrices(prices); pshufd xmm1, xmm0, 0 movq xmm0, discount xor } ecx, ecx pshufd xmm1, xmm0, 0 movq xmm0, discount movdqu xmm0, [prices] 0 pshufd xmm1, xmm0, LOOP_BEGIN: ループ展開 movq xmm0, discount movdqu xmm0, [prices + ecx] psubd xmm0, xmm1 psubd xmm0, xmm1 & movdqu [prices], xmm0 + 16] movdqu xmm0, [prices 0 pshufd xmm1, xmm0, psubd xmm0, xmm1 movdqu [prices + ecx], 並列計算! movdqu xmm0, [prices + 32] xmm0 movdqu [prices + 16], xmm0 add ecx, 16 psubd xmm0, xmm1 cmp ecx, max_idx movdqu [prices + 32], xmm0 jl LOOP_BEGIN
11.
妄想してみる ~ ランタイム 編
~
12.
ランタイムサポート • API
– ForkJoinTaskの継承? – 専用のスレッドプール? • 暗黙的な利用 – ソート、線形探索、ハッシュ計算、etc… • JNI? • スタブ? – Lambda • Streams#parallel()(の先)を拡張?
13.
懸念 1. カーネルのコンパイルはどうするよ? –
Offline Binary Kernel Generationなるものがあるら しい • http://developer.amd.com/Resources/documentation/Know ledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=115 • 動的な機械語生成の部分にこのエッセンスを組み込 む? 2. そもそも、フクザツな処理はできないので は? – Ideal Graph構築時ならなんとかなる?
14.
15.
妄想してみる ~ GC
編 ~
16.
GC
• これが一番厄介だと予想 • メモリ転送、どうするよ!? http://www.nvidia.co.jp/object/product-quadro-6000-jp.html
17.
GC
Worker Worker Worker ・・・ #1 #2 #n Javaヒープ 1. デバイスメモリ以上のヒープサイズではどう する? – JVM初期化時にOpenCLを利用できそうか判断する? – G1みたいに、リージョン単位で制御できればOK? 2. そもそも、メモリ転送コストは? – CPUのみで処理した方が速いケースもある?
18.
MAKE THE FUTURE
JAVA with Heterogeneous Multi-Core http://ms.toyota.co.jp/jp/wec/racereport/fuji_photo.html
Jetzt herunterladen