4. 4
Quadro M6000 / GeForce GTX TITAN X
Compute Capability 5.2, 3072 CUDA Cores, 300 ~ GB/sec memory bandwidth
5. 5
TESLA M40
World’s Fastest Accelerator
for Deep Learning
0 1 2 3 4 5 6 7 8 9
Tesla M40
CPU
8x Faster
Caffe Performance
# of Days
Caffe Benchmark: AlexNet training throughput based on 20 iterations,
CPU: E5-2697v2 @ 2.70GHz. 64GB System Memory, CentOS 6.2
CUDA Cores 3072
Peak SP 7 TFLOPS
GDDR5 Memory 12 GB
Bandwidth 288 GB/s
Power 250W
Reduce Training Time from 8 Days to 1 Day
6. 6
TESLA M4
Highest Throughput
Hyperscale Workload
Acceleration
CUDA Cores 1024
Peak SP 2.2 TFLOPS
GDDR5 Memory 4 GB
Bandwidth 88 GB/s
Form Factor PCIe Low Profile
Power 50 – 75 W
Video
Processing
4x
Image
Processing
5x
Video
Transcode
2x
Machine
Learning
Inference
2x
H.264 & H.265, SD & HD
Stabilization and
Enhancements
Resize, Filter, Search,
Auto-Enhance
Preliminary specifications. Subject to change.
9. 9
レイテンシの短縮
間を埋めるために
複数のWarpが必要
Warp X
Warp A
Warp B
Warp C
Warp …
Warp …
Warp X
Warp A
Warp B
…
typ.11clock
間を埋めるには、より少ない
Warp数で足りる。
より低い並列度で
性能が出やすくなる。
Warp X
Warp A
Warp B
Warp …
Warp …
Warp A
Warp B
…
レイテンシが短縮された
Kepler Maxwell
57. 58
実行結果
処理 GPU 実行時間
CPU(4CORE)
実行時間
CPU(1CORE)
実行時間
CUDA初期化 85 ms - -
カーネルコンパイル (537 ms*) - -
デバイスメモリアロケート 8 ms - -
文字列(PI)のロード 333 ms 343 ms 364 ms
GPUへと文字列を転送 75 ms - -
検索パターン設定 1 ms - -
検索実行 42 ms 103 ms 613 ms
終了処理 43 ms - -
総計 587 ms 446 ms 977 ms
検索自体は速い
もっと速くしたい
転送はGPUのみ
短くしたい
* カーネルコンパイルは、事前に実行可能なため、処理時間の総計から省いています。
60. 61
実行結果 (最適化後)
処理
GPU 実行時間
(最適化後)
GPU 実行時間
CPU実行時間
(4 CORE)
CPU 実行時間
(1 CORE)
CUDA初期化 99 ms 85 ms - -
カーネルコンパイル (552 ms*) (537 ms*) - -
デバイスメモリアロケート 121 ms 8 ms - -
文字列(PI)のロード 74 ms 333 ms 343 ms 364 ms
GPUへと文字列を転送 45 ms 75 ms - -
検索パターン設定 < 1 ms 1 ms - -
検索実行 7 ms 42 ms 103 ms 613 ms
終了処理 93 ms 43 ms - -
総計 439 ms 587 ms 446 ms 977 ms
文字列検索
* カーネルコンパイルは、事前に実行可能なため、処理時間の総計から省いています。
61. 62
GPUの性能を有効に使うために
- GPU上の検索は、速い。
- GPU(最適化後) : 7 ms, CPU (4 core) 103 ms
- GPUへの文字列転送 : 45 ms
- CPUには存在しない処理であり、GPUの性能が活かせない要因となる。
- GPUを有効に使うには:
データの再利用などを考慮し、「転送量を少なく」、かつ、「GPU上での処理量を多く」する。
文字列検索
70. 71
実行結果 (最適化後)
処理
GPU 実行時間
(最適化後)
GPU 実行時間
CPU実行時間
(4 CORE)
CPU 実行時間
(1 CORE)
CUDA初期化 87 ms 101 ms - -
カーネルコンパイル 530 ms 534 ms - -
文字列(PI)のロード 193 ms 194 ms 344 ms 334 ms
デバイスメモリアロケート 1 ms 1 ms - -
GPUへと文字列を転送 45 ms 45 ms - -
ヒストグラム作成 13 ms 38 ms 101 ms 348 ms
デバイスメモリ解放 < 1 ms < 1 ms - -
終了処理 85 ms 85 ms - -
総計 954 ms 998 ms 445 ms 682 ms
文字列検索
71. 72
Java CUDA プログラミング
- JCudaの利用で、Javaで、CUDAアプリケーションを実装できる。
- CUDA Driver・Runtime APIを使用。
- 文字列検索、ヒストグラム作成とも、GPU上の処理は高速。
- 事前のカーネルコンパイル、メモリ転送量の削減など、工夫する必要あり。
(通常のCUDA C/C++プログラミングでも、同様の考慮を行っている。)
まとめ