SlideShare une entreprise Scribd logo
1  sur  111
Télécharger pour lire hors ligne
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]);
}

int main () {
  const int N = 500;
  thrust_vector<float> x(N), y(N);
  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        名古屋大学

    ??         予算            3800万円       1億7000万円

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




計算力    10PFlop/s      ~1PFlop/s      158TFlop/s
価格
       1230億円             ???        3800万円
P/C   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枚
                       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   80億円/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で何ができるだろうか?
• 分野により向き不向きはあるだろう
• 不向きと言われていたにもかかわらずアルゴ
  リズムをがらりと変えて成功した分野も
• 研究時間を食わない程度に試せばよい。速く
  なればラッキー
• 多様なハードウェアが出現し、それぞれの分
  野が必要とするスパコンをカスタム設計でき
  る未来が望ましい。

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




                       フォールディングミリ秒/結合の振動フェムト秒
星雲の寿命1000万年/星の振動5分     =1012ステップ
=1012ステップ              アミノ酸を球やバッグで近似したり、
星が形成しはじめた時点で「星のモデル」    溶媒水の効果を簡易化したりしている
に置き換え、タイムステップを軽減       水素結合1つが大きな部品を動かしたり、
                       簡単ではない
大スケール現象に、微小で高速な震動が     階層性の科学が必要!
与える影響は、統計的なもの。
真に1012ステップ必要な計算はあるか?
                                           85
GPU利用が難しい・・・と言われていたが
    実現してしまった例:粉体
            地球シミュレーター




           阪口 秀    西浦 泰介
          GPUの専門家にすら、移植は
          困難といわれていた。
          まったく新しいアルゴリズム
          にすることでGPUでピークに近
          い性能を出すことに成功!
                            86
GPUの勃興は何をもたらすか
• GPU計算機は通信ハードウェアコストが副次的
高性能通信ハードウェアへの需要が高まる
低レイテンシ、高帯域幅ハードウェアが出現?
ライフサイエンスの人など、いろんな人が喜
  ぶ!(宇宙の人もよろこぶ)

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

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




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




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




               90
認識の並列性
         • 140億コア(?)トランジス
           タ(?)×500Hz(?) =
           7TFlops(ピーク性能?)
         • 実効性能~0.01Flops

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


   cv




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

        97
5.次世代GPUコンピュータ、Fermi



                       98
2009/09/30 発表
          GPU Technologies Conference




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

                                                                                   99
Fermi




   Jen-Hsun Huang
NVIDIA President&CEO




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


                                101
おさらいーCPUとGPU




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




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




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



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

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

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

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


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




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

Contenu connexe

Tendances

2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス智啓 出川
 
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)智啓 出川
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)智啓 出川
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア智啓 出川
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜京大 マイコンクラブ
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介Preferred Networks
 
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
2015年度GPGPU実践基礎工学 第8回 並列計算の概念(プロセスとスレッド)2015年度GPGPU実践基礎工学 第8回 並列計算の概念(プロセスとスレッド)
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)智啓 出川
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術智啓 出川
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門Yosuke Onoue
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectComputedasyprocta
 
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)智啓 出川
 
関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料Kimikazu Kato
 
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也Preferred Networks
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール智啓 出川
 
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) 智啓 出川
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ智啓 出川
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたYosuke Onoue
 

Tendances (20)

2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
2015年度先端GPGPUシミュレーション工学特論 第1回 先端シミュレーションおよび産業界におけるGPUの役割
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
 
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
2015年度GPGPU実践プログラミング 第15回 GPU最適化ライブラリ
 
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用(高度な最適化)
2015年度先端GPGPUシミュレーション工学特論 第13回 数値流体力学への応用 (高度な最適化)
 
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境(OpenCL)
2015年度GPGPU実践基礎工学 第15回 GPGPU開発環境 (OpenCL)
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
 
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
 
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
 
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
2015年度GPGPU実践基礎工学 第8回 並列計算の概念(プロセスとスレッド)2015年度GPGPU実践基礎工学 第8回 並列計算の概念(プロセスとスレッド)
2015年度GPGPU実践基礎工学 第8回 並列計算の概念 (プロセスとスレッド)
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
2015年度GPGPU実践プログラミング 第8回 総和計算(高度な最適化)
 
関東GPGPU勉強会資料
関東GPGPU勉強会資料関東GPGPU勉強会資料
関東GPGPU勉強会資料
 
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
[GTCJ2018] Optimizing Deep Learning with Chainer PFN得居誠也
 
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
2015年度GPGPU実践プログラミング 第6回 パフォーマンス解析ツール
 
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)
 
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第4回 CPUのアーキテクチャ
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 

Similaire à 【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来

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
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつTakuji Tahara
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012Takuro Iizuka
 
Boost study14
Boost study14Boost study14
Boost study14fjnl
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報ReNom User Group
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速するKohei KaiGai
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたRyo Sakamoto
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントCloudera Japan
 
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用智啓 出川
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜Taro Matsuzawa
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会Kimikazu Kato
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2Computational Materials Science Initiative
 

Similaire à 【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来 (20)

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 大阪会場
 
Isca13 study
Isca13 studyIsca13 study
Isca13 study
 
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の同時実行機能
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1
 
20130126 sc12-reading
20130126 sc12-reading20130126 sc12-reading
20130126 sc12-reading
 
CatBoost on GPU のひみつ
CatBoost on GPU のひみつCatBoost on GPU のひみつ
CatBoost on GPU のひみつ
 
NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012NVIDIA Japan Seminar 2012
NVIDIA Japan Seminar 2012
 
Boost study14
Boost study14Boost study14
Boost study14
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
計算機理論入門01
計算機理論入門01計算機理論入門01
計算機理論入門01
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
GPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみたGPGPU deいろんな問題解いてみた
GPGPU deいろんな問題解いてみた
 
Hadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイントHadoopのシステム設計・運用のポイント
Hadoopのシステム設計・運用のポイント
 
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
2015年度先端GPGPUシミュレーション工学特論 第14回 複数GPUの利用
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
2012-03-08 MSS研究会
2012-03-08 MSS研究会2012-03-08 MSS研究会
2012-03-08 MSS研究会
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 

Plus de 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
 
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
 
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
 

Plus de 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講演
 
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東大大学院「 融合情報学特別講義Ⅲ」)
 
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
 

【旧版】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]); } int main () { const int N = 500; thrust_vector<float> x(N), y(N); 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 名古屋大学 ?? 予算 3800万円 1億7000万円 170Tflop/s ピーク性能 700Tflop/s 建設中 (単精度) ??? ?? 消費電力 150kW ??? 70
  • 71. 京速 v.s. Cray v.s. GPU 計算力 10PFlop/s ~1PFlop/s 158TFlop/s 価格 1230億円 ??? 3800万円 P/C 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枚 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 80億円/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で何ができるだろうか? • 分野により向き不向きはあるだろう • 不向きと言われていたにもかかわらずアルゴ リズムをがらりと変えて成功した分野も • 研究時間を食わない程度に試せばよい。速く なればラッキー • 多様なハードウェアが出現し、それぞれの分 野が必要とするスパコンをカスタム設計でき る未来が望ましい。 83
  • 84. GPUが使いにくい例:ライフサイエンス • MDのタイムステップ(Δ t) は1フェムト(10-15)秒程度 が限界。←タンパク質の場合、 最も速い運動である結合の伸縮 は10-14秒程度の周期であるため、 Δ tは1フェムト秒程度が選ばれ る。 • タンパク質のフォールディング時 間はミリ秒 • 1012ステップがどうしても必要! 安藤格士さんのスライドより • 原子数が決まっているため無限 タンパク質304+水原子7,377= に並列化できるわけではない。 原子数7,681  低レイテンシ、高速ハードウェア 巨大タンパク質複合体は~MDa が欲しい!! (メガダルトン)=数十万原子くらい 84
  • 85. GPUが使いにくい例:多くのタイムス テップが必要な計算 星形成 タンパク質 分子シミュレーション フォールディングミリ秒/結合の振動フェムト秒 星雲の寿命1000万年/星の振動5分 =1012ステップ =1012ステップ アミノ酸を球やバッグで近似したり、 星が形成しはじめた時点で「星のモデル」 溶媒水の効果を簡易化したりしている に置き換え、タイムステップを軽減 水素結合1つが大きな部品を動かしたり、 簡単ではない 大スケール現象に、微小で高速な震動が 階層性の科学が必要! 与える影響は、統計的なもの。 真に1012ステップ必要な計算はあるか? 85
  • 86. GPU利用が難しい・・・と言われていたが 実現してしまった例:粉体 地球シミュレーター 阪口 秀 西浦 泰介 GPUの専門家にすら、移植は 困難といわれていた。 まったく新しいアルゴリズム にすることでGPUでピークに近 い性能を出すことに成功! 86
  • 88. GPUは安くありつづけるだろうか • ハードの価格=(初期投資)÷(売れた数) • GPUとしてはオーバースペックなFermiやSCC やその他メニイコア演算ユニットが、パソコン レベルまで普及しなければ、安くて速い計算 機が手に入らなくなるかも・・・ 88
  • 89. メニイコアがパソコンレベルに 普及すると私が信じる理由 コンピューターと人間 何が違う? 89
  • 90. 自然界の並列性 • 宇宙には数千億の銀河 • 銀河には数兆の星 • 地球には無数の生命 • 人には60兆の細胞 • 脳細胞は140億個 すべてが同時に動いている 90
  • 91. 認識の並列性 • 140億コア(?)トランジス タ(?)×500Hz(?) = 7TFlops(ピーク性能?) • 実効性能~0.01Flops • でも、とても多機能、柔 軟、ディペンダブル • スカラー性能はなくても ↑7TFlops 膨大な並列性があれ Priceless ば可能になるタスクの 存在を強く示唆 7TFlops 40万円 シミュレーションしかできない 91
  • 92. 人間が入力したデータの処理から、 世界をじかに認識し、働きかける情報論へ • 今あるアプリはメニイコアでただちに速くなるわけで はない。だから、メニイコアが無用 • と思う人は見逃している:メニイコアでこそ動くような、 普及を後押しするような、今は想像もできないような アプリが生まれる可能性を!! • 今想像できるのは・・・実世界認識、人工知能とか? cv 92
  • 93. GPUコンピューティング・メニーコアコンピュー ティングの産業規模のオーダー評価 スパコンにしか使われなかった場合 • Cray:62億円(年商) プロが使うソフトウェアができた場合 • Dassault Systems社(自動車CAD):1790億円 • Adobe社(フラッシュ):1660億円 ゲームに使われた場合 • 任天堂:1兆円 社会基盤となるソフトウェアに採用された場合 • Google:2兆円 • マイクロソフト:5兆円
  • 94. 京速計算機に、仕分け人曰く • 「一時的にトップを取る意味はどれくらいある か」 • 「一番だから良いわけではない」 • 「ハードで世界一になればソフトにも波及とい うが分野で違う」
  • 95. 俺なりの答え • たしかによいサイエンスが伴わなければハードで 一時的に一番をとってもあまり意味がない  速いコアをたくさん並べるというのが一番性能がでるので、 ベクトル/メニイコア系の流れは(何度か)来るだろう 今ならメニイコア世界に一番乗りできる。俺たちが メニイコアコンピューティングという新学問、新産業 を興す。国産ソフト、人材を売れる。 一番=定量的アドバンテージと一番乗り=定性的 アドバンテージは全然違う
  • 96. むすび • 情報論はずっとスカラー前提に発展してきた • スカラーの周波数はもうあまり上がらない。SiGe とかで上がっても、それをメニイコア化すれば もっと性能が出る並列情報論の必要性 • ハードが出てしまったいま、ハードがないから理論 がない⇔理論がないから使いたくない⇔使われないから ハードが出ないのスパイラルを打ち破りメニイコア を使おう。理論を作ろう。自然科学を研究しよう。 • GPUだけでなく、多様なハードウェアが未来に生まれ るように。それらを使いこなせるように。みんなが驚き、 喜ぶような発明をするために。 96
  • 99. 2009/09/30 発表 GPU Technologies Conference http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Archit ecture_Whitepaper.pdf 99
  • 100. Fermi Jen-Hsun Huang NVIDIA President&CEO 100
  • 101. Fermiとは • NVIDIAの第3世代汎用GPU • 汎用GPUに乗り出した第1世代(G80; 8800GTX…)、それを拡張した第2世代(G200, GTX 280)の時代に、数値計算ユーザーから 得たさまざまな意見をもとに抜本的な再設計 を施された • 自然科学に自然に使えるレベル 101
  • 102. おさらいーCPUとGPU Core i7 : 731万トランジスタ 102
  • 103. CPUとGPU Core i7Fermi : 30億トランジスタ : 731万トランジスタ 103
  • 104. 自然科学にとっての大きな進歩 Fermiの進歩 • 512コア、倍精度演算の完全サポート • じつは現時点で唯一の倍精度融合乗加算(MAD)をサポート するハードウェア • ある人の推測:単精度1.5TFlop/s, 倍精度768GFlop/s • 自動キャッシュの装備 • 全メモリにECC(誤り訂正符号)を標準装備 • GPU版ハイパースレッディング 「ベクトル計算機よりも高度な何か」に仕上がっ ている 104
  • 105. Streaming スケジューラ= TA Multiprocessor = 次にどの計算を するか決めて司 32core 令する。 Core=M1 整数・実数の四則演 算が可能、 倍精度もOK SFU= D3 sin, cos, hypsin, log, exp, erf, gammaなど特殊 関数を計算する x16 105
  • 106. Fermiのキャッシュ構造 メモリ=図書館 メモリL2 L1の 間は必要なデータが 自動的にコピーされる L2キャッシュ=研究 室の本棚 768KB L1キャッシュ=机の 上に広げた本 64KB いままでL2はなかった。 L1は16KBで、全手動だった。 レジスタ=計算用 紙 L2のおかげでSM間の通信が大幅 に高速化される。 プログラムも楽 になる。 106
  • 107. ECC(誤り訂正符号)について • 計算機は精度のよい宇宙線ディテクター • 計算機は数を電圧により2進数で表現しているんだが、あま りにも素子が小さいので、2次宇宙線が飛び込んできてビット を反転させることがある(メモリー内の数値が偶然に変化す る)。GPUはゲーム用なのであまり気にしてこなかった。 • ECC=典型的にはメモリ64bitにつき冗長8bit を付加。1ビットの過ちならどこが反転したの かまで含めて検出し、訂正できる。 • FermiではすべてのメモリにECCを装備 • もはやFermiでは宇宙線を観測できない!! 107
  • 108. スケジューラ= TA が2人いて、コア =M1が片手でも 空いていれば計 算をやらせる。 Core i7がやって いるhyper threading相当の 機能 カーネルの同時実行が可能に。一部のテーブルである計算をやってい る間のこりが全然別種類の計算を進めることができる。 108
  • 109. 「汎用GPU」から「GPU型計算機」へ • 他にも、「普通の」プログラムを実行する上で 必須の改良が加えられている。 • 普通のFortran, C, C++ プログラムが難なく倍 精度でFermi上で100~200倍の速度で動く 可能性がある(主に自動キャッシュのおかげ)。 • 性能を引き出すには、ものすごい数で(予想: 512コア×128スレッド/コア=65536並列)並列 化されたアルゴリズムを書かないといけない。 これは使う人の担当。そうすればFermiは全 力で応えてくれる。 109
  • 110. Fermiへの懸念と期待 • まあ、自社製品の広告だし • 倍精度が8倍速くなったって言ってるのはRadeonと比べても元が遅 かったから • どこまで公約どおり動くのかは使ってみるまで安心はできない • NVIDIA毎年赤字だとか歩留まりが製品化できないレベルだとかいう噂 もあるし発売日がずれたりしている • そもそもこんなもん本来のGPUとして売るには高機能すぎ、値段がどう なるのか心配 • がんばって世に出していただければGPU計算が 容易になり、数値自然科学は大いに恩恵をこう むるだろう。 正にNVIDIAの社運を賭けた汎用GPU型決戦並機 列計算 110
  • 111. まとめ GPUについて • 安くて速い。さまざまな計算が100倍速に • 1つのカードで数万並列の計算をしないと性能は生か せない。しかし自然科学にはそういう課題がたくさんあ るはず。 • 1つのカードに計算能力が濃集してることで、逆に通 信に余裕が出るケースもある 1つのGPUパソコンをつくってスパコンを手に入れよう! GPUクラスタを作れば世界の頂点が見える。 • たとえGPUが滅びても、こういう超多並列ハードウェア はこれからの計算機の主流の1つではありつづける だろう。 計算機にとらわれて目的を見失ってはこまりますが、たくさんある重要な課題の中から それぞれの計算機に適したものを選ぶことは必要かと。そのためにはある程度計算機 についても知っておくとよいかとおもいます。 いっしょにGPUを勉強して使いましょう!! 111