Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20130126 sc12-reading

439 views

Published on

  • Be the first to comment

  • Be the first to like this

20130126 sc12-reading

  1. 1. 13/01/26 研究室ミーティング 1 OPENACC とその周辺 2013 1/27 東京大学 中村研究室 薦田 登志矢
  2. 2. 13/01/26 研究室ミーティング 2 自己紹介 •  最近は, GPU向けの処理系の話に注力してます•  最近の研究内容 •  OpenACCのマルチGPUサポート •  CPUとGPUを協調動作させたときの消費電力モデリング•  昨年のSCには, 聴講参加してきました! NVIDIAのブース Key note IBM のブース
  3. 3. 13/01/26 研究室ミーティング 3 今日紹介する論文 •  「Early Evaluation of Directive-Based GPU Programming Models for Productive Exascale Computing 」 Seyong Lee, et al.•  Oak Ridge National Laboratoryの人 •  2009年に最初に, OpenMPからCUDA GPUを使えるようにした人 •  論文中で出てくるOpenMPCを作った.•  内容 •  OpenMPみたいな指示文ベースの処理系から, CUDA GPUを使うため に現状提案されている指示文の整理と評価, 今後の課題のまとめ
  4. 4. 13/01/26 研究室ミーティング 4 GPU Computing •  メニーコアプロセッサとしてのGPU •  データ並列アプリケーションを高性能・高効率に実行 Intel Sandy Bridge-E NVIDIA GTX680 8 Cores 1536 Cores
  5. 5. 13/01/26 研究室ミーティング 5 Five years from CUDA Launch •  GPUコンピューティングの普及 •  ケーススタディ •  See 「GPU Computing Gems」, Morgan Kauffman, 2012 •  Top 500 super computers •  52/500 のスパコンにGPUが搭載 (ICS, 2012)•  課題も浮き彫りに •  既存のプログラムをCUDAにポーティングするのはやっぱり大変 •  大量のコード書き換えが発生. •  CUDA APIに合わせるためだけの非本質的な書き換えも多い.
  6. 6. 13/01/26 研究室ミーティング 6 指示文を用いたGPUの利用 •  OpenMP •  CUDAと同様、データ並列ループがターゲット •  Weak Memory Consistency(ループに繰り越し依存がない) •  Incremental Parallelization •  既存コードのポーティングに適している•  GPU利用を可能にするOpenMP拡張の提案と評価が なされている最中 •  Academic •  「OpenMP to GPGPU」, PPoPP 2009 •  「OpenMPC」, SC’10 •  「Mint」, ICS’11 •  Industry •  PGI Accelerator Model, GPGPU 2010 •  OpenACC API is specified in 2012.
  7. 7. 13/01/26 研究室ミーティング 7 指示文ベースのGPUプログラミングいろいろ
  8. 8. 13/01/26 研究室ミーティング 8 指示文ベースのGPUプログラミングいろいろ Industry
  9. 9. 13/01/26 研究室ミーティング 9 指示文ベースのGPUプログラミングいろいろ Academic
  10. 10. 13/01/26 研究室ミーティング 10 指示文ベースのGPUプログラミングいろいろ CPU-GPU間のデータ移動を制御する指示文が特徴的
  11. 11. 13/01/26 研究室ミーティング 11 OpenACCのコード例 CPU-GPU間でのデータ移動を 明示的に記述
  12. 12. 13/01/26 研究室ミーティング 12 指示文ベースのGPUプログラミングいろいろ GPU上のオンチップのメモリ階層を利用するための 指示文が特徴的 (shared memory, register etc)
  13. 13. 13/01/26 研究室ミーティング 13 OpenMPCコード例 オンチップメモリの利用を 明示的に記述
  14. 14. 13/01/26 研究室ミーティング 14 実験内容 •  13個のOpenMPプログラムを, 前述の指示文を使ってGPU プログラムに書き換え •  2 kernel Benchmakr : JACOBI, SPMUL •  NAS Parallel Benchmark: EP, CG, FT •  Rodinia Benchmark : BACKPROP, BFS, CFD, SRAD, HOTSPOT, KEMEANS, LUD, NW•  移植作業に関する詳細な報告•  性能評価 •  GPU: TeslaM2090 512 streming processors •  データ転送時間込み •  Baseline: : Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行
  15. 15. 13/01/26 研究室ミーティング 15 移植コストの話 •  OpenMPに比べてできないことが多く、 結果としてコードの書 き換えが必要になるケースも多かった•  指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方 •  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる 商用のものはだいたい どれも似たような感じ
  16. 16. 13/01/26 研究室ミーティング 16 移植コストの話 •  OpenMPに比べてできないことが多く、 結果としてコードの書 き換えが必要になるケースも多かった•  指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方 •  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる データ移動の記述が 少なくすむので追加の 指示文自体は少ない
  17. 17. 13/01/26 研究室ミーティング 17 移植コストの話 •  OpenMPに比べてできないことが多く、 結果としてコードの書 き換えが必要になるケースも多かった•  指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方 •  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる データ移動の記述が 少なくすむので追加の 指示文自体は少ない
  18. 18. 13/01/26 研究室ミーティング 18 移植コストの話 •  デバッグが大変だった •  指示文ベースのプログラミングのデバッグは, 中で何が起きているか 分からないので大変 •  デバッグのための何らかの仕組みが必要不可欠
  19. 19. 13/01/26 研究室ミーティング 19 性能評価 GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行
  20. 20. 13/01/26 研究室ミーティング 20 性能評価 どの処理系もCUDA実装に対して, リーズナブルな 性能を達成している (平均で, 60 ~ 75 %くらい?) GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行
  21. 21. 13/01/26 研究室ミーティング 21 性能評価 オンチップのメモリ階層に対してチューニングして いるので, OpenMPCが良い結果を出している GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行
  22. 22. 13/01/26 研究室ミーティング 22 まとめ •  指示文を用いたGPU利用に関する現状報告 •  性能的にはまあまあ出る •  CUDA に対して, 60 ~ 75 % •  一部のアプリケーションでは, オンチップ最適化を可能にする指示文が必要 •  ポーティングコストについては改良の余地あり •  OpenMPに比べて機能的にできないことが多い. •  reductionやcriticalセクションのサポート, 細流度な同期 etc •  関数呼び出しの取り扱い •  なんらかのデバッグサポートは必須 •  指示文ベースのプログラミングのデバッグは, 中で何が起きているか 分からないので大変

×