在庫管理問題の動的計画法による 解法とCUDA を用いた高速化

Slides:



Advertisements
Similar presentations
1 広島大学 理学研究科 尾崎 裕介 石川 健一. 1. Graphic Processing Unit (GPU) とは? 2. Nvidia CUDA programming model 3. GPU の高速化 4. QCD with CUDA 5. 結果 6. まとめ 2.
Advertisements

G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
CPU/GPUを協調利用する ソフトウェア開発環境
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
ラスタグラフィックス (raster graphics)
近似アルゴリズム 第10章 終了時刻最小化スケジューリング
全体ミーティング (4/25) 村田雅之.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
局所探索に基づく 原子炉燃料装荷パターンの最適化
AllReduce アルゴリズムによる QR 分解の精度について
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
3次元剛体運動の理論と シミュレーション技法
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
Yuri Y. Boykov Marie-Pierre Jolly
アスペクト指向プログラミングを用いたIDSオフロード
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
正方行列向け特異値分解の CUDAによる高速化
計算アルゴリズム 計算理工学専攻 張研究室 山本有作.
計算アルゴリズム 計算理工学専攻 張研究室 山本有作.
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
サポートベクターマシン によるパターン認識
応用数学 計算理工学専攻 杉原研究室 山本有作.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
リモートホストの異常を検知するための GPUとの直接通信機構
仮想メモリを用いた VMマイグレーションの高速化
第14章 モデルの結合 修士2年 山川佳洋.
第7回 条件による繰り返し.
通信機構合わせた最適化をおこなう並列化ンパイラ
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
航空エンジンの翼列周り流れ解析のメニーコアシステム向け最適化
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
連続領域におけるファジィ制約充足問題の 反復改善アルゴリズムによる解法 Solving by heuristic repair Algorithm of the Fuzzy Constraint Satisfaction Problems with Continuous Domains 北海道大学.
ファジィ制約充足問題への 連続領域の導入 Introducing continuous domains to
数独の解生成と 解に対する番号付け 理学部 情報科学科 渡辺研究室 戸神星也.
GPGPUによる 飽和高価値 アイテム集合マイニング
バイトコードを単位とするJavaスライスシステムの試作
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
7.一次元ダクトの消音制御系における低コスト化
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第4章 識別部の設計 4-5 識別部の最適化 発表日:2003年5月16日 発表者:時田 陽一
ナップサック問題 クマさん人形をめぐる熱いドラマの結末.
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
マイグレーションを支援する分散集合オブジェクト
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
ガイダンス 電子計算機 電気工学科 山本昌志 1E
「マイグレーションを支援する分散集合オブジェクト」
ポッツスピン型隠れ変数による画像領域分割
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
半正定値計画問題(SDP)の 工学的応用について
■ 背景 ■ 目的と作業内容 分子動力学法とフェーズフィールド法の融合による 粒成長の高精度解析法の構築 jh NAH
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
実験計画法 Design of Experiments (DoE)
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
目次 はじめに 収束性理論解析 数値実験 まとめ 特異値計算のための dqds 法 シフトによる収束の加速
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
応用数学 計算理工学専攻 張研究室 山本有作.
大規模粒子法による大型クルーズ船の浸水解析
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
混合ガウスモデル Gaussian Mixture Model GMM
Presentation transcript:

在庫管理問題の動的計画法による 解法とCUDA を用いた高速化 SACSIS2008 2008年6月12日 李天*1 河畠工*1 山本有作*1 畝山多加志*2 張紹良*1 *1 名古屋大学大学院工学研究科 計算理工学専攻 *2 京都大学化学研究所

もくじ 1. はじめに 2. 問題設定 3. 動的計画法による解法 4. GPGPUのための統合環境CUDA 1. はじめに 2. 問題設定 3. 動的計画法による解法 4. GPGPUのための統合環境CUDA 5. 動的計画法のCUDAによる高速化 6. 性能評価 7. おわりに

1. はじめに GPU(Graphics Processing Unit)の高速化 1. はじめに GPU(Graphics Processing Unit)の高速化 CPUを大きく上回るペースで演算性能が向上 グラフィックスメモリも大容量化・高速化 nVIDIA社 GeForce8800GTX ・ 128個のストリーミングプロセッサ ・ 演算性能: 345GFLOPS(単精度) ・ メモリ: 768MB ・ メモリバンド幅: 86.4GB/s GPUを汎用の数値計算に使うGPGPU(General-Purpose GPU)が注目を集める

従来のGPGPUの問題点 特殊なプログラミング手法が必要 GPUの内部構造に関する情報が乏しい グラフィックスAPI ストリーム言語 GPUの内部構造に関する情報が乏しい データアクセス(特に書き込み)に関する強い制限 プログラム開発者にとって敷居が高い

GPGPUのための統合環境CUDA nVIDIA社のGPU上でGPGPUを実現するため,2006年に同社が発表した統合プログラミング環境 特徴 標準のC言語 + 簡単な拡張でGPUのプログラミングが可能 標準により近いメモリモデル スレッド並列による多数のストリーミングプロセッサの利用 nVIDIA社の最新GPU向けの最適化機能 チューニングのための情報が豊富 詳細なマニュアル Web上のフォーラム GPUの性能を引き出すプログラミングが,従来に比べ 格段に簡単化

CUDAの利用例 行列計算 FFT 重力多体計算 分子軌道法 気象予測 画像処理 データマイニング バイオインフォマティクス Cf. http://www.nvidia.com/object/cuda_showcase.html#apps

本研究の目的 ある組合せ最適化問題をCUDAで高速化 動的計画法を用いた最適化が,GPU向きの計算であることを明らかにする 企業の現場で現れる在庫管理計画問題 動的計画法による解法をベースとする 実用的な時間での求解を目指す 動的計画法を用いた最適化が,GPU向きの計算であることを明らかにする 多数の応用(ポートフォリオ最適化,オプション価格評価など)

2. 問題設定 在庫管理計画問題 N日の間,毎日トラックで来る原料を,K個ある倉庫のどれかに搬入 2. 問題設定 在庫管理計画問題 N日の間,毎日トラックで来る原料を,K個ある倉庫のどれかに搬入 各倉庫中の原料は,毎日少しずつ搬出され,工場で消費される。 各倉庫の充填率が上下限に近づきすぎないよう搬入先を予め計画 充填率の変化の例 (K=5,N=90の場合)

数学的定式化 変数と定数 充填率の変化を表す式 目的関数 ペナルティ関数 0% 50% 100% min {j(n)}n=1N

問題の特徴と解法の候補 問題の特徴 解法の候補 独立変数 {j(n)}n=1N が整数値のみを取る組合せ最適化問題 K=5,N=90 (実問題のサイズ)の場合,可能な組合せは 590 と膨大 解法の候補 0-1整数計画法 メタヒューリスティクス 動的計画法

3. 動的計画法による解法 n日目以降の部分目的関数 n日目以降に最適戦略を取った場合の部分目的関数(価値関数) 3. 動的計画法による解法 n日目以降の部分目的関数 n日目以降に最適戦略を取った場合の部分目的関数(価値関数) G(n) の満たす漸化式(Bellman方程式) Bellman方程式を用いて,各状態に対する G(n) と j(n) を最終日から遡って決めていくことが可能(後ろ向き計算)

動的計画法の図解(K=2の場合) <N–1日目> ・各格子点において次の処理を行う。 ②ペナルティ値の少ない方の選択肢を選ぶ。 ③その格子点における G(N–1) として、最適な選択とともに保存 100% 50% 1日目 0% 50% 100% N-2 日目 N-1 日目 N 日目

動的計画法の図解(K=2の場合) <N–2日目> ・各格子点において次の処理を行う。 ① 各選択に対してN–1日目の充填率( , )を計算 ④ ②+③の小さい方を選ぶ。 ⑤ その格子点における G(N–2) として、最適な選択とともに保存 1日目 N-2 日目 N-1 日目 N 日目

離散化と補間 離散化 補間 計算を行うため,充填率の空間(状態空間)を格子に分割 以下,各方向の格子点数をLとする。 各選択に対して計算したN–1日目の充填率 (   ,  )は格子点上にあるとは限らない。 N–1日目以降の目的関数を求める際は,隣接する2K個の格子点での目的関数値を用いて多重線形補間を行う。 (N-2日目) (N-1日目)

最適計画の作成 ② ① 時間軸 <前向き計算> ・最終日から初日まで遡って計算すると,全ての日,全ての格子点について最適な選択が与えられる。 ・その後,初期の充填率から出発し,順方向に進んで各日の選択を決めていく。 ・格子点上にない点の場合は最も近い格子点での最適な選択を利用 1日目 2日目 3日目 N・最終日 ② ①

状態空間の次元縮小 充填率の変化を表す式 について,kとnに関する和を取り, を用いると,   右辺は定数だから,これはK個の充填率のうちK–1個のみが独立であることを示す。 これを用いて,状態空間の次元を1だけ縮小可能

アルゴリズム(K=4, 後ろ向き計算の部分のみ) 時間に関する後ろ向きループ 格子点に関するK–1重ループ K通りの選択肢のうちで最適な選択 j を求め, j とそのときの G(n) と を保存 (各格子点ごとに完全に独立な計算) 計算量: O(NLK–1K2)

動的計画法による解法の特徴 計算量が O(NLK–1K2),メモリ量が O(LK–1) と大きい 並列性は極めて高い 計算は単精度で十分 K=5,N=90,L=80 の実問題の場合,Core2Duo で90分程度 実務上は数分程度で計算できることが望ましい 所要メモリは約400MB 並列性は極めて高い LK–1 個の格子点での計算が完全並列 計算は単精度で十分 主要な誤差は離散化誤差 丸め誤差は無視できる メモリバンド幅に対する要求が高い 計算量の大部分を占める補間演算では,演算量とアクセス回数は同程度

4. GPGPUのための統合環境CUDA CUDAのプログラミングモデル CPUのmain関数から,GPUで実行されるカーネルを呼び出す CPUとGPUのメモリ空間は別々。cudaMemcpy関数でデータ転送 ブロックとスレッドによる並列化 多数のスレッドを時分割で実行し,GPUメモリのレイテンシを隠蔽

CUDAのメモリモデル メモリ階層 カーネル中でのスレッド間同期 全スレッドでの共有メモリ ブロックごとの共有メモリ グローバルメモリ 定数メモリ(キャッシュあり) テクスチャメモリ(キャッシュあり) ブロックごとの共有メモリ スレッド毎のローカルメモリ レジスタ カーネル中でのスレッド間同期 ブロック内では同期可能 ブロック間では同期不可 本応用では問題なし

チューニングの指針 データ参照の局所性向上 スレッド数をできるだけ多くする CPUメモリとの間のデータ転送の最小化 IF文の排除 共有メモリ,定数メモリ,レジスタの活用 スレッド数をできるだけ多くする CPUメモリとの間のデータ転送の最小化 IF文の排除 スレッドは32個単位でSIMD形式で並列実行 IF文は両方の分岐が逐次的に実行される メモリアクセスの連続化 連続する番号を持つスレッドが連続領域をアクセスするようにする メモリアラインメントの条件を満たすようにする

5. 動的計画法のCUDAによる高速化 動的計画法とCUDAの親和性 動的計画法の特徴 CUDAの特徴 大きな所要メモリ(~400MB) 大容量グラフィックメモリ (8800GTX で 768MB) 高い並列性(~804) メモリレイテンシ隠蔽のため,スレッド数≧1000が必要 計算は単精度で十分 計算は単精度のみ(現在) メモリバンド幅への高い要求 他のアクセラレータに比べ格段に高いメモリバンド幅(Byte/FlopはClearSpeed の4倍程度) 動的計画法は極めてCUDA(GPGPU)向きのアルゴリズム

CUDAでの実装 GPUによる実行部分 変数・定数のメモリ空間への割り当て ブロックとスレッドによる並列化 カーネルをN回呼ぶことで,後ろ向き計算を完了 変数・定数のメモリ空間への割り当て 定数 → 定数メモリ,共有メモリ G(n),j → グローバルメモリ スレッド毎の中間変数 → レジスタ ブロックとスレッドによる並列化 格子点に関するK–1重ループのうち,最内側の2重ループをスレッド並列化に利用 (→ メモリアクセスの連続化) その一つ外側のループをブロック並列化に利用 CPUメモリへの転送は,配列 j のみ(最大1.8GB程度)

6. 性能評価 評価条件 評価環境 提案アルゴリズムをCUDAで実装 デュアルコアCPU上での C+pthread による実装と性能を比較 6. 性能評価 評価条件 提案アルゴリズムをCUDAで実装 デュアルコアCPU上での C+pthread による実装と性能を比較 最大規模の問題(倉庫数 K=5,期間 N=90)で評価 評価環境

GPUによる速度向上効果 条件と結果 スレッドの数と形状(2次元)は実験的に求めた最適値を使用 CPU(2コア使用)に対し,最大15.6倍の高速化 6分で最適解を計算 計算時間 問題サイズ

得られた最適解 条件が厳しくない問題 条件が厳しい問題(倉庫の容量を最大限に利用) L=80で初めて良好な解が得られる L=60 L=60

スレッドの数と形状の最適化 スレッド形状(2次元)の候補 結果 格子サイズに合わせる(無駄なスレッドをなくす) 第1方向を32の倍数とする(メモリアラインメントの重視) 結果 どちらかが常に良いとは言えないが,メモリアラインメントを重視した場合は安定した性能が得られる。

7. おわりに 本研究のまとめ 今後の課題 在庫管理計画問題の動的計画法による解法を,CUDAを用いてGPU上で実装した。 7. おわりに 本研究のまとめ 在庫管理計画問題の動的計画法による解法を,CUDAを用いてGPU上で実装した。 GeForce8800GTX を用いた評価では,最大規模の問題の場合,Core2Duo の15倍の高速化が得られ,目標計算時間を達成した。 今後の課題 GPU上での実行時間の詳細な解析 より高度なチューニング 共有メモリの活用 GPUの補間機能の活用 より大規模な問題への適用 強化学習の利用など 他の最適化問題への適用 ポートフォリオ最適化,オプション価格評価など