SlideShare uma empresa Scribd logo
1 de 29
多次元非線形ナップザック問題に対するGPGPUの適用 関西大学総合情報学部 総合情報学科4年 尾上 洋介 1
1. 本研究の目的 2
多次元非線形ナップザック問題の高速厳密解法の必要性 多次元非線形ナップザック問題Multidimensional Nonlinear Knapsack Problem (MNKP) MNKPは現実的な社会問題にも適用されるモデル 金融工学 マーケティング 信頼性最適化 厳密性の保証は現実的な社会問題を扱う上で重要 比較的小規模な問題でも計算が困難な場合もある 3
GPGPUの発展 GPUの演算性能はCPUを上回る速度で成長している GPUを汎目的計算に利用する環境が整備され,専用プロセッサも市場に現れている 一方で,GPUの演算性能を十分に活用するには適切な並列化モデルにあてはめなければならない 4
本研究の目的 MNKPに対する動的計画法アルゴリズムをGPU向けに並列化 問題規模は比較的小さいが,従来解法では計算が困難だった問題に適用し高速化が可能であることを示す 今後のGPUの発展の恩恵を受けることが可能か,スケーラビリティの検証を行う 5
2. 本研究の背景 6
多次元非線形ナップザック問題 定義 7
MNKPに対する分枝限定法 大規模な問題を厳密に解くとき主流 計算時間は枝刈りの性能に大きく依存 計算時間の予測は困難 分枝限定法をベースにしたアプローチ 分枝カット法 改良代理制約(ISC)法 8
MNKPに対する動的計画法 実装が単純 計算時間の見積もりが可能 制約値が大きい,又は制約数が多いとき解くのが困難 GPUコアでスケールさせて高速化 9
GPU処理の特徴 豊富なコア数 ハイエンドGPUでは200〜500コア 2013年には2000コア前後(NVIDIAロードマップ) 高速なメモリアクセス GPU処理の性能はメモリアクセス速度に強く依存 費用対効果が高くスーパーコンピュータへの利用もされつつある 近年の性能向上率が高い 10
GPUの性能と価格 理論値数百GFLOPS〜1TFLOPSのプロセッサが数万円で入手可能 11
GPGPUのデザインパターン アムダールの法則 高速化率S, 並列化割合p, プロセッサ台数N Streaming Formulation U.D. Bordoloi, S. Chakraborty「GPU-based Acceleration of System-level Design Tasks」Int J Parallel Prog, 38, pp.225-253, 2010. 12
アムダールの法則 並列化による高速化の指標 大量のGPUコアを活かすには,高い並列性を持ったアルゴリズムの設計が必要 13
Streaming Formulation GPUで効率的に並列処理できるモデル 行列の大きさが変化しない 現在のスレッド間に依存関係がない last サイズ一定 current 独立 図2. Streaming Formulation 14
GPGPUの適用分野 画像処理,音声処理,流体計算,天体シミュレーションなどで成果を挙げている OR分野でも線形計画法,0-1 ナップザック問題,スケジューリング問題など利用が広がっている GPUで効果的に処理を行えるパターンが存在 MNKPに対する動的計画法をパターンにあてはめ並列化 15
3. 計算機実験と考察 16
Coit and Konakの信頼性最適化問題 D.W. Coit, A. Konak「Multiple weighted objectives heuristic for the redundancy allocation problem」IEEE Trans. Reliab., 55(3), pp.551-558, 2006. 部品間のトレードオフを考慮して作成されている 17
Coit and Konakの信頼性最適化問題 20のサブシステムによる並直列システム 各サブシステムに4個の部品 各サブシステムで合計1〜8個部品を使う 問題規模 18 … … …
Coit and Konakの信頼性最適化問題 定式化 19
MNKP化 とおき,目的関数の対数をとる 20
測定方法 部品案の異なる3問 C,Wをそれぞれ100から250まで30おきに変化 計108問の合計計算時間を測定 ソルバ 並列動的計画法(GPU) 動的計画法 HOPE(ISC法) CPLEX(分枝カット法など) 21
計算時間の比較 GPU並列化によって高速化を実現 22
考察 CPU1スレッドによる動的計画法ではHOPEより計算時間がかかっていた GPU並列化により従来解法では時間のかかっていた問題を高速に計算することができた Tesla C2050ではCPU比およそ50倍を達成 実用上は深則操作(Fathoming Test)で問題規模を縮小することで,更なる高速化が可能 23
スケーラビリティ GPUのコア数が増えてもオーバヘッドによる性能低下は見られない メモリ転送などGPU環境の整備により,最新ハードほど計算速度は向上している 24
GPUプログラムのチューニング グローバルメモリアクセスを減らす シェアードメモリを使う レジスタを使う コンスタントメモリを使う 理論スループット値に近づけるためにはメモリアクセスの最適化が必須 本研究でも,レジスタを使用しグローバルメモリアクセスを半分にすることで3倍以上の高速化 25
4. まとめ 26
まとめ 近年のGPUの発展は目まぐるしいが,汎目的計算で有効活用するには特定のパターンに沿う必要がある MNKPに対する動的計画法がGPUを用いることで高速化できることを示した 27
GPUの将来性 あるアルゴリズムがGPU上で効果的に動作するかは自明ではない プロセッサのクロック周波数は近年伸び悩んでいる CPUにおける性能問題を時間が解決してくれる時代ではなくなりつつある GPUプログラムはGPUの成長に応じて高速化 アルゴリズムがGPU上で動作するアドバンテージ 28
今後の課題 複数GPUでの並列化 GPUクラスタへの対応 制約値が大きい場合の対応 制約数が多い場合の対応 29

Mais conteúdo relacionado

Destaque

第3回NGS現場の会モーニング教育セッション 配布用資料
第3回NGS現場の会モーニング教育セッション 配布用資料第3回NGS現場の会モーニング教育セッション 配布用資料
第3回NGS現場の会モーニング教育セッション 配布用資料
Aya Takeda
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習
sesejun
 
数理最適化とPython
数理最適化とPython数理最適化とPython
数理最適化とPython
Yosuke Onoue
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
Shunji Umetani
 

Destaque (11)

第3回NGS現場の会モーニング教育セッション 配布用資料
第3回NGS現場の会モーニング教育セッション 配布用資料第3回NGS現場の会モーニング教育セッション 配布用資料
第3回NGS現場の会モーニング教育セッション 配布用資料
 
NGS現場の会 第3回 モーニング教育セッション 配布用資料 「いまさら聞けない NGS超!入門」
NGS現場の会 第3回 モーニング教育セッション 配布用資料 「いまさら聞けない NGS超!入門」NGS現場の会 第3回 モーニング教育セッション 配布用資料 「いまさら聞けない NGS超!入門」
NGS現場の会 第3回 モーニング教育セッション 配布用資料 「いまさら聞けない NGS超!入門」
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習
 
非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2nd非線形データの次元圧縮 150905 WACODE 2nd
非線形データの次元圧縮 150905 WACODE 2nd
 
1 2.t検定
1 2.t検定1 2.t検定
1 2.t検定
 
数理最適化とPython
数理最適化とPython数理最適化とPython
数理最適化とPython
 
PRML Chapter 5
PRML Chapter 5PRML Chapter 5
PRML Chapter 5
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで組合せ最適化入門:線形計画から整数計画まで
組合せ最適化入門:線形計画から整数計画まで
 
2 3.GLMの基礎
2 3.GLMの基礎2 3.GLMの基礎
2 3.GLMの基礎
 

Mais de Yosuke Onoue

AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
Yosuke Onoue
 
社会的決定とAHP
社会的決定とAHP社会的決定とAHP
社会的決定とAHP
Yosuke Onoue
 
CUDA 6の話@関西GPGPU勉強会#5
CUDA 6の話@関西GPGPU勉強会#5CUDA 6の話@関西GPGPU勉強会#5
CUDA 6の話@関西GPGPU勉強会#5
Yosuke Onoue
 
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
Yosuke Onoue
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
Yosuke Onoue
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
Yosuke Onoue
 
Rsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしいRsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしい
Yosuke Onoue
 

Mais de Yosuke Onoue (18)

Angular 2のRenderer
Angular 2のRendererAngular 2のRenderer
Angular 2のRenderer
 
アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識
 
AngularJSでデータビジュアライゼーションがしたい
AngularJSでデータビジュアライゼーションがしたいAngularJSでデータビジュアライゼーションがしたい
AngularJSでデータビジュアライゼーションがしたい
 
GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会GDG DevFest Kobe Firebaseハンズオン勉強会
GDG DevFest Kobe Firebaseハンズオン勉強会
 
Polymerやってみた
PolymerやってみたPolymerやってみた
Polymerやってみた
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
 
AngularFireで楽々バックエンド
AngularFireで楽々バックエンドAngularFireで楽々バックエンド
AngularFireで楽々バックエンド
 
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーションAngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
 
社会的決定とAHP
社会的決定とAHP社会的決定とAHP
社会的決定とAHP
 
CUDA 6の話@関西GPGPU勉強会#5
CUDA 6の話@関西GPGPU勉強会#5CUDA 6の話@関西GPGPU勉強会#5
CUDA 6の話@関西GPGPU勉強会#5
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
 
What's New In Python 3.3をざっと眺める
What's New In Python 3.3をざっと眺めるWhat's New In Python 3.3をざっと眺める
What's New In Python 3.3をざっと眺める
 
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
PyOpenCLによるGPGPU入門 Tokyo.SciPy#4 編
 
PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門PyOpenCLによるGPGPU入門
PyOpenCLによるGPGPU入門
 
PyCUDAの紹介
PyCUDAの紹介PyCUDAの紹介
PyCUDAの紹介
 
Rsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしいRsa暗号で彼女が出来るらしい
Rsa暗号で彼女が出来るらしい
 

201010ksmap