Top Banner
OPENACC とその周辺 2013 1/27 東京大学 中村研究室 薦田 登志矢 13/01/26 1 研究室ミーティング
22

20130126 sc12-reading

Aug 04, 2015

Download

Documents

Toshiya Komoda
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 20130126 sc12-reading

OPENACC とその周辺 2013 1/27 東京大学 中村研究室 薦田 登志矢

13/01/26 1 研究室ミーティング

Page 2: 20130126 sc12-reading

自己紹介

• 最近は, GPU向けの処理系の話に注力してます • 最近の研究内容

•  OpenACCのマルチGPUサポート •  CPUとGPUを協調動作させたときの消費電力モデリング

• 昨年のSCには, 聴講参加してきました!

13/01/26 研究室ミーティング 2

NVIDIAのブース Key note IBM のブース

Page 3: 20130126 sc12-reading

今日紹介する論文

•  「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を使うため

に現状提案されている指示文の整理と評価, 今後の課題のまとめ

13/01/26 研究室ミーティング 3

Page 4: 20130126 sc12-reading

GPU Computing • メニーコアプロセッサとしてのGPU

•  データ並列アプリケーションを高性能・高効率に実行

Intel Sandy Bridge-E 8 Cores

NVIDIA GTX680 1536 Cores

13/01/26 4 研究室ミーティング

Page 5: 20130126 sc12-reading

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に合わせるためだけの非本質的な書き換えも多い.

13/01/26 5 研究室ミーティング

Page 6: 20130126 sc12-reading

指示文を用いた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.

13/01/26 6 研究室ミーティング

Page 7: 20130126 sc12-reading

指示文ベースのGPUプログラミング いろいろ

13/01/26 研究室ミーティング 7

Page 8: 20130126 sc12-reading

指示文ベースのGPUプログラミング いろいろ

13/01/26 研究室ミーティング 8

Industry

Page 9: 20130126 sc12-reading

指示文ベースのGPUプログラミング いろいろ

13/01/26 研究室ミーティング 9

Academic

Page 10: 20130126 sc12-reading

指示文ベースのGPUプログラミング いろいろ

13/01/26 研究室ミーティング 10

CPU-GPU間のデータ移動を制御する指示文が特徴的

Page 11: 20130126 sc12-reading

OpenACCのコード例

13/01/26 研究室ミーティング 11

CPU-GPU間でのデータ移動を 明示的に記述

Page 12: 20130126 sc12-reading

指示文ベースのGPUプログラミング いろいろ

13/01/26 研究室ミーティング 12

GPU上のオンチップのメモリ階層を利用するための 指示文が特徴的 (shared memory, register etc)

Page 13: 20130126 sc12-reading

OpenMPCコード例

13/01/26 研究室ミーティング 13

オンチップメモリの利用を 明示的に記述

Page 14: 20130126 sc12-reading

実験内容

•  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での実行

13/01/26 研究室ミーティング 14

Page 15: 20130126 sc12-reading

移植コストの話

• OpenMPに比べてできないことが多く、 結果としてコードの書き換えが必要になるケースも多かった

• 指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方

•  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる

13/01/26 研究室ミーティング 15

商用のものはだいたい どれも似たような感じ

Page 16: 20130126 sc12-reading

移植コストの話

• OpenMPに比べてできないことが多く、 結果としてコードの書き換えが必要になるケースも多かった

• 指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方

•  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる

13/01/26 研究室ミーティング 16

データ移動の記述が 少なくすむので追加の 指示文自体は少ない

Page 17: 20130126 sc12-reading

移植コストの話

• OpenMPに比べてできないことが多く、 結果としてコードの書き換えが必要になるケースも多かった

• 指示文の仕様の微妙な違いでポーティングコストが変わる •  GPU化対称コード内で関数呼び出しできるか? •  CPU-GPU間のデータ移動の記述の仕方

•  現状のOpenACCでは, 完全にユーザー任せで結構大変 •  OpenMPCでは関数間のデータフロー解析を頑張ることで結構自動化できる

13/01/26 研究室ミーティング 17

データ移動の記述が 少なくすむので追加の 指示文自体は少ない

Page 18: 20130126 sc12-reading

移植コストの話

• デバッグが大変だった •  指示文ベースのプログラミングのデバッグは, 中で何が起きているか

分からないので大変 •  デバッグのための何らかの仕組みが必要不可欠

13/01/26 研究室ミーティング 18

Page 19: 20130126 sc12-reading

性能評価

13/01/26 研究室ミーティング 19

GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行

Page 20: 20130126 sc12-reading

性能評価

13/01/26 研究室ミーティング 20

GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行

どの処理系もCUDA実装に対して, リーズナブルな 性能を達成している (平均で, 60 ~ 75 %くらい?)

Page 21: 20130126 sc12-reading

性能評価

13/01/26 研究室ミーティング 21

GPU: TeslaM2090 512 streming processors (データ転送も込みの性能) Baseline: Intel Xeon X5660 CPU(2.8GHz), 1CPUでの実行

オンチップのメモリ階層に対してチューニングして いるので, OpenMPCが良い結果を出している

Page 22: 20130126 sc12-reading

まとめ

• 指示文を用いたGPU利用に関する現状報告 •  性能的にはまあまあ出る

•  CUDA に対して, 60 ~ 75 % •  一部のアプリケーションでは, オンチップ最適化を可能にする指示文が必要

•  ポーティングコストについては改良の余地あり •  OpenMPに比べて機能的にできないことが多い.

•  reductionやcriticalセクションのサポート, 細流度な同期 etc •  関数呼び出しの取り扱い

•  なんらかのデバッグサポートは必須 •  指示文ベースのプログラミングのデバッグは, 中で何が起きているか

分からないので大変

13/01/26 研究室ミーティング 22