16
#j1rep Project Sumatra 久保田祐史 (@sugarlife) JavaOne報告会 2012 1

Project Sumatra - JavaOne2012報告会 #j1rep

Embed Size (px)

DESCRIPTION

JavaOne2012 報告会

Citation preview

Page 1: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

Project Sumatra久保田祐史 (@sugarlife)JavaOne報告会 2012

1

Page 2: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

自己紹介

•久保田祐史 (KUBOTA Yuji)

•@sugarlife

•難聴者

•トラブルシューター

•#glassfishjp2

Page 3: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

Project Sumatraを一言で

•AMDが牽引して進めているヘテロジニアスコンピューティング対応

3

Page 4: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

Heterogeneous Computing

•Many-CoreからGPU / APUも利用する世界へ

• GPGPU: Speed Hashing

• GPUs as an Opportunity for Offloading Garbage Collection

• 省電力、ハイパフォーマンス

•Many-CoreからGPU / APUも利用する世界へ

•超並列でちょっぱや!

•おまけに省電力!

Heterogeneous Computing?

AMD64x2 dual core 4400 with 2mb cache, Garrette, http://www.flickr.com/photos/garrette/53235940#j1rep

4

Page 5: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

使いこなすのは難しい

ninja, R'eyes, http://www.flickr.com/photos/grrphoto/152833988/#j1rep

5

Page 6: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

使いこなすのは難しい

GPU Programmer = Ninja

ninja, R'eyes, http://www.flickr.com/photos/grrphoto/152833988/#j1rep

6

Page 7: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

AMDの戦略 @AFDS2012

•HSA •CPUプログラミング並にGPUプログラミングを簡単に!

•ARMら他社ベンダと提携

•そしてNVIDIAを出し抜こう

(Heterogeneous System Architecture)

7

Page 8: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

HSAの特徴

•プログラミングモデル

•二層のコンパイラを提供

•OpenCL や C++AMPのソースから中間言語(HSAIL)を生成

•Finalizerにより各ベンダのGPUに合わせた最適化コンパイル

8

Page 9: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

HSAの特徴

•プログラミングモデル

•二層のコンパイラを提供

•OpenCL や C++AMPのソースから中間言語(HSAIL)を生成

•Finalizerにより各ベンダのGPUに合わせた最適化コンパイル

敷居がまだ高い

9

Page 10: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

Javaの世界へ•Java開発者を引き込もう

•Aparapi (A Parallel API)•独立したループ処理をOpenCL上で並列処理するAPIを提供

•HSAの上位コンパイラに相当

•2012/09にOpenJDK Projectへ

10

Page 11: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

今のAparapi// Sequentialfor(int i=0; i<in.length; i++){   out[i]=in[i]*in[i];}

// Aparapi (override Kernel as Thread idiom)

Kernel kernel = new Kernel(){   @Override public void run(){      int i = getGlobalId();      out[i]=in[i]*in[i];   }};kernel.execute(in.length);

http://code.google.com/p/aparapi/11

Page 12: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

今のAparapi

Thread thread = new Thread(new Runnable(){   @Override public void run(){      System.out.println(“Hello Thread”);   }};thread.start();thread.join();

Kernel kernel = new Kernel(){   @Override public void run(){      int i = getGlobalId();      out[i]=in[i]*in[i];   }};kernel.execute(in.length);

12

Page 13: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

これから

#j1rep13

Page 14: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

これから

#j1rep

Java Developer = GPU Programmer

14

Page 15: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

まとめ

#javaconf

新しい動きを直に見れるのは楽しい!新しい動きを直に見れるのは楽しい:)

まとめ

_DSC3218, Yuichi Sakuraba, http://www.flickr.com/photos/skrb/8149981226/#j1rep

15

Page 16: Project Sumatra - JavaOne2012報告会 #j1rep

#j1rep

ご清聴ありがとうございました

16