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



                       #j1rep
                                1
自己紹介

•久保田祐史 (KUBOTA Yuji)
•@sugarlife
•難聴者
•トラブルシューター
•#glassfishjp
                   #j1rep
                            2
Project Sumatraを一言で



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


                  #j1rep
                           3
Heterogeneous Computing?
                Heterogeneous Computing


                 • Many-CoreからGPU / APUも利
        •      Many-CoreからGPU / APUも
                用する世界へ
               利用する世界へ
                • GPGPU: Speed Hashing
                   • GPUs as an Opportunity for Offloading
            •      超並列でちょっぱや!Garbage Collection

            •おまけに省電力!
              •              省電力、ハイパフォーマンス


AMD64x2 dual core 4400 with 2mb cache, Garrette, http://www.flickr.com/photos/garrette/53235940
                                                                                                 #j1rep
                                                                                                          4
使いこなすのは難しい




ninja, R'eyes, http://www.flickr.com/photos/grrphoto/152833988/
                                                                 #j1rep
                                                                          5
使いこなすのは難しい




                             GPU Programmer = Ninja
ninja, R'eyes, http://www.flickr.com/photos/grrphoto/152833988/
                                                                 #j1rep
                                                                          6
AMDの戦略           @AFDS2012


•HSA (Heterogeneous System Architecture)

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

•ARMら他社ベンダと提携
• そしてNVIDIAを出し抜こう
                                 #j1rep
                                           7
HSAの特徴

• プログラミングモデル
• 二層のコンパイラを提供
 • OpenCL や C++AMPのソース
  から中間言語(HSAIL)を生成

 • Finalizerにより各ベンダのGPU
  に合わせた最適化コンパイル
                      #j1rep
                               8
HSAの特徴

• プログラミングモデル
• 二層のコンパイラを提供
 • OpenCL や C++AMPのソース
  から中間言語(HSAIL)を生成
     敷居がまだ高い

 • Finalizerにより各ベンダのGPU
  に合わせた最適化コンパイル
                      #j1rep
                               9
Javaの世界へ
• Java開発者を引き込もう
• Aparapi (A Parallel API)
 • 独立したループ処理をOpenCL
  上で並列処理するAPIを提供

 • HSAの上位コンパイラに相当
• 2012/09にOpenJDK Projectへ
                         #j1rep
                                  10
今のAparapi
// Sequential
for(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/        #j1rep
                                                                11
今のAparapi
Kernel kernel = new Kernel(){
   @Override public void run(){
      int i = getGlobalId();
      out[i]=in[i]*in[i];
   }
};
kernel.execute(in.length);
Thread thread = new Thread(new Runnable(){
   @Override public void run(){
      System.out.println(“Hello Thread”);
   }
};
thread.start();thread.join();
                                      #j1rep
                                               12
これから




       #j1rep
                13
これから




Java Developer = GPU Programmer
                            #j1rep
                                     14
まとめ



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

_DSC3218, Yuichi Sakuraba, http://www.flickr.com/photos/skrb/8149981226/
                                                                          #javaconf
                                                                            #j1rep
                                                                                  15
ご清聴ありがとうございました




            #j1rep
                     16

Project Sumatra - JavaOne2012報告会 #j1rep