SlideShare ist ein Scribd-Unternehmen logo
1 von 115
Downloaden Sie, um offline zu lesen
GPUコンピューティングの現状と
スーパーコンピューティングの未来

      村主崇行




                    1
自己紹介
• 京都大学 物理学第二教室 天体核研究室
• 専門は宇宙物理学
  「地球より大きいもの全てが対象」

• しかし、宇宙の現象は直接実験ができないの
  で、シミュレーションの利用がさかんです
• ひょんなことからGPGPUの存在を知ったので
  最近勉強しています
                           2
宇宙物理学のシミュレーションテーマ


                        ニュートン重力   一般相対性理論
             磁気流体力学                (時空・座標)
   流体力学
              (プラズマ)
  (気体・液体)




                            高温・高密度物質・
                            素粒子論etc ・・・
   輻射輸送
            運動論(荷電粒子の
(光の放出・反射・
            加速やビームなど)
  吸収・伝搬)
                                             3
宇宙の研究とぼくらの生活
                                   一般相対性理論
                                    (時空・座標)
                         磁気流体力学
  流体力学
                          (プラズマ)
 (気体・液体)


                               重力は時間を、空間を曲げる
                プラズマが吹き荒れる宇宙!
                  太陽風・宇宙天気は         「どんなにゆがんだ
                  人工衛星の死活問題         座標でも怖くない」
                          人工衛星の時計は
                          地上より速く進む!




           核融合も実用化?!                乗り物の設計・気流
                                    シミュレーション
気象&海洋シミュレーション
            一般相対論を使わないと・・・
            GPSは1日20kmも狂っていく                   4
おことわり
• 宇宙物理学には特にGPUに向いている課題が
  結構あるので、僕はけっこう楽観的です。
    そうでない人が聞いたら鼻につくことをお詫びしますm(_ _)m
     • 他の分野の事情もぜひ知りたいのです
        私の誤解・無理解も多いと思いますので
     • 宇宙物理学にもGPU的なものに適さない課題はいっ
       ぱいあるので、ぜひ「GPUの次」をいっしょに考えたい
       と思っています
•       しか勉強してません。     関係の
    人ごめんなさい。    にも期待してます!
•   本日お話する内容は私の知識の範囲内での私的所感でして、PFI、京都大学その他
    組織の公的意見とは関係ございません


                                             5
もくじ
1. GPGPUとは?なぜGPUを使うのか
2. ハードウェア
      演算機としてのGPU
      HPC部品としてのGPU
      GPUコンピュータを作ろう
3.   GPUプログラミング言語と開発環境
4.   GPUプログラミングの勉強のしかた
5.   GPUコンピューティングの現状
6.   GPUでペタコンを作ったら?
7.   GPU(メニイコア)の将来、GPUの次
                           6
1.GPUとは?


           7
と       の違い
 GPUはコア(計算する人)の数が多い!
周波数(ひとりの計算する速度)は1/3程度




4コア+hyper-threading   480コア
(SSEを使うと16コア)
                              8
The difference between    and          .




米国Roadrunner               長崎大学
                         DEGIMAクラスタ
  1億3300ドル        予算       3800万円
  1,457Tflop/s   ピーク性能    700Tflop/s

                 安い!                       9
GPUとは?なぜGPUを使うのか?
    =>安価な超メニーコア計算機
• GPU(Graphics Processing Unit)とは
  • もともとコンピュータグラフィック(CG)描画専用の装置
  • CG技術の発展にともない、GPUの仕事が多様化。
    2006年後半から汎用GPU(GPGPU)へと進化
  • 並列演算性能が高い
    • 500個程度の演算ユニット
  • 非常に安価
    • パソコンの部品として量産されているため。
    • 1T flops ~ 3万円程度 (Crayの相場は600万円/TFlops)
    • 価格性能は一般的なスパコンに比べ100倍ぐらい良い
GPUコンピューティングが現実的に
                                                10
「GPUって240コアとかあるらしいよね」
「プログラムを240並列にするのって大変じゃないの?」



2-1.演算機としてのGPU


                              11
GPUとCPUを比べる(例)
                Core 2 Quad Q9550   NVIDIA 295GTX
  演算器                 4 (16)               480
 演算性能              90.56Gflops         1788Gflops
 Parts Price          $219                $499
Machine Price   $900; 100Mflops/$   $1400; 1.3Gflops/$
   Power        400W;230Mflops/W    700W;2.6Gflops/W
flops = 一秒間に実数の四則計算を1回行える性能
• GPU は 1台あたりCPU の10 倍,20倍速い
• 設備投資・消費電力あたりの計算能力も~10倍
• アプリケーションによっては100倍以上高速化したとの報告も多数
                                12


• 性能だけでみるとそこまで差はないように見えるが
• 計算チップとしての設計思想がある点で決定的に違っている
ダイイメージ
• Streaming Processor
  (SP)がint/floatの演算
  をおこなうユニット
• Streaming Processor
  ×8 = Streaming
  Multiprocessor (SM)
• SM内のSPは常に同じ
  命令を実行

• SP×8 = SM
• SM×3 = TPC
• TPC×10 = G200

• 240コアというより
 30コア×8要素SIMD
                  13
アーキテクチャ模式図
       命令キャッシュ            • 1SPが1スレッドを担当
     ワープスケジューラ
                          • 命令は4クロックに一度
      命令発行ユニット
 レジスタ 4096本×4バイト          • 16スレッドが半ワープ
SP      SP    倍精度ユニット     • メモリアクセスは半ワー
              倍精度ユニット       プごとにまとめられる
SP      SP
              特殊関数ユニット    • 32スレッドが1ワープ
SP      SP
              特殊関数ユニット
                          • 同じ命令を実行
SP      SP     ロード・ストア

     Shared Memory 16KB


                                       14
演算機構造           論理構造            メモリ構造
                                  ----RWともに速い----

                                     レジスタ
                                4096本×4バイト×30
                                  Shared Memory
                                    16KB ×30
                               ----Rはキャッシュ/Wは遅い----

                               Const Memory 64KB
                                Texture Memory ~GB
                                  ----RWともに遅い----

                               Global Memory ~GB
      ×30                        ----PCI Expressの壁----

                                  Host Memory
スレッドブロックグリッド
SMはいくつかのブロックを並列に実行、ブロックの実行順は未定義
同一ブロック内ではShared Memoryを介した通信が可能
ブロック間の通信手段はGlobal Memoryのみ
Const Memoryはホストからのみ書き換え可
Texture MemoryはデバイスからもW可能だがキャッシュに反映されない
スレッド数は32の倍数、ブロック数は30の倍数がよい                               15
決定的に違う設計思想
         Neharem     G200       Fermi
                   (GTX285)   (2010Q1予定)
 ベクトル長     4          8          32
  コア数      4         30          16
 レジスタ数   40?×4     4096×30 4096×16?
 スレッド数    2×4      1024×30        ?
GPUの設計:レジスタが圧倒的に多い
レジスタを退避させることなく膨大な数のスレッドを駆動
様々なレイテンシを隠蔽
                                        16
最適化に対するCPUとGPUの回答
• メモリが遅いキャッシュヒエ
  ラルキーをつくって、小さい    • 一方GPUでは
  キャッシュにうまいこと当てる
• ただの四則演算が終わるまで
                     スレッドをたくさ
  にも、数クロックが浪費されて
  しまうパイプラインをつかい
                     ん立てた
  結果をまたずに命令を投入
• 分岐してる時間がもたいない
  分岐する方向をあらかじめ
  予測してそっちの計算を進め
  ておく投機的実行
• スカラーの限界がみえてきた
  んでマルチコアにしてみた
• SIMDユニットも積んでみた



                                17
• 「GPUって240コアとかあるらしいよね」
それどころか、3万並列くらいまで捌けます

• 「プログラムを並列にするのって大変じゃない
  の?」
大変ですが、逆にとにかく並列化するだけで
 性能が出るので、そういうアプリケーションな
 ら性能が出しやすいです

                          18
「演算ユニットだけが速くてもねえ」
「GPUへのデータの転送がボトルネックなんでしょ?」



2-2.HPCハードウェアとしてのGPU


                             19
計算機全体としての性能は?
          多くの場合通信性能がボトルネック
                                典型的パソコンの模式図
    1000BASE-T




                                                                      ホストメモリ
     0.125GB/s

                                                         DDR3 1600
                                                          12.8GB/s
     CPU演算:
90.56GFlops=362GB/s    CPU                                           12GB
                       計算を
L2キャッシュ⇔CPU             行う                          マザーボード
  転送: 150GB/s         キャッシュ                         コンピュータの
                                                      基盤
                      0.012GB
                                                         CPUプログラムからGPU
                                                         ライブラリを呼ぶ等の
     GPU演算:                                              場合で、ホストメモリか
                           GPU      PCI Express 2.0x16
1788GFlops=7152GB/s                                      らの転送がボトルネッ
                                          8GB/s
 デバイスメモリ⇔GPU            計算を行う
                      ■■■■■■■■                           クになってしまうとせっ
   転送: 223.8GB/s        デバイスメモリ                          かくのGPUの性能が生
                          2GB                            かせない!!
                                                                               20
「GPUクラスタ」とCPUクラスタを比べる
                  CPU演算:                               GPU演算:
計算速度     CPU     90.56GFlops                      1788GFlops=7152GB/s
                  =362GB/s
         キャッシュ
                                              GPU               GPU
 主記憶         DDR3 1600          GDDR3      ■■■■■■■■        ■■■■■■■■
転送速度          12.8GB/s         223.8GB/s     デバイスメモリ         デバイスメモリ

                                                    2GB

主記憶      ホストメモリ
 容量                  12GB




「ノード」間         1000BASE-T           PCI Express 2.0x16
通信速度            0.125GB/s                 8GB/s

全面的にGPU計算に移行すれば、秋葉原で
買える部品で1~2桁上の性能が手に入る。
                                                                        21
「パソコン内蔵型」GPUクラスタ
                             ディスク

       主電源



               CPU           副電源
                       メモリ

        GPU0         GPU1
        GPU2         GPU3
        GPU4         GPU5
        GPU6         GPU7           温度計



¥383,806                                  22
「パソコン内蔵型」GPUクラスタ

                               1台で単精度7.1TFlop/s
                               の性能、40万円

                               パソコンを100台ならべて
                               Infinibandでつないだ程度




    Cray 600万/TFlops
                        1.6TFlop/s 1億円→
                         ※通信性能が高い
                                                   23
• 「GPUへのデータの転送がボトルネックなんで
  しょ?」
• 「これからはGPUのようなアクセラレータを積んだ
  HPCが主流となる」

 GPUをアクセラレータ(演算機)だと思うと転送が
  ボトルネックで応用は限られる。GPUはそれ自身
  計算機(演算機+主記憶+通信)だと思ったほう
  がいいかも?
 データはホストメモリではなくなるべくグラフィック
  メモリに置くことがGPUコンピュータでは常識
                             24
「さきほどのマシンの作り方を説明します」

2-3.GPUコンピューターを作ろう


                       25
GPUコンピュータを手に入れよう
• まあ、自作できる人なら余裕
• 残念ながら歩留まり向上のため、市販のGPU
  にはグラフィック表示には問題なくても全演算
  機を動かすとたまに計算を間違えるものや落
  ちるものが含まれている。メーカーによっては
  この場合でも返品や、交換に応じてくれる。
• 長崎大学ではGPUを多めに購入して自前でスクリーニン
  グプログラムを開発している(このへんも安さの秘密)。そ
  のうちスクリーニングプログラムが公開されたり、GPU計
  算用チェック済みGPUが売られるようになるのでは。
                                26
材料
ケース
フルオープン   .


変形!!
二連装電源、最大2250Wを供給
主電源
EGX1250EWT

1250W
                副電源
                SF-1000R14HE

   400W         1000W
ケースから分離した基盤上で組立て
   ぶっちゃけこの部品だけ売って欲しい
マザーボード          • GPUとの通信を司るチップを
                    2枚搭載、通常の2倍の速
「SuperComputer」     度で通信
                  • 規格上7つある汎用スロット
                    枠が全部大型GPU用
                  • 旧式のディスクやキーボー
                    ドはバッサリ非対応
                  • Ultimate Supercomputing
                    Solution for CUDA Parallel
                    Programming (メーカー)
GPU
搭載
4枚目のGPUが色々ふさいでいる
このままでは電源を入れられない \(^o^)/ オワタ




 USBとか               ハードディスク
         電源/リセット信号
こんなこともあろうかと・・・!




            電源/リセット信号線
              延長ユニット
              (標準付属)
こいつ・・・動くぞ!!
GPU選び
赤いGPU     AMD メーカー NVIDIA 緑のGPU
  RADEON R5870 GPU GeForce GTX 295




                                     39
重要なのは・・・
      AMD          メーカー          NVIDIA

  RADEON R5870     最高級GPU    GeForce GTX 295
2700GFlops (単精度)   演算速度     1788GFlops (単精度)
 544GFlops (倍精度)            149GFlops (倍精度)
    153.6GB/s      転送速度         223.8GB/s
  ATI Stream SDK   開発環境          CUDA C
     Brook+        コンパイラ          nvcc


                                  開発環境、
                               だと私は思います
                                               40
ハードウェア選び
• http://en.wikipedia.org/wiki/Comparison_of_
  Nvidia_graphics_processing_units が充実
• AMD版もあります。
• おすすめの NVIDIA GPU
          GeForce GTX 285   GeForce GTX 295   Fermi (予定)
          2GBモデル
 演算速度     1063GFlops        2x 894GFlops      1500GFlops?

 デバイスメ    2048MB            2x 896MB          6GB?
 モリ容量
 転送速度     159.0 GB/s        2x 111.9 GB/s     ?

 市価(万円)   4.5 ~ 5.5         5~6               15-20?
                                                            41
3.NVIDIAのGPUプログラミング言語、
CUDA C

                         42
CUDA --- NVIDIAのGPU向け開発環境
• CUDA C : ほぼC++互換の言語。GPU上でクラス
  も演算子オーバーロードもテンプレートも使える
• ptx : GPU上の機械語に近い中間言語
• nvcc : CUDA Cのコンパイラ。
• cuda-gdb : Linux向けGPUデバッガ。
  • 実行中のGPUプログラムを止めてデバッグできる
• thrust : CUDA版STL
  • サードパーティ製, Apache License 2.0
• FFTやBLAS、その他多数のライブラリも
                                   43
例)C++で自然数1..500の平方根を求
        めるプログラム
const int N = 500;

void calculate(float* x,float* y){
  for (int i = 0; i < N; ++i) {
    y[i] = sqrt(x[i]);
  }
}
                                     • これをCUDAで書き
int main () {
  vector<float> x(N), y(N);            なおしてみる
  for (int i = 0; i < N; ++i) {
    x[i] = i+1;
  }
  calculate(&x[0], &y[0]);
  for (int i = 0; i < N; ++i) {
    cout << y[i] << endl;
  }
}



                                                    44
例)自然数1..500の平方根を求めるプ
    ログラム,CUDA C版
#include <iostream>
#include <thrust/thrust_vector.h>

__global__ void calculate(float* x, float* y) {
  int i = threadIdx.x;
  y[i] = sqrt(x[i]);
}                                     thrust_vectorはthrustを軽く
                                        ラップする独自のライブラリで
int main () {                           す(nHDに入ってます)。完全な
  const int N = 500;
  thrust_vector<float> x(N), y(N);
                                        コードは2ページ後の黒背景
  for (int i = 0; i < 500; ++i) {       の部分を参照してください。
    x[i] = i+1;
  }
  calculate <<<1,N>>> (x.ptr(), y.ptr());
  for (int i = 0; i < 500; ++i) {
    cout << y[i] << endl;
  }
}



                                                                 45
1..500の平方根を求めるプログラム,比較
            C++                                  CUDA
const int N = 500;                   const int N = 500;

void calculate(float* x,float* y){   __global__ void calculate(float* x,
  for (int i = 0; i < N; ++i) {                               float* y) {
    y[i] = sqrt(x[i]);                 int i = threadIdx.x;
  }                                    y[i] = sqrt(x[i]);
}                                    }

int main () {                        int main () {
  vector<float> x(N), y(N);            thrust_vector<float> x(N), y(N);
  for (int i = 0; i < N; ++i) {        for (int i = 0; i < N; ++i) {
    x[i] = i+1;                          x[i] = i+1;
  }                                    }
  calculate(&x[0], &y[0]);             calculate <<<1,N>>>
  for (int i = 0; i < N; ++i) {          (x.ptr(), y.ptr());
    cout << y[i] << endl;              for (int i = 0; i < N; ++i) {
  }                                      cout << y[i] << endl;
}                                      }
                                     }

  CUDAではループのかわりに、カーネル関数を並列的に実行
  スレッドごとにthreadIdxというのが受け取れる(MPIっぽい)                                      46
実行してみる
thrust> cat thrust_vector.cu                           ys = dev_ys;
#include <thrust/device_vector.h>                       for (int i = 0 ; i < N; ++i) {
#include <thrust/host_vector.h>                           cout << "sqrt " << xs[i] << " is " << ys[i] <<
#include <iostream>                                        endl;
using namespace std;                                    }
                                                      }
const int N = 500;
                                                      thrust> nvcc thrust_vector.cu
__global__                                            thrust> ./a.out
void calculate (float *px, float *py) {               sqrt 0 is 0
  int tid = threadIdx.x;                              sqrt 1 is 1
  float x = px[tid];                                  sqrt 2 is 1.41421
  float y = sqrtf(x);                                 sqrt 3 is 1.73205
  py[tid] = y;                                        sqrt 4 is 2
}                                                     sqrt 5 is 2.23607
                                                      sqrt 6 is 2.44949
int main () {                                         sqrt 7 is 2.64575
  thrust::host_vector<float> xs(N),ys(N);             sqrt 8 is 2.82843
  thrust::device_vector<float> dev_xs(N),dev_ys(N);   sqrt 9 is 3
  for (int i = 0 ; i < N; ++i) {                      sqrt 10 is 3.16228
    xs[i] = i;                                        ・・・・・
  }                                                   thrust>
  dev_xs = xs;
  calculate <<< 1 , N >>>
     (thrust::raw_pointer_cast(&*dev_xs.begin()),
     thrust::raw_pointer_cast(&*dev_ys.begin()));
                                                                                                           47
ptxを生成しGPU機械語に迫る
thrust> nvcc thrust_vector.cu --ptx       ・・・  .entry _Z9calculatePfS_ (
thrust> less thrust_vector.ptx                        .param .u32 __cudaparm__Z9calculatePfS__px,
                                                       .param .u32
                                               __cudaparm__Z9calculatePfS__py)
                                               {
                                               .reg .u16 %rh<3>;
thrust> less thrust_vector.cu                  .reg .u32 %r<8>;
・・・                                            .reg .f32 %f<4>;
__global__                                     .loc    26            8             0
                                          $LBB1__Z9calculatePfS_:
void calculate (float *px, float *py) {
                                               .loc    26            10            0
  int tid = threadIdx.x;//A
                                               cvt.s32.u16           %r1, %tid.x; //A
  float x = px[tid]; //B
                                               cvt.u16.u32           %rh1, %r1;     //A
  float y = sqrtf(x); //C                      mul.wide.u16          %r2, %rh1, 4; //r2 = 4*tid.x
  py[tid] = y; //D                             ld.param.u32          %r3,
}                                              [__cudaparm__Z9calculatePfS__px]; //B
・・・                                            add.u32 %r4, %r3, %r2;               //B
                                               ld.global.f32         %f1, [%r4+0]; //B
                                               .loc    26            12            0
                                               sqrt.approx.f32       %f2, %f1; //C
                                               ld.param.u32          %r5,
                                               [__cudaparm__Z9calculatePfS__py]; //D
                                               add.u32 %r6, %r5, %r2;               //D
                                               st.global.f32         [%r6+0], %f2; //D
                                               .loc    26            13            0
                                               exit;
                                          $LDWend__Z9calculatePfS_:
                                               } // _Z9calculatePfS_    ・・・

                                                                                                    48
CUDA Cの利点
• C(C++)を知っていれば覚えることはわずか
 • GPU上で並列に実行したい関数(カーネル)には
   __global__などの印をつける
 • そして関数名<<<ブロック数,スレッド数>>>(引数,
   引数,…) でカーネル呼び出し
• C++言語の強力な機能がGPU上で使える。第3
  者がthrustなるSTLを作れるのが何よりの証拠。
 • テンプレート魔術によりホスト⇔デバイスの自動転送
   はむろん、GPUの最適なスレッド数を調べてアルゴリ
   ズムを並列実行します
• 機械語も見れて中を覗かないと落ち着かない変
  態ハッカーも安心
                                 49
4.CUDAの勉強



            50
CUDAでGPUプログラミングを勉強する
• GPUコンピュータを用意
• CUDA ZONE からCUDA3点セットをダウンロードしてイ
  ンストール
• gpgpu.org や CUDA ZONE をみて最新の成果を確認
• わからないことはNVIDIA Forum で検索&質問
• thrust (データ管理), CUFFT(), CUDPP(ソート等)
• google-testでテストしながらコードを成長させる
• google code で自分のコードのサイトを作って公開
• gpgpu.org や CUDA ZONEに投稿!


                                         51
CUDAドライバ、CUDAツールキット(コンパイラ)、SDK(サ
ンプル集)をダウンロード。ドキュメントやデバッガ、プロ
          ファイラもあります。
 http://www.nvidia.com/object/cuda_get.html
  日本語版は周回遅れなのでUSA版にGO!!




                                              52
ドキュメント
CUDA Programming Guide
 CUDAの説明が書いてあるからまず必ず読むべき
CUDA Best Practices Guide
 最適化に重要なことが書いてあるからぜひ読むべき
CUDA Reference Manual
 APIのリファレンスなので印刷して手元に
CUDA GDB User Manual
 すごいデバッガなのでぜひ使うべき
CUDA PTX ISA document
 GPU機械語解読の手掛かり、マニアになりたい方に
 http://www.nvidia.com/object/tesla_software.html

                                                    53
GPUをつかった成果をユーザーが投稿し、査読を通る
と紹介されます。何倍速くなったかが載っている。講義
        の動画などもあるよ。
 http://www.nvidia.com/object/cuda_home.html#




                                                54
GPGPUにまつわるニュースサイト
 http://gpgpu.org/




                     55
CUDAに関する質問ができる。英語版のほうが
 充実はしている。日本語版も十分親切です。
 http://forum.nvidia.co.jp/




                              56
自分のGPUコードを作って公開しよう!
  http://code.google.com/p/astro-attic/wiki/NHDIntroduction




                                                              57
GPUって使えるの?

5.GPUコンピューティングの現状


                    58
使える。
    使われている。速くなっている!



 コンピューター視覚     量子化学      たんぱく質     金融市場の予測
             シミュレーション   シミュレーション




雷のシミュレーション   疎行列の積      ロボット手術     遺伝子解析


                                             59
• 宇宙物理学でも・・・
• N体計算(Hamada&Nitadori, Gordon Bell Prize!)
• 流体
  •   Adaptive Mesh流体 (台湾国立大学)
  •   磁気流体(マカオ、北京)
  •   Godunov Method (京大)
  •   最近GPU+AMR+MHDが出た(Peng Wang, Tom Abel)
• データ解析
  など

                                              60
arXiv:0907.3390 台湾大学




                       61
arXiv:0908.4362




62
Peng Wang(Tom Abelの弟子) Stanford Univ. 博士論文


abstract




GPUAMR
 MHD
複数のコンピュータが
協力して数値計算する
                             nHD           (by 村主)
    こと                                           衝撃波のない所では、
                                                  精度を上げてシミュ
                       解析解をあてはめて、
                                                   レートする手法
                        衝撃波をきちんとシ
                       ミュレートできる手法

• MPI GPU Full Godunov 2nd order MUSCL 3次元
  一様メッシュ Euler方程式ソルバー
  AMRとかはとくになし                      圧縮性流体の基礎方程式、粘性なし


 • GPUが複数装備されたマシンを複数台連結したクラスタ上
   で流体計算が実行できます
 • Full Godunovなので、強い衝撃波、真空、何でも来いです
 • テスト駆動開発なのでさまざまなテストが済んでいます
 • BSDライセンスで公開開発中:
    http://code.google.com/p/astro-attic/wiki/NHDIntroduction
                                                                64
計算速度
           あのパソコン1台で 
       CPU                              GPU
ハード    Core i7 920, シングルスレッド            GTX 295 , 1チップ,通信なし
問題設定           128 x 128 x 128, 斜め衝撃波問題, 0.12 sound crossing time
所要時間   8分 46.887 秒                      7.509 秒
速度比
       1                                70
ハード    Core i7 920, シングルスレッド             GTX 295 , 4チップMPI
問題設定            128 x 128 x 512, Blast 問題, 1.6 sound crossing time (長辺)
所要時間   1日 2時間 39分 46秒                   9分 13.437 秒
速度比
       1                                173
       PRELIMINARY (CPU/GPUいずれも未最適化コードです)
                                                                          65
GPUスパコンで
今世界の最先
端を走っている
   国は?
日本最強のスパコン
    • 10PFlop/s
    • 1230億円




    • のはずだったが・・・


                   68
日本のGPUスパコン
                           158TFlop/s
                         Gordon Bell Prize
                            Awarded!




東工大TSUBAME                  長崎大学DEGIMA        名古屋大学

1億2000万(GPU代)      予算            3800万円       1億7000万円

56Tflop/s(GPU部)   ピーク性能          700Tflop/s    建設中
                                 (単精度)         ???
     ??           消費電力            150kW        ???
                                                         70
京速 v.s. Cray v.s. GPU




計算力    10PFlop/s      ~1PFlop/s      158TFlop/s
価格
       1230億円             ???        3800万円
C/P   1230万円/TFlops   600万円/TFlops   24万円/TFlops

計算
対象       汎用              汎用           未知数
                                                   71
「真珠湾攻撃」
• 濱田・横田・似鳥さんはTree-N体コード(並列化
  は困難)を190ノード760GPUで動かし、SCに出発
  する直前に10倍の高速化に成功
• 長崎大学のGPUクラスタは今年度のSCでゴード
  ンベル賞が受賞確実視されていた。それを受け
  ての濱田氏の言葉(その後受賞)
• 今年の受賞により日本はGPUスパコンの有効性
  を世界に示すことになるだろう。だがこのままで
  は米国の国力に敗北する。
• 現在米国・中国で30PFlops級のGPUスパコンが
  計画中
このままでいいのか
• GPU・メニイコアは一過性のブームではない。なぜ
  なら1コアの速度は電磁気・量子論的限界に近づ
  いているので、コアをこれ以上速くできない。とな
  ればコアをたくさん並べるしかない
• 遅かれ早かれ、高性能並列計算機はGPU型、さら
  にはGPUの進化したメニイコア計算機が占める
• 昔のものを使いつづけたい気持ちはわかるしそう
  できれば科学に集中できて一番良い
• のだが最先端のコンピュータはどんどん変わって
  いくのでそうもいかない
6.GPUでペタコンを作ったら?


                   74
GPUペタコンを本気で考えてみる
• とある宇宙物理学の学会で出た「ペタコンで挑み
  たい未解決問題」
 • Vlasov方程式を解くために500TBくらいメモリが欲しい
 • 分子雲乱流から1stコア形成までを一様メッシュで分
   解するためには10000^3 の流体計算(40TB)がしたい
 • 計算実行中に可視化まですませたい
• この要求を真に受けてGPUスパコンを設計して
  みる
• 真剣なので楽観的予測はなし、あくまで現在もし
  くは将来確実に手に入る部品のみ。ムーアの法則
 等、低コスト化の効果は使わない
定量的通信性能比較再訪
                  CPU演算:                               GPU演算:
計算速度     CPU     90.56GFlops                      1788GFlops=7152GB/s
                  =362GB/s
         キャッシュ
                                              GPU               GPU
 主記憶         DDR3 1600          GDDR3      ■■■■■■■■        ■■■■■■■■
転送速度          12.8GB/s         223.8GB/s     デバイスメモリ         デバイスメモリ

                                                    2GB

主記憶      ホストメモリ
 容量                  12GB




「ノード」間         1000BASE-T           PCI Express 2.0x16
通信速度            0.125GB/s                 8GB/s


 GPUノードを複数並べようと思ったら通信が
 PCIExpressなみ必要。GBeでは苦労する。
                                                                        76
高速ネットワーク
• Infiniband SDR…10Gb/s QDR … 40Gb/s (定番)
  • 36ポートQDRのスイッチが200万円、カード15万円
• Myrinet 20Gb/s (リーズナブル)
  • 32ポートのスイッチが40万円、カード6万円
  • 32ポートスイッチを使って3次元トーラスを作る。12ポート
    をスイッチ間通信に使い、20ポートにノードをぶら下げる
• ノードはFermi3枚、NIC(Network Interface Card)1枚
  • 第2世代GPUの方が安価でいて今CudaZoneにあるような
    研究はすべて可能なのだが、より多くの人が使えるように
    (Fortran,C++も動く?)高価なFermiで悲観的見積もり
                         x+1

                         y+1
                         x+1


                         z+1
                         y+1

                         z+1
                                    計算ノード


                  スイッチ
                         x-1

                         y-1
                         x-1


                         z-1
                         y-1

                         z-1
新生ペタコン計画試算
              構成            20×8×8×4       20×8×8×16
                             (5120ノード)      (20480ノード)
部品            ノードあたり価格       10Pに必要な費用 Vlasovに必要な費          現行
              (万円)           (万円)      用(万円)
Myrinet 32       40/20ノード          10240
ポートスイッチ
Myrinet NIC             6          30720
Fermi GPU            15x3         230400
メモリ24G                  9          46080
マザーボード、                11          56320
CPU、電源
設備費用合計
                      73      37億3760        149億5040       +700億
倍精度性能         0.768TFlops 11.796PFlops       47.186PFlops   10PFlops
                       x3                                         ??
消費電力           0.3Gflops/W        3.538MW        14.152MW  36億円/yr
                 10円/kWh        3.09億円/yr      12.36億円/yr 下がる予定
現状の流体コードを(弱く)スケール
   させることができたら・・・?
• (9*60+13)*(1.788/2)/0.768*
  10000**4/(128*128*512*512*1.6) * (4.0/(3*5120)) /
  86400
=> 2.82342736296417(day/sound crossing)
• 10000**3/(5120*3.0) * 40 / 1e9
=> 2.60416666666667(GB/Fermi)
• (10000**3/(5120*3.0))**(1.0/3.0)
=> 402.287243585679(Mesh/Fermi)

• 12Pプランでは10000^4 の 流体計算が、sound
  crossing timeあたり3日で解ける。
• 47Pプランなら0.7日でsound crossing
• 解像度を2倍妥協すればこの16倍速くなります
見積もりの妥当性
• 今のコードはGPUあたり128^3メッシュで解いているが、
  見積もりは約402^3になる。表面積に対する体積が大
  きいほど通信が楽になるセンス妥当
• 今のコードは流体データがデバイスメモリにあることに
  速度を依存恐るべきことに10000^3の流体が
  Fermiなら全部デバイスメモリに載ってしまう。妥当
• スパコンの費用はふつう通信系が支配するのにGPU
  スパコンでは演算装置が支配する。だから通信系は
  Myrinetといわず最高速のものを買えばOK
  PCIExpressより速いものすらあるので妥当
• むしろ今のコードは無駄をしてるのでもっと速くできる
• 前ページの見積もりの速度が出る可能性は高い
• プログラムは1から書き直し。すべての分野
  の計算に使えるわけではないし、実績がまだ
  あまりないので、汎用京速計算機を置き換え
  うるものではないが、挑戦する価値はあるの
  では。
• ハードを作るのは性能に比例した費用が必
  要だがソフトはそこまで費用はいらない。むし
  ろ長期的視野にたって科学・工学のために必
  要なツールを整備するのが基礎科学の役目
  ではないか
7.GPU(メニイコア)の将来、GPUの次


                        82
GPU・メニイコアで
    何ができないだろうか?
たとえば・・・
• メモリ量が増えるわけではない。
 • 速いメモリがなるたけ欲しいという計算は多い
 • GPUのメモリは速いがホストのよりは少ない
• 通信の性能は改善するわけではない。むしろ
  flopsあたりの通信性能は落ちる。
 • 低レイテンシ通信の要求
 • 大帯域幅通信の要求

                           83
GPU・メニイコアで
    何ができるだろうか?
• 計算量が必要な人に
• 分野により向き不向きはあるだろう
• 不向きと言われていたにもかかわらずアルゴ
  リズムをがらりと変えて成功した分野も
• いろんな人が研究時間を食わない程度に試
  してみればよい。速くなればラッキー
• 多様なハードウェアが出現し、それぞれの分
  野が必要とするスパコンをカスタム設計でき
  る未来が望ましい。

                         84
GPUが使いにくい例1:ライフサイエンス
                     • MDのタイムステップ(Δ t)
                       は1フェムト(10-15)秒程度
                       が限界。←タンパク質の場合、
                       最も速い運動である結合の伸縮
                       は10-14秒程度の周期であるため、
                       Δ tは1フェムト秒程度が選ばれ
                       る。
                     • タンパク質のフォールディング時
                       間はミリ秒
                     • 1012ステップがどうしても必要!
 安藤格士さんのスライドより
                     • 原子数が決まっているため無限
タンパク質304+水原子7,377=     に並列化できるわけではない。
     原子数7,681         低レイテンシ、高速ハードウェア
巨大タンパク質複合体は~MDa        が欲しい!!
(メガダルトン)=数十万原子くらい
                                            85
GPUが使いにくい例1:多くのタイムス
      テップが必要な計算
       星形成             タンパク質
                       分子シミュレーション




                       フォールディングミリ秒/結合の振動フェムト秒
星雲の寿命1000万年/星の振動5分     =1012ステップ
=1012ステップ              アミノ酸を球やバッグで近似したり、溶媒水の
星が形成しはじめた時点で「星のモデル」    効果を簡易化したりしているが、水素結合1つ
に置き換え、タイムステップを軽減       が大きな部品を動かしたり、簡単ではない
                       粗視化、統計性をつかさどる階層性の科学
大スケール現象に、微小で高速な震動が     が必要!
与える影響は、統計的なもの。
真に1012ステップ必要な計算はあるか?
                                            86
GPUが使いにくい例2:量子化学
                     • 1原子あたり15~50の基底関
量子化学シミュレーション           数、アミノ酸1、2個で20原子と
                       するとN=300
                     • アルゴリズムにもよるがFMOな
                       ら最低限O(N^3)のメモリと
                       O(N^5)の計算量が必要
                     216MB

                     • というわけでアミノ酸2,3個が
                       1GPUに乗る限界。毎ステップ
原子をただの粒とみなすのではなく、      全対全通信をするので複数
原子核のまわりの電子状態を計算し、      GPUにすると性能がた落ち
原子のあいだにはたらく力をより正確    • O(N^6)の演算量とO(N^5)のメ
に計算しながら、分子をシミュレーショ     モリを必要とするアルゴリズム
ンする一連の手法。              もある
                             東工大の西川武志さんより

                                             87
GPUが使いにくい例2:
            多くのメモリが必要な計算
    運動論のシミュレーション                   • 多くの、できれば高速な、
                                     できればお互いの通信が
                                     速いメモリが欲しい計算と
    f ( x, y, z, vx , v y , vz )     いうのはいくらでもある
                                   • 1ノードにつめるメモリには
                                     限度があるし、膨大なデー
                                     タを1プロセッサで処理して
                                     いては時間がかかるので
•   プラズマの位置と速度の分布 f が                やはり並列計算の発達が
    6次元場のため、一辺の解像度を
    NとするとO(N^6)のメモリが必要               必要
•   しかし、速度方向の分布は特徴が
    あるため、うまい表現を考えてメモ
    リ消費を減らし計算量を増やすこと
    は可能かも・・・・
                                                     88
GPU利用が難しい・・・と言われていたが
    実現してしまった例:粉体
            地球シミュレーター




           阪口 秀    西浦 泰介
        GPUの専門家にすら、移植は困難といわれ
        ていた(隣接関係が変わっていったり、1粒
        子に集中的にアクセスすることが必要)。
        まったく新しいアルゴリズムにすることで
        GPUでピークに近い性能を出すことに成功!
        雇用予算が事業仕分けで計上見送り
                                89
GPUの勃興は何をもたらすか
• GPU計算機は通信ハードウェアコストが副次的
高性能通信ハードウェアへの需要が高まる
低レイテンシ、高帯域幅ハードウェアが出現?
ライフサイエンスの人など、高性能通信が欲し
  い人が喜ぶ!(宇宙の人もよろこぶ)

それより重要なこと:人が、並列性を理解し使い
 はじめること
                           90
GPUは安くありつづけるだろうか
• ハードの価格=(初期投資)÷(売れた数)

• GPUとしてはオーバースペックなFermiやSCC
  やその他メニイコア演算ユニットが、パソコン
  レベルまで普及しなければ、安くて速い計算
  機が手に入らなくなるかも・・・




                              91
メニイコアがパソコンレベルに
 普及すると私が信じる理由




   コンピューターと人間
     何が違う?
                 92
自然界の並列性
• 宇宙には数千億の銀河
• 銀河には数兆の星
• 地球には無数の生命
• 人には60兆の細胞
• 脳細胞は140億個
すべてが同時に動いている




               93
認識の並列性
                • 140億コア(?)トランジスタ(?)
                  ×500Hz(?)
                  =ピーク性能7TFlops(?)
                • 実効性能~0.01Flops
                • 1日ごとに数万個のトランジス
                  タが壊れる

                • でも、とても多機能、柔軟、ディ
↑7TFlops          ペンダブル
Priceless       • スカラー性能はなくても膨大な
                  並列性があれば可能になるタ
7TFlops 40万円
シミュレーションしか        スクの存在を強く示唆
できない
                                       94
人間が入力したデータの処理から、
世界をじかに認識し、働きかける情報論へ
• 今あるアプリはメニイコアでただちに速くなるわけで
  はない。だから、メニイコアが無用
• と思う人は見逃している:メニイコアでこそ動くような、
  普及を後押しするような、今は想像もできないような
  アプリが生まれる可能性を!!
• 今想像できるのは・・・実世界認識?はてまた人工
  知能?


    cv



                               95
GPUコンピューティング・メニーコアコンピュー
    ティングの産業規模のオーダー評価
スパコンにしか使われなかった場合
• Cray:62億円(年商)
プロが使うソフトウェアができた場合
• Dassault Systems社(自動車CAD):1790億円
• Adobe社(フラッシュ):1660億円
ゲームに使われた場合
• 任天堂:1兆円
社会基盤となるソフトウェアに採用された場合
• Google:2兆円
• マイクロソフト:5兆円
京速計算機に、仕分け人曰く
• 「一時的にトップを取る意味はどれくらいある
  か」
• 「一番だから良いわけではない」
• 「ハードで世界一になればソフトにも波及とい
  うが分野で違う」
俺なりの答え
• たしかによいサイエンスが伴わなければハードで
  一時的に一番をとってもあまり意味がない
 速いコアをたくさん並べるというのが一番性能がでるので、
  ベクトル/メニイコア系の流れは(何度か)来るだろう
今ならメニイコア世界に一番乗りできる。俺たちが
 メニイコアコンピューティングという新学問、新産業
 を興す。国産ソフト、人材を売れる。
 一番=金を払えば得られる定量的アドバンテージと一番
  乗り=誰よりも先んじて知っている定性的アドバンテージ
  は全然違う
むすび
• 情報論はずっとスカラー前提に発展してきた
• スカラーの周波数はもうあまり上がらない。SiGe
  とかで上がっても、それをメニイコア化すれば
  もっと性能が出る並列情報論の必要性
• ハードが出てしまったいま、ハードがないから理論
 がない⇔理論がないから使いたくない⇔使われないから
 ハードが出ないのスパイラルを打ち破りメニイコア
 を使おう。理論を作ろう。自然科学を研究しよう。


                             99
GPUができなかったこと
• 低レイテンシ通信、大容量メモリ・・・
• しかし、↑をはじめ、あらゆるHPCを使いこな
  すうえで、並列性の理解は大きな助けになる
  だろう。
• GPUはその発火点となりうる
• GPUだけでなく、多様なハードウェアが未来に
  生まれるように。それらを使いこなせるように。
  みんなが驚き、喜ぶような発明をするために。

                           100
以下 予備

        101
補.次世代GPUコンピュータ、Fermi



                       102
2009/09/30 発表
          GPU Technologies Conference




http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Archit
ecture_Whitepaper.pdf

                                                                               103
Fermi




   Jen-Hsun Huang
NVIDIA President&CEO




                               104
Fermiとは
• NVIDIAの第3世代汎用GPU
• 汎用GPUに乗り出した第1世代(G80;
  8800GTX…)、それを拡張した第2世代(G200,
  GTX 280)の時代に、数値計算ユーザーから
  得たさまざまな意見をもとに抜本的な再設計
  を施された
• 自然科学に自然に使えるレベル


                                105
おさらいーCPUとGPU




Core i7 : 731万トランジスタ
                       106
CPUとGPU




Core i7Fermi : 30億トランジスタ
       : 731万トランジスタ
                           107
自然科学にとっての大きな進歩
Fermiの進歩
• 512コア、倍精度演算の完全サポート
• じつは現時点で唯一の倍精度融合乗加算(MAD)をサポート
  するハードウェア
• ある人の推測:単精度1.5TFlop/s, 倍精度768GFlop/s
• 自動キャッシュの装備
• 全メモリにECC(誤り訂正符号)を標準装備
• GPU版ハイパースレッディング
「ベクトル計算機よりも高度な何か」に仕上がっ
  ている
                                        108
Streaming          スケジューラ= TA
Multiprocessor =   次にどの計算を
                   するか決めて司
32core             令する。
    Core=M1
    整数・実数の四則演
    算が可能、
    倍精度もOK




                   SFU= D3
                   sin, cos, hypsin,
                   log, exp, erf,
                   gammaなど特殊
                   関数を計算する



                   x16                 109
Fermiのキャッシュ構造
 メモリ=図書館

                     メモリL2 L1の
                     間は必要なデータが
                     自動的にコピーされる

L2キャッシュ=研究
室の本棚 768KB

L1キャッシュ=机の
上に広げた本 64KB
              いままでL2はなかった。
              L1は16KBで、全手動だった。
レジスタ=計算用
紙             L2のおかげでSM間の通信が大幅
              に高速化される。 プログラムも楽
              になる。
                                     110
ECC(誤り訂正符号)について
• 計算機は精度のよい宇宙線ディテクター
• 計算機は数を電圧により2進数で表現しているんだが、あま
  りにも素子が小さいので、2次宇宙線が飛び込んできてビット
  を反転させることがある(メモリー内の数値が偶然に変化す
  る)。GPUはゲーム用なのであまり気にしてこなかった。
• ECC=典型的にはメモリ64bitにつき冗長8bit
  を付加。1ビットの過ちならどこが反転したの
  かまで含めて検出し、訂正できる。
• FermiではすべてのメモリにECCを装備
• もはやFermiでは宇宙線を観測できない!!
                                 111
スケジューラ= TA
                            が2人いて、コア
                            =M1が片手でも
                            空いていれば計
                            算をやらせる。
                            Core i7がやって
                            いるhyper
                            threading相当の
                            機能


カーネルの同時実行が可能に。一部のテーブルである計算をやってい
る間のこりが全然別種類の計算を進めることができる。




                                      112
「汎用GPU」から「GPU型計算機」へ
• 他にも、「普通の」プログラムを実行する上で
  必須の改良が加えられている。
• 普通のFortran, C, C++ プログラムが難なく倍
  精度でFermi上で100~200倍の速度で動く
  可能性がある(主に自動キャッシュのおかげ)。
• 性能を引き出すには、ものすごい数で(予想:
  512コア×128スレッド/コア=65536並列)並列
  化されたアルゴリズムを書かないといけない。
  これは使う人の担当。そうすればFermiは全
  力で応えてくれる。
                              113
Fermiへの懸念と期待
• まあ、自社製品の広告だし
• 倍精度が8倍速くなったって言ってるのはRadeonと比べても元が遅
  かったから
• どこまで公約どおり動くのかは使ってみるまで安心はできない
• NVIDIA毎年赤字だとか歩留まりが製品化できないレベルだとかいう噂
  もあるし発売日がずれたりしている
• そもそもこんなもん本来のGPUとして売るには高機能すぎ、値段がどう
  なるのか心配
• がんばって世に出していただければGPU計算が
  容易になり、数値自然科学は大いに恩恵をこう
  むるだろう。
正にNVIDIAの社運を賭けた汎用GPU型決戦並機
                               列計算
                                     114
まとめ GPUについて
• 安くて速い。さまざまな計算が100倍速に
• 1つのカードで数万並列の計算をしないと性能は生か
  せない。しかし自然科学にはそういう課題がたくさんあ
  るはず。
• 1つのカードに計算能力が濃集してることで、逆に通
  信に余裕が出るケースもある
 1つのGPUパソコンをつくってスパコンを手に入れよう!
 GPUクラスタを作れば世界の頂点が見える。
• たとえGPUが滅びても、こういう超多並列ハードウェア
  はこれからの計算機の主流の1つではありつづける
  だろう。
計算機にとらわれて目的を見失ってはこまりますが、たくさんある重要な課題の中から
それぞれの計算機に適したものを選ぶことは必要かと。そのためにはある程度計算機
についても知っておくとよいかとおもいます。
いっしょにGPUを勉強して使いましょう!!
                                      115

Weitere ähnliche Inhalte

Was ist angesagt?

「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラNVIDIA Japan
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算智啓 出川
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門NVIDIA Japan
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境KiyotomoHiroyasu
 
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) 智啓 出川
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門ryos36
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選Yusuke Uchida
 
遺伝研スパコンを使った解析の並列化.pptx
遺伝研スパコンを使った解析の並列化.pptx遺伝研スパコンを使った解析の並列化.pptx
遺伝研スパコンを使った解析の並列化.pptxOsamu Ogasawara
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習Hitoshi Sato
 

Was ist angesagt? (20)

「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラ
 
CuPy解説
CuPy解説CuPy解説
CuPy解説
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
 
CUDAプログラミング入門
CUDAプログラミング入門CUDAプログラミング入門
CUDAプログラミング入門
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust) GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
モデル高速化百選
モデル高速化百選モデル高速化百選
モデル高速化百選
 
遺伝研スパコンを使った解析の並列化.pptx
遺伝研スパコンを使った解析の並列化.pptx遺伝研スパコンを使った解析の並列化.pptx
遺伝研スパコンを使った解析の並列化.pptx
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 

Andere mochten auch

Intro to GPGPU Programming with Cuda
Intro to GPGPU Programming with CudaIntro to GPGPU Programming with Cuda
Intro to GPGPU Programming with CudaRob Gillen
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)なおき きしだ
 
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)Takayori Takamoto
 
クラウド選びのポイント、教えます
クラウド選びのポイント、教えますクラウド選びのポイント、教えます
クラウド選びのポイント、教えますAtsushi Nakada
 
2048!
2048!2048!
2048!ESUG
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)Etsuji Kameyama
 
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルなおき きしだ
 
量子コンピュータ(Quantum Computer)
量子コンピュータ(Quantum Computer)量子コンピュータ(Quantum Computer)
量子コンピュータ(Quantum Computer)Junya Yamaguchi
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するなおき きしだ
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -ShinichiAoyagi
 
Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Taira Hajime
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法Kentaro Sano
 

Andere mochten auch (20)

自作GPUへの道
自作GPUへの道自作GPUへの道
自作GPUへの道
 
Intro to GPGPU Programming with Cuda
Intro to GPGPU Programming with CudaIntro to GPGPU Programming with Cuda
Intro to GPGPU Programming with Cuda
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
 
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)
Arduinoで作るM2Mクラウドコンピューティング(東京大学 落合秀也先生)
 
20160218 devsumi
20160218 devsumi20160218 devsumi
20160218 devsumi
 
クラウド選びのポイント、教えます
クラウド選びのポイント、教えますクラウド選びのポイント、教えます
クラウド選びのポイント、教えます
 
GPUと戯れる
GPUと戯れるGPUと戯れる
GPUと戯れる
 
The 2048 Project
The 2048 ProjectThe 2048 Project
The 2048 Project
 
2048!
2048!2048!
2048!
 
JavaOne2016報告
JavaOne2016報告JavaOne2016報告
JavaOne2016報告
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)
日本のアニメーションが描く AR/VR/Robot 技術が使用される未来(α版)
 
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
 
量子コンピュータ(Quantum Computer)
量子コンピュータ(Quantum Computer)量子コンピュータ(Quantum Computer)
量子コンピュータ(Quantum Computer)
 
乱数のたのしい話
乱数のたのしい話乱数のたのしい話
乱数のたのしい話
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
 
Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向Linux KVM環境におけるGPGPU活用最新動向
Linux KVM環境におけるGPGPU活用最新動向
 
機械学習プロ生20151121
機械学習プロ生20151121機械学習プロ生20151121
機械学習プロ生20151121
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
 

Ähnlich wie 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来

【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来Preferred Networks
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性Yusaku Watanabe
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場幸智 Yukinori 黒田 Kuroda
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1Kohei KaiGai
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012Takuro Iizuka
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントCloudera Japan
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール智啓 出川
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつTakuji Tahara
 
Boost study14
Boost study14Boost study14
Boost study14fjnl
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたRyo Sakamoto
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境智啓 出川
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectComputedasyprocta
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報ReNom User Group
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 

Ähnlich wie 2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来 (20)

【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性
 
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
「Windows Azure でスーパーコンピューティング!」for Microsoft MVP camp 2014 大阪会場
 
retrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoFretrobsd-2012-JUL-07 at JNUG BSD BoF
retrobsd-2012-JUL-07 at JNUG BSD BoF
 
CPUの同時実行機能
CPUの同時実行機能CPUの同時実行機能
CPUの同時実行機能
 
Isca13 study
Isca13 studyIsca13 study
Isca13 study
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1
 
計算機理論入門01
計算機理論入門01計算機理論入門01
計算機理論入門01
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつ
 
Boost study14
Boost study14Boost study14
Boost study14
 
20130126 sc12-reading
20130126 sc12-reading20130126 sc12-reading
20130126 sc12-reading
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 

Mehr von Preferred Networks

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57Preferred Networks
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Preferred Networks
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Preferred Networks
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...Preferred Networks
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2Preferred Networks
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演Preferred Networks
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)Preferred Networks
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るPreferred Networks
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Preferred Networks
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会Preferred Networks
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2Preferred Networks
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...Preferred Networks
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...Preferred Networks
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50Preferred Networks
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Preferred Networks
 

Mehr von Preferred Networks (20)

PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
PodSecurityPolicy からGatekeeper に移行しました / Kubernetes Meetup Tokyo #57
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
 
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
Kubernetes + containerd で cgroup v2 に移行したら "failed to create fsnotify watcher...
 
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
深層学習の新しい応用と、 それを支える計算機の進化 - Preferred Networks CEO 西川徹 (SEMICON Japan 2022 Ke...
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
スタートアップが提案する2030年の材料開発 - 2022/11/11 QPARC講演
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
自然言語処理を 役立てるのはなぜ難しいのか(2022/10/25東大大学院「自然言語処理応用」)
 
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
Matlantis™のニューラルネットワークポテンシャルPFPの適用範囲拡張
 
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
PFNのオンプレ計算機クラスタの取り組み_第55回情報科学若手の会
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
独断と偏見で選んだ Kubernetes 1.24 の注目機能と今後! / Kubernetes Meetup Tokyo 50
 
Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50Topology Managerについて / Kubernetes Meetup Tokyo 50
Topology Managerについて / Kubernetes Meetup Tokyo 50
 

Kürzlich hochgeladen

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来

  • 2. 自己紹介 • 京都大学 物理学第二教室 天体核研究室 • 専門は宇宙物理学 「地球より大きいもの全てが対象」 • しかし、宇宙の現象は直接実験ができないの で、シミュレーションの利用がさかんです • ひょんなことからGPGPUの存在を知ったので 最近勉強しています 2
  • 3. 宇宙物理学のシミュレーションテーマ ニュートン重力 一般相対性理論 磁気流体力学 (時空・座標) 流体力学 (プラズマ) (気体・液体) 高温・高密度物質・ 素粒子論etc ・・・ 輻射輸送 運動論(荷電粒子の (光の放出・反射・ 加速やビームなど) 吸収・伝搬) 3
  • 4. 宇宙の研究とぼくらの生活 一般相対性理論 (時空・座標) 磁気流体力学 流体力学 (プラズマ) (気体・液体) 重力は時間を、空間を曲げる プラズマが吹き荒れる宇宙! 太陽風・宇宙天気は 「どんなにゆがんだ 人工衛星の死活問題 座標でも怖くない」 人工衛星の時計は 地上より速く進む! 核融合も実用化?! 乗り物の設計・気流 シミュレーション 気象&海洋シミュレーション 一般相対論を使わないと・・・ GPSは1日20kmも狂っていく 4
  • 5. おことわり • 宇宙物理学には特にGPUに向いている課題が 結構あるので、僕はけっこう楽観的です。 そうでない人が聞いたら鼻につくことをお詫びしますm(_ _)m • 他の分野の事情もぜひ知りたいのです 私の誤解・無理解も多いと思いますので • 宇宙物理学にもGPU的なものに適さない課題はいっ ぱいあるので、ぜひ「GPUの次」をいっしょに考えたい と思っています • しか勉強してません。 関係の 人ごめんなさい。 にも期待してます! • 本日お話する内容は私の知識の範囲内での私的所感でして、PFI、京都大学その他 組織の公的意見とは関係ございません 5
  • 6. もくじ 1. GPGPUとは?なぜGPUを使うのか 2. ハードウェア  演算機としてのGPU  HPC部品としてのGPU  GPUコンピュータを作ろう 3. GPUプログラミング言語と開発環境 4. GPUプログラミングの勉強のしかた 5. GPUコンピューティングの現状 6. GPUでペタコンを作ったら? 7. GPU(メニイコア)の将来、GPUの次 6
  • 8. の違い GPUはコア(計算する人)の数が多い! 周波数(ひとりの計算する速度)は1/3程度 4コア+hyper-threading 480コア (SSEを使うと16コア) 8
  • 9. The difference between and . 米国Roadrunner 長崎大学 DEGIMAクラスタ 1億3300ドル 予算 3800万円 1,457Tflop/s ピーク性能 700Tflop/s 安い! 9
  • 10. GPUとは?なぜGPUを使うのか? =>安価な超メニーコア計算機 • GPU(Graphics Processing Unit)とは • もともとコンピュータグラフィック(CG)描画専用の装置 • CG技術の発展にともない、GPUの仕事が多様化。 2006年後半から汎用GPU(GPGPU)へと進化 • 並列演算性能が高い • 500個程度の演算ユニット • 非常に安価 • パソコンの部品として量産されているため。 • 1T flops ~ 3万円程度 (Crayの相場は600万円/TFlops) • 価格性能は一般的なスパコンに比べ100倍ぐらい良い GPUコンピューティングが現実的に 10
  • 12. GPUとCPUを比べる(例) Core 2 Quad Q9550 NVIDIA 295GTX 演算器 4 (16) 480 演算性能 90.56Gflops 1788Gflops Parts Price $219 $499 Machine Price $900; 100Mflops/$ $1400; 1.3Gflops/$ Power 400W;230Mflops/W 700W;2.6Gflops/W flops = 一秒間に実数の四則計算を1回行える性能 • GPU は 1台あたりCPU の10 倍,20倍速い • 設備投資・消費電力あたりの計算能力も~10倍 • アプリケーションによっては100倍以上高速化したとの報告も多数 12 • 性能だけでみるとそこまで差はないように見えるが • 計算チップとしての設計思想がある点で決定的に違っている
  • 13. ダイイメージ • Streaming Processor (SP)がint/floatの演算 をおこなうユニット • Streaming Processor ×8 = Streaming Multiprocessor (SM) • SM内のSPは常に同じ 命令を実行 • SP×8 = SM • SM×3 = TPC • TPC×10 = G200 • 240コアというより 30コア×8要素SIMD 13
  • 14. アーキテクチャ模式図 命令キャッシュ • 1SPが1スレッドを担当 ワープスケジューラ • 命令は4クロックに一度 命令発行ユニット レジスタ 4096本×4バイト • 16スレッドが半ワープ SP SP 倍精度ユニット • メモリアクセスは半ワー 倍精度ユニット プごとにまとめられる SP SP 特殊関数ユニット • 32スレッドが1ワープ SP SP 特殊関数ユニット • 同じ命令を実行 SP SP ロード・ストア Shared Memory 16KB 14
  • 15. 演算機構造 論理構造 メモリ構造 ----RWともに速い---- レジスタ 4096本×4バイト×30 Shared Memory 16KB ×30 ----Rはキャッシュ/Wは遅い---- Const Memory 64KB Texture Memory ~GB ----RWともに遅い---- Global Memory ~GB ×30 ----PCI Expressの壁---- Host Memory スレッドブロックグリッド SMはいくつかのブロックを並列に実行、ブロックの実行順は未定義 同一ブロック内ではShared Memoryを介した通信が可能 ブロック間の通信手段はGlobal Memoryのみ Const Memoryはホストからのみ書き換え可 Texture MemoryはデバイスからもW可能だがキャッシュに反映されない スレッド数は32の倍数、ブロック数は30の倍数がよい 15
  • 16. 決定的に違う設計思想 Neharem G200 Fermi (GTX285) (2010Q1予定) ベクトル長 4 8 32 コア数 4 30 16 レジスタ数 40?×4 4096×30 4096×16? スレッド数 2×4 1024×30 ? GPUの設計:レジスタが圧倒的に多い レジスタを退避させることなく膨大な数のスレッドを駆動 様々なレイテンシを隠蔽 16
  • 17. 最適化に対するCPUとGPUの回答 • メモリが遅いキャッシュヒエ ラルキーをつくって、小さい • 一方GPUでは キャッシュにうまいこと当てる • ただの四則演算が終わるまで スレッドをたくさ にも、数クロックが浪費されて しまうパイプラインをつかい ん立てた 結果をまたずに命令を投入 • 分岐してる時間がもたいない 分岐する方向をあらかじめ 予測してそっちの計算を進め ておく投機的実行 • スカラーの限界がみえてきた んでマルチコアにしてみた • SIMDユニットも積んでみた 17
  • 18. • 「GPUって240コアとかあるらしいよね」 それどころか、3万並列くらいまで捌けます • 「プログラムを並列にするのって大変じゃない の?」 大変ですが、逆にとにかく並列化するだけで 性能が出るので、そういうアプリケーションな ら性能が出しやすいです 18
  • 20. 計算機全体としての性能は? 多くの場合通信性能がボトルネック 典型的パソコンの模式図 1000BASE-T ホストメモリ 0.125GB/s DDR3 1600 12.8GB/s CPU演算: 90.56GFlops=362GB/s CPU 12GB 計算を L2キャッシュ⇔CPU 行う マザーボード 転送: 150GB/s キャッシュ コンピュータの 基盤 0.012GB CPUプログラムからGPU ライブラリを呼ぶ等の GPU演算: 場合で、ホストメモリか GPU PCI Express 2.0x16 1788GFlops=7152GB/s らの転送がボトルネッ 8GB/s デバイスメモリ⇔GPU 計算を行う ■■■■■■■■ クになってしまうとせっ 転送: 223.8GB/s デバイスメモリ かくのGPUの性能が生 2GB かせない!! 20
  • 21. 「GPUクラスタ」とCPUクラスタを比べる CPU演算: GPU演算: 計算速度 CPU 90.56GFlops 1788GFlops=7152GB/s =362GB/s キャッシュ GPU GPU 主記憶 DDR3 1600 GDDR3 ■■■■■■■■ ■■■■■■■■ 転送速度 12.8GB/s 223.8GB/s デバイスメモリ デバイスメモリ 2GB 主記憶 ホストメモリ 容量 12GB 「ノード」間 1000BASE-T PCI Express 2.0x16 通信速度 0.125GB/s 8GB/s 全面的にGPU計算に移行すれば、秋葉原で 買える部品で1~2桁上の性能が手に入る。 21
  • 22. 「パソコン内蔵型」GPUクラスタ ディスク 主電源 CPU 副電源 メモリ GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 温度計 ¥383,806 22
  • 23. 「パソコン内蔵型」GPUクラスタ 1台で単精度7.1TFlop/s の性能、40万円 パソコンを100台ならべて Infinibandでつないだ程度 Cray 600万/TFlops 1.6TFlop/s 1億円→ ※通信性能が高い 23
  • 24. • 「GPUへのデータの転送がボトルネックなんで しょ?」 • 「これからはGPUのようなアクセラレータを積んだ HPCが主流となる」  GPUをアクセラレータ(演算機)だと思うと転送が ボトルネックで応用は限られる。GPUはそれ自身 計算機(演算機+主記憶+通信)だと思ったほう がいいかも?  データはホストメモリではなくなるべくグラフィック メモリに置くことがGPUコンピュータでは常識 24
  • 26. GPUコンピュータを手に入れよう • まあ、自作できる人なら余裕 • 残念ながら歩留まり向上のため、市販のGPU にはグラフィック表示には問題なくても全演算 機を動かすとたまに計算を間違えるものや落 ちるものが含まれている。メーカーによっては この場合でも返品や、交換に応じてくれる。 • 長崎大学ではGPUを多めに購入して自前でスクリーニン グプログラムを開発している(このへんも安さの秘密)。そ のうちスクリーニングプログラムが公開されたり、GPU計 算用チェック済みGPUが売られるようになるのでは。 26
  • 29. フルオープン . 変形!!
  • 31. ケースから分離した基盤上で組立て ぶっちゃけこの部品だけ売って欲しい
  • 32. マザーボード • GPUとの通信を司るチップを 2枚搭載、通常の2倍の速 「SuperComputer」 度で通信 • 規格上7つある汎用スロット 枠が全部大型GPU用 • 旧式のディスクやキーボー ドはバッサリ非対応 • Ultimate Supercomputing Solution for CUDA Parallel Programming (メーカー)
  • 33. GPU
  • 36. こんなこともあろうかと・・・! 電源/リセット信号線 延長ユニット (標準付属)
  • 38.
  • 39. GPU選び 赤いGPU AMD メーカー NVIDIA 緑のGPU RADEON R5870 GPU GeForce GTX 295 39
  • 40. 重要なのは・・・ AMD メーカー NVIDIA RADEON R5870 最高級GPU GeForce GTX 295 2700GFlops (単精度) 演算速度 1788GFlops (単精度) 544GFlops (倍精度) 149GFlops (倍精度) 153.6GB/s 転送速度 223.8GB/s ATI Stream SDK 開発環境 CUDA C Brook+ コンパイラ nvcc 開発環境、 だと私は思います 40
  • 41. ハードウェア選び • http://en.wikipedia.org/wiki/Comparison_of_ Nvidia_graphics_processing_units が充実 • AMD版もあります。 • おすすめの NVIDIA GPU GeForce GTX 285 GeForce GTX 295 Fermi (予定) 2GBモデル 演算速度 1063GFlops 2x 894GFlops 1500GFlops? デバイスメ 2048MB 2x 896MB 6GB? モリ容量 転送速度 159.0 GB/s 2x 111.9 GB/s ? 市価(万円) 4.5 ~ 5.5 5~6 15-20? 41
  • 43. CUDA --- NVIDIAのGPU向け開発環境 • CUDA C : ほぼC++互換の言語。GPU上でクラス も演算子オーバーロードもテンプレートも使える • ptx : GPU上の機械語に近い中間言語 • nvcc : CUDA Cのコンパイラ。 • cuda-gdb : Linux向けGPUデバッガ。 • 実行中のGPUプログラムを止めてデバッグできる • thrust : CUDA版STL • サードパーティ製, Apache License 2.0 • FFTやBLAS、その他多数のライブラリも 43
  • 44. 例)C++で自然数1..500の平方根を求 めるプログラム const int N = 500; void calculate(float* x,float* y){ for (int i = 0; i < N; ++i) { y[i] = sqrt(x[i]); } } • これをCUDAで書き int main () { vector<float> x(N), y(N); なおしてみる for (int i = 0; i < N; ++i) { x[i] = i+1; } calculate(&x[0], &y[0]); for (int i = 0; i < N; ++i) { cout << y[i] << endl; } } 44
  • 45. 例)自然数1..500の平方根を求めるプ ログラム,CUDA C版 #include <iostream> #include <thrust/thrust_vector.h> __global__ void calculate(float* x, float* y) { int i = threadIdx.x; y[i] = sqrt(x[i]); }  thrust_vectorはthrustを軽く ラップする独自のライブラリで int main () { す(nHDに入ってます)。完全な const int N = 500; thrust_vector<float> x(N), y(N); コードは2ページ後の黒背景 for (int i = 0; i < 500; ++i) { の部分を参照してください。 x[i] = i+1; } calculate <<<1,N>>> (x.ptr(), y.ptr()); for (int i = 0; i < 500; ++i) { cout << y[i] << endl; } } 45
  • 46. 1..500の平方根を求めるプログラム,比較 C++ CUDA const int N = 500; const int N = 500; void calculate(float* x,float* y){ __global__ void calculate(float* x, for (int i = 0; i < N; ++i) { float* y) { y[i] = sqrt(x[i]); int i = threadIdx.x; } y[i] = sqrt(x[i]); } } int main () { int main () { vector<float> x(N), y(N); thrust_vector<float> x(N), y(N); for (int i = 0; i < N; ++i) { for (int i = 0; i < N; ++i) { x[i] = i+1; x[i] = i+1; } } calculate(&x[0], &y[0]); calculate <<<1,N>>> for (int i = 0; i < N; ++i) { (x.ptr(), y.ptr()); cout << y[i] << endl; for (int i = 0; i < N; ++i) { } cout << y[i] << endl; } } } CUDAではループのかわりに、カーネル関数を並列的に実行 スレッドごとにthreadIdxというのが受け取れる(MPIっぽい) 46
  • 47. 実行してみる thrust> cat thrust_vector.cu ys = dev_ys; #include <thrust/device_vector.h> for (int i = 0 ; i < N; ++i) { #include <thrust/host_vector.h> cout << "sqrt " << xs[i] << " is " << ys[i] << #include <iostream> endl; using namespace std; } } const int N = 500; thrust> nvcc thrust_vector.cu __global__ thrust> ./a.out void calculate (float *px, float *py) { sqrt 0 is 0 int tid = threadIdx.x; sqrt 1 is 1 float x = px[tid]; sqrt 2 is 1.41421 float y = sqrtf(x); sqrt 3 is 1.73205 py[tid] = y; sqrt 4 is 2 } sqrt 5 is 2.23607 sqrt 6 is 2.44949 int main () { sqrt 7 is 2.64575 thrust::host_vector<float> xs(N),ys(N); sqrt 8 is 2.82843 thrust::device_vector<float> dev_xs(N),dev_ys(N); sqrt 9 is 3 for (int i = 0 ; i < N; ++i) { sqrt 10 is 3.16228 xs[i] = i; ・・・・・ } thrust> dev_xs = xs; calculate <<< 1 , N >>> (thrust::raw_pointer_cast(&*dev_xs.begin()), thrust::raw_pointer_cast(&*dev_ys.begin())); 47
  • 48. ptxを生成しGPU機械語に迫る thrust> nvcc thrust_vector.cu --ptx ・・・ .entry _Z9calculatePfS_ ( thrust> less thrust_vector.ptx .param .u32 __cudaparm__Z9calculatePfS__px, .param .u32 __cudaparm__Z9calculatePfS__py) { .reg .u16 %rh<3>; thrust> less thrust_vector.cu .reg .u32 %r<8>; ・・・ .reg .f32 %f<4>; __global__ .loc 26 8 0 $LBB1__Z9calculatePfS_: void calculate (float *px, float *py) { .loc 26 10 0 int tid = threadIdx.x;//A cvt.s32.u16 %r1, %tid.x; //A float x = px[tid]; //B cvt.u16.u32 %rh1, %r1; //A float y = sqrtf(x); //C mul.wide.u16 %r2, %rh1, 4; //r2 = 4*tid.x py[tid] = y; //D ld.param.u32 %r3, } [__cudaparm__Z9calculatePfS__px]; //B ・・・ add.u32 %r4, %r3, %r2; //B ld.global.f32 %f1, [%r4+0]; //B .loc 26 12 0 sqrt.approx.f32 %f2, %f1; //C ld.param.u32 %r5, [__cudaparm__Z9calculatePfS__py]; //D add.u32 %r6, %r5, %r2; //D st.global.f32 [%r6+0], %f2; //D .loc 26 13 0 exit; $LDWend__Z9calculatePfS_: } // _Z9calculatePfS_ ・・・ 48
  • 49. CUDA Cの利点 • C(C++)を知っていれば覚えることはわずか • GPU上で並列に実行したい関数(カーネル)には __global__などの印をつける • そして関数名<<<ブロック数,スレッド数>>>(引数, 引数,…) でカーネル呼び出し • C++言語の強力な機能がGPU上で使える。第3 者がthrustなるSTLを作れるのが何よりの証拠。 • テンプレート魔術によりホスト⇔デバイスの自動転送 はむろん、GPUの最適なスレッド数を調べてアルゴリ ズムを並列実行します • 機械語も見れて中を覗かないと落ち着かない変 態ハッカーも安心 49
  • 51. CUDAでGPUプログラミングを勉強する • GPUコンピュータを用意 • CUDA ZONE からCUDA3点セットをダウンロードしてイ ンストール • gpgpu.org や CUDA ZONE をみて最新の成果を確認 • わからないことはNVIDIA Forum で検索&質問 • thrust (データ管理), CUFFT(), CUDPP(ソート等) • google-testでテストしながらコードを成長させる • google code で自分のコードのサイトを作って公開 • gpgpu.org や CUDA ZONEに投稿! 51
  • 52. CUDAドライバ、CUDAツールキット(コンパイラ)、SDK(サ ンプル集)をダウンロード。ドキュメントやデバッガ、プロ ファイラもあります。 http://www.nvidia.com/object/cuda_get.html 日本語版は周回遅れなのでUSA版にGO!! 52
  • 53. ドキュメント CUDA Programming Guide CUDAの説明が書いてあるからまず必ず読むべき CUDA Best Practices Guide 最適化に重要なことが書いてあるからぜひ読むべき CUDA Reference Manual APIのリファレンスなので印刷して手元に CUDA GDB User Manual すごいデバッガなのでぜひ使うべき CUDA PTX ISA document GPU機械語解読の手掛かり、マニアになりたい方に http://www.nvidia.com/object/tesla_software.html 53
  • 59. 使える。 使われている。速くなっている! コンピューター視覚 量子化学 たんぱく質 金融市場の予測 シミュレーション シミュレーション 雷のシミュレーション 疎行列の積 ロボット手術 遺伝子解析 59
  • 60. • 宇宙物理学でも・・・ • N体計算(Hamada&Nitadori, Gordon Bell Prize!) • 流体 • Adaptive Mesh流体 (台湾国立大学) • 磁気流体(マカオ、北京) • Godunov Method (京大) • 最近GPU+AMR+MHDが出た(Peng Wang, Tom Abel) • データ解析 など 60
  • 63. Peng Wang(Tom Abelの弟子) Stanford Univ. 博士論文 abstract GPUAMR MHD
  • 64. 複数のコンピュータが 協力して数値計算する nHD (by 村主) こと 衝撃波のない所では、 精度を上げてシミュ 解析解をあてはめて、 レートする手法 衝撃波をきちんとシ ミュレートできる手法 • MPI GPU Full Godunov 2nd order MUSCL 3次元 一様メッシュ Euler方程式ソルバー AMRとかはとくになし 圧縮性流体の基礎方程式、粘性なし • GPUが複数装備されたマシンを複数台連結したクラスタ上 で流体計算が実行できます • Full Godunovなので、強い衝撃波、真空、何でも来いです • テスト駆動開発なのでさまざまなテストが済んでいます • BSDライセンスで公開開発中: http://code.google.com/p/astro-attic/wiki/NHDIntroduction 64
  • 65. 計算速度 あのパソコン1台で  CPU GPU ハード Core i7 920, シングルスレッド GTX 295 , 1チップ,通信なし 問題設定 128 x 128 x 128, 斜め衝撃波問題, 0.12 sound crossing time 所要時間 8分 46.887 秒 7.509 秒 速度比 1 70 ハード Core i7 920, シングルスレッド GTX 295 , 4チップMPI 問題設定 128 x 128 x 512, Blast 問題, 1.6 sound crossing time (長辺) 所要時間 1日 2時間 39分 46秒 9分 13.437 秒 速度比 1 173 PRELIMINARY (CPU/GPUいずれも未最適化コードです) 65
  • 67.
  • 68. 日本最強のスパコン • 10PFlop/s • 1230億円 • のはずだったが・・・ 68
  • 69.
  • 70. 日本のGPUスパコン 158TFlop/s Gordon Bell Prize Awarded! 東工大TSUBAME 長崎大学DEGIMA 名古屋大学 1億2000万(GPU代) 予算 3800万円 1億7000万円 56Tflop/s(GPU部) ピーク性能 700Tflop/s 建設中 (単精度) ??? ?? 消費電力 150kW ??? 70
  • 71. 京速 v.s. Cray v.s. GPU 計算力 10PFlop/s ~1PFlop/s 158TFlop/s 価格 1230億円 ??? 3800万円 C/P 1230万円/TFlops 600万円/TFlops 24万円/TFlops 計算 対象 汎用 汎用 未知数 71
  • 72. 「真珠湾攻撃」 • 濱田・横田・似鳥さんはTree-N体コード(並列化 は困難)を190ノード760GPUで動かし、SCに出発 する直前に10倍の高速化に成功 • 長崎大学のGPUクラスタは今年度のSCでゴード ンベル賞が受賞確実視されていた。それを受け ての濱田氏の言葉(その後受賞) • 今年の受賞により日本はGPUスパコンの有効性 を世界に示すことになるだろう。だがこのままで は米国の国力に敗北する。 • 現在米国・中国で30PFlops級のGPUスパコンが 計画中
  • 73. このままでいいのか • GPU・メニイコアは一過性のブームではない。なぜ なら1コアの速度は電磁気・量子論的限界に近づ いているので、コアをこれ以上速くできない。とな ればコアをたくさん並べるしかない • 遅かれ早かれ、高性能並列計算機はGPU型、さら にはGPUの進化したメニイコア計算機が占める • 昔のものを使いつづけたい気持ちはわかるしそう できれば科学に集中できて一番良い • のだが最先端のコンピュータはどんどん変わって いくのでそうもいかない
  • 75. GPUペタコンを本気で考えてみる • とある宇宙物理学の学会で出た「ペタコンで挑み たい未解決問題」 • Vlasov方程式を解くために500TBくらいメモリが欲しい • 分子雲乱流から1stコア形成までを一様メッシュで分 解するためには10000^3 の流体計算(40TB)がしたい • 計算実行中に可視化まですませたい • この要求を真に受けてGPUスパコンを設計して みる • 真剣なので楽観的予測はなし、あくまで現在もし くは将来確実に手に入る部品のみ。ムーアの法則 等、低コスト化の効果は使わない
  • 76. 定量的通信性能比較再訪 CPU演算: GPU演算: 計算速度 CPU 90.56GFlops 1788GFlops=7152GB/s =362GB/s キャッシュ GPU GPU 主記憶 DDR3 1600 GDDR3 ■■■■■■■■ ■■■■■■■■ 転送速度 12.8GB/s 223.8GB/s デバイスメモリ デバイスメモリ 2GB 主記憶 ホストメモリ 容量 12GB 「ノード」間 1000BASE-T PCI Express 2.0x16 通信速度 0.125GB/s 8GB/s GPUノードを複数並べようと思ったら通信が PCIExpressなみ必要。GBeでは苦労する。 76
  • 77. 高速ネットワーク • Infiniband SDR…10Gb/s QDR … 40Gb/s (定番) • 36ポートQDRのスイッチが200万円、カード15万円 • Myrinet 20Gb/s (リーズナブル) • 32ポートのスイッチが40万円、カード6万円 • 32ポートスイッチを使って3次元トーラスを作る。12ポート をスイッチ間通信に使い、20ポートにノードをぶら下げる • ノードはFermi3枚、NIC(Network Interface Card)1枚 • 第2世代GPUの方が安価でいて今CudaZoneにあるような 研究はすべて可能なのだが、より多くの人が使えるように (Fortran,C++も動く?)高価なFermiで悲観的見積もり x+1 y+1 x+1 z+1 y+1 z+1 計算ノード スイッチ x-1 y-1 x-1 z-1 y-1 z-1
  • 78. 新生ペタコン計画試算 構成 20×8×8×4 20×8×8×16 (5120ノード) (20480ノード) 部品 ノードあたり価格 10Pに必要な費用 Vlasovに必要な費 現行 (万円) (万円) 用(万円) Myrinet 32 40/20ノード 10240 ポートスイッチ Myrinet NIC 6 30720 Fermi GPU 15x3 230400 メモリ24G 9 46080 マザーボード、 11 56320 CPU、電源 設備費用合計 73 37億3760 149億5040 +700億 倍精度性能 0.768TFlops 11.796PFlops 47.186PFlops 10PFlops x3 ?? 消費電力 0.3Gflops/W 3.538MW 14.152MW 36億円/yr 10円/kWh 3.09億円/yr 12.36億円/yr 下がる予定
  • 79. 現状の流体コードを(弱く)スケール させることができたら・・・? • (9*60+13)*(1.788/2)/0.768* 10000**4/(128*128*512*512*1.6) * (4.0/(3*5120)) / 86400 => 2.82342736296417(day/sound crossing) • 10000**3/(5120*3.0) * 40 / 1e9 => 2.60416666666667(GB/Fermi) • (10000**3/(5120*3.0))**(1.0/3.0) => 402.287243585679(Mesh/Fermi) • 12Pプランでは10000^4 の 流体計算が、sound crossing timeあたり3日で解ける。 • 47Pプランなら0.7日でsound crossing • 解像度を2倍妥協すればこの16倍速くなります
  • 80. 見積もりの妥当性 • 今のコードはGPUあたり128^3メッシュで解いているが、 見積もりは約402^3になる。表面積に対する体積が大 きいほど通信が楽になるセンス妥当 • 今のコードは流体データがデバイスメモリにあることに 速度を依存恐るべきことに10000^3の流体が Fermiなら全部デバイスメモリに載ってしまう。妥当 • スパコンの費用はふつう通信系が支配するのにGPU スパコンでは演算装置が支配する。だから通信系は Myrinetといわず最高速のものを買えばOK PCIExpressより速いものすらあるので妥当 • むしろ今のコードは無駄をしてるのでもっと速くできる • 前ページの見積もりの速度が出る可能性は高い
  • 81. • プログラムは1から書き直し。すべての分野 の計算に使えるわけではないし、実績がまだ あまりないので、汎用京速計算機を置き換え うるものではないが、挑戦する価値はあるの では。 • ハードを作るのは性能に比例した費用が必 要だがソフトはそこまで費用はいらない。むし ろ長期的視野にたって科学・工学のために必 要なツールを整備するのが基礎科学の役目 ではないか
  • 83. GPU・メニイコアで 何ができないだろうか? たとえば・・・ • メモリ量が増えるわけではない。 • 速いメモリがなるたけ欲しいという計算は多い • GPUのメモリは速いがホストのよりは少ない • 通信の性能は改善するわけではない。むしろ flopsあたりの通信性能は落ちる。 • 低レイテンシ通信の要求 • 大帯域幅通信の要求 83
  • 84. GPU・メニイコアで 何ができるだろうか? • 計算量が必要な人に • 分野により向き不向きはあるだろう • 不向きと言われていたにもかかわらずアルゴ リズムをがらりと変えて成功した分野も • いろんな人が研究時間を食わない程度に試 してみればよい。速くなればラッキー • 多様なハードウェアが出現し、それぞれの分 野が必要とするスパコンをカスタム設計でき る未来が望ましい。 84
  • 85. GPUが使いにくい例1:ライフサイエンス • MDのタイムステップ(Δ t) は1フェムト(10-15)秒程度 が限界。←タンパク質の場合、 最も速い運動である結合の伸縮 は10-14秒程度の周期であるため、 Δ tは1フェムト秒程度が選ばれ る。 • タンパク質のフォールディング時 間はミリ秒 • 1012ステップがどうしても必要! 安藤格士さんのスライドより • 原子数が決まっているため無限 タンパク質304+水原子7,377= に並列化できるわけではない。 原子数7,681  低レイテンシ、高速ハードウェア 巨大タンパク質複合体は~MDa が欲しい!! (メガダルトン)=数十万原子くらい 85
  • 86. GPUが使いにくい例1:多くのタイムス テップが必要な計算 星形成 タンパク質 分子シミュレーション フォールディングミリ秒/結合の振動フェムト秒 星雲の寿命1000万年/星の振動5分 =1012ステップ =1012ステップ アミノ酸を球やバッグで近似したり、溶媒水の 星が形成しはじめた時点で「星のモデル」 効果を簡易化したりしているが、水素結合1つ に置き換え、タイムステップを軽減 が大きな部品を動かしたり、簡単ではない 粗視化、統計性をつかさどる階層性の科学 大スケール現象に、微小で高速な震動が が必要! 与える影響は、統計的なもの。 真に1012ステップ必要な計算はあるか? 86
  • 87. GPUが使いにくい例2:量子化学 • 1原子あたり15~50の基底関 量子化学シミュレーション 数、アミノ酸1、2個で20原子と するとN=300 • アルゴリズムにもよるがFMOな ら最低限O(N^3)のメモリと O(N^5)の計算量が必要 216MB • というわけでアミノ酸2,3個が 1GPUに乗る限界。毎ステップ 原子をただの粒とみなすのではなく、 全対全通信をするので複数 原子核のまわりの電子状態を計算し、 GPUにすると性能がた落ち 原子のあいだにはたらく力をより正確 • O(N^6)の演算量とO(N^5)のメ に計算しながら、分子をシミュレーショ モリを必要とするアルゴリズム ンする一連の手法。 もある 東工大の西川武志さんより 87
  • 88. GPUが使いにくい例2: 多くのメモリが必要な計算 運動論のシミュレーション • 多くの、できれば高速な、 できればお互いの通信が 速いメモリが欲しい計算と f ( x, y, z, vx , v y , vz ) いうのはいくらでもある • 1ノードにつめるメモリには 限度があるし、膨大なデー タを1プロセッサで処理して いては時間がかかるので • プラズマの位置と速度の分布 f が やはり並列計算の発達が 6次元場のため、一辺の解像度を NとするとO(N^6)のメモリが必要 必要 • しかし、速度方向の分布は特徴が あるため、うまい表現を考えてメモ リ消費を減らし計算量を増やすこと は可能かも・・・・ 88
  • 89. GPU利用が難しい・・・と言われていたが 実現してしまった例:粉体 地球シミュレーター 阪口 秀 西浦 泰介 GPUの専門家にすら、移植は困難といわれ ていた(隣接関係が変わっていったり、1粒 子に集中的にアクセスすることが必要)。 まったく新しいアルゴリズムにすることで GPUでピークに近い性能を出すことに成功! 雇用予算が事業仕分けで計上見送り 89
  • 91. GPUは安くありつづけるだろうか • ハードの価格=(初期投資)÷(売れた数) • GPUとしてはオーバースペックなFermiやSCC やその他メニイコア演算ユニットが、パソコン レベルまで普及しなければ、安くて速い計算 機が手に入らなくなるかも・・・ 91
  • 92. メニイコアがパソコンレベルに 普及すると私が信じる理由 コンピューターと人間 何が違う? 92
  • 93. 自然界の並列性 • 宇宙には数千億の銀河 • 銀河には数兆の星 • 地球には無数の生命 • 人には60兆の細胞 • 脳細胞は140億個 すべてが同時に動いている 93
  • 94. 認識の並列性 • 140億コア(?)トランジスタ(?) ×500Hz(?) =ピーク性能7TFlops(?) • 実効性能~0.01Flops • 1日ごとに数万個のトランジス タが壊れる • でも、とても多機能、柔軟、ディ ↑7TFlops ペンダブル Priceless • スカラー性能はなくても膨大な 並列性があれば可能になるタ 7TFlops 40万円 シミュレーションしか スクの存在を強く示唆 できない 94
  • 95. 人間が入力したデータの処理から、 世界をじかに認識し、働きかける情報論へ • 今あるアプリはメニイコアでただちに速くなるわけで はない。だから、メニイコアが無用 • と思う人は見逃している:メニイコアでこそ動くような、 普及を後押しするような、今は想像もできないような アプリが生まれる可能性を!! • 今想像できるのは・・・実世界認識?はてまた人工 知能? cv 95
  • 96. GPUコンピューティング・メニーコアコンピュー ティングの産業規模のオーダー評価 スパコンにしか使われなかった場合 • Cray:62億円(年商) プロが使うソフトウェアができた場合 • Dassault Systems社(自動車CAD):1790億円 • Adobe社(フラッシュ):1660億円 ゲームに使われた場合 • 任天堂:1兆円 社会基盤となるソフトウェアに採用された場合 • Google:2兆円 • マイクロソフト:5兆円
  • 97. 京速計算機に、仕分け人曰く • 「一時的にトップを取る意味はどれくらいある か」 • 「一番だから良いわけではない」 • 「ハードで世界一になればソフトにも波及とい うが分野で違う」
  • 98. 俺なりの答え • たしかによいサイエンスが伴わなければハードで 一時的に一番をとってもあまり意味がない  速いコアをたくさん並べるというのが一番性能がでるので、 ベクトル/メニイコア系の流れは(何度か)来るだろう 今ならメニイコア世界に一番乗りできる。俺たちが メニイコアコンピューティングという新学問、新産業 を興す。国産ソフト、人材を売れる。  一番=金を払えば得られる定量的アドバンテージと一番 乗り=誰よりも先んじて知っている定性的アドバンテージ は全然違う
  • 99. むすび • 情報論はずっとスカラー前提に発展してきた • スカラーの周波数はもうあまり上がらない。SiGe とかで上がっても、それをメニイコア化すれば もっと性能が出る並列情報論の必要性 • ハードが出てしまったいま、ハードがないから理論 がない⇔理論がないから使いたくない⇔使われないから ハードが出ないのスパイラルを打ち破りメニイコア を使おう。理論を作ろう。自然科学を研究しよう。 99
  • 100. GPUができなかったこと • 低レイテンシ通信、大容量メモリ・・・ • しかし、↑をはじめ、あらゆるHPCを使いこな すうえで、並列性の理解は大きな助けになる だろう。 • GPUはその発火点となりうる • GPUだけでなく、多様なハードウェアが未来に 生まれるように。それらを使いこなせるように。 みんなが驚き、喜ぶような発明をするために。 100
  • 103. 2009/09/30 発表 GPU Technologies Conference http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Archit ecture_Whitepaper.pdf 103
  • 104. Fermi Jen-Hsun Huang NVIDIA President&CEO 104
  • 105. Fermiとは • NVIDIAの第3世代汎用GPU • 汎用GPUに乗り出した第1世代(G80; 8800GTX…)、それを拡張した第2世代(G200, GTX 280)の時代に、数値計算ユーザーから 得たさまざまな意見をもとに抜本的な再設計 を施された • 自然科学に自然に使えるレベル 105
  • 106. おさらいーCPUとGPU Core i7 : 731万トランジスタ 106
  • 107. CPUとGPU Core i7Fermi : 30億トランジスタ : 731万トランジスタ 107
  • 108. 自然科学にとっての大きな進歩 Fermiの進歩 • 512コア、倍精度演算の完全サポート • じつは現時点で唯一の倍精度融合乗加算(MAD)をサポート するハードウェア • ある人の推測:単精度1.5TFlop/s, 倍精度768GFlop/s • 自動キャッシュの装備 • 全メモリにECC(誤り訂正符号)を標準装備 • GPU版ハイパースレッディング 「ベクトル計算機よりも高度な何か」に仕上がっ ている 108
  • 109. Streaming スケジューラ= TA Multiprocessor = 次にどの計算を するか決めて司 32core 令する。 Core=M1 整数・実数の四則演 算が可能、 倍精度もOK SFU= D3 sin, cos, hypsin, log, exp, erf, gammaなど特殊 関数を計算する x16 109
  • 110. Fermiのキャッシュ構造 メモリ=図書館 メモリL2 L1の 間は必要なデータが 自動的にコピーされる L2キャッシュ=研究 室の本棚 768KB L1キャッシュ=机の 上に広げた本 64KB いままでL2はなかった。 L1は16KBで、全手動だった。 レジスタ=計算用 紙 L2のおかげでSM間の通信が大幅 に高速化される。 プログラムも楽 になる。 110
  • 111. ECC(誤り訂正符号)について • 計算機は精度のよい宇宙線ディテクター • 計算機は数を電圧により2進数で表現しているんだが、あま りにも素子が小さいので、2次宇宙線が飛び込んできてビット を反転させることがある(メモリー内の数値が偶然に変化す る)。GPUはゲーム用なのであまり気にしてこなかった。 • ECC=典型的にはメモリ64bitにつき冗長8bit を付加。1ビットの過ちならどこが反転したの かまで含めて検出し、訂正できる。 • FermiではすべてのメモリにECCを装備 • もはやFermiでは宇宙線を観測できない!! 111
  • 112. スケジューラ= TA が2人いて、コア =M1が片手でも 空いていれば計 算をやらせる。 Core i7がやって いるhyper threading相当の 機能 カーネルの同時実行が可能に。一部のテーブルである計算をやってい る間のこりが全然別種類の計算を進めることができる。 112
  • 113. 「汎用GPU」から「GPU型計算機」へ • 他にも、「普通の」プログラムを実行する上で 必須の改良が加えられている。 • 普通のFortran, C, C++ プログラムが難なく倍 精度でFermi上で100~200倍の速度で動く 可能性がある(主に自動キャッシュのおかげ)。 • 性能を引き出すには、ものすごい数で(予想: 512コア×128スレッド/コア=65536並列)並列 化されたアルゴリズムを書かないといけない。 これは使う人の担当。そうすればFermiは全 力で応えてくれる。 113
  • 114. Fermiへの懸念と期待 • まあ、自社製品の広告だし • 倍精度が8倍速くなったって言ってるのはRadeonと比べても元が遅 かったから • どこまで公約どおり動くのかは使ってみるまで安心はできない • NVIDIA毎年赤字だとか歩留まりが製品化できないレベルだとかいう噂 もあるし発売日がずれたりしている • そもそもこんなもん本来のGPUとして売るには高機能すぎ、値段がどう なるのか心配 • がんばって世に出していただければGPU計算が 容易になり、数値自然科学は大いに恩恵をこう むるだろう。 正にNVIDIAの社運を賭けた汎用GPU型決戦並機 列計算 114
  • 115. まとめ GPUについて • 安くて速い。さまざまな計算が100倍速に • 1つのカードで数万並列の計算をしないと性能は生か せない。しかし自然科学にはそういう課題がたくさんあ るはず。 • 1つのカードに計算能力が濃集してることで、逆に通 信に余裕が出るケースもある 1つのGPUパソコンをつくってスパコンを手に入れよう! GPUクラスタを作れば世界の頂点が見える。 • たとえGPUが滅びても、こういう超多並列ハードウェア はこれからの計算機の主流の1つではありつづける だろう。 計算機にとらわれて目的を見失ってはこまりますが、たくさんある重要な課題の中から それぞれの計算機に適したものを選ぶことは必要かと。そのためにはある程度計算機 についても知っておくとよいかとおもいます。 いっしょにGPUを勉強して使いましょう!! 115