大阪工業大学 情報科学部 宇宙物理研究室 2010年度 卒業研究
「CPUとGPUの性能比較 〜 行列計算およびN体問題を用いて 〜」
学籍番号Q07-065 コンピュータ科学科 氏名 富久 友樹
2011/2/20 作成
概要 / 目次 / 卒業論文/
概要
GPUとはGraphics Processing Unit の略称であり、グラフィックボードに搭載されている3Dグラフィックスに必要な計算処理を行うプロセッサのことである。 GPUは高速に並列計算を行い、かつ安価であるため、科学計算への応用が注目されている。
本研究では、以下の2つのモデルでCPUとGPUの性能を比較した。CPUでの計算(48GFlops,8GB)はC言語を用い、GPUでの計算(1062.72GFlops,1GB)はCUDAを用いた。CUDAとはNVIDIA社が提供するGPU向けのC言語の統合開発環境であり、コンパイラやライブラリなどから構成されている。
①行列の積を用いた比較。n行m列の成分がn+m-1の正方行列(サイズN*N)の積を計算し、演算時間を比較した。
図1に、FLOPS(Mflops)を演算回数の関数として示す。CPU計算に対してグローバルメモリを使用したGPUではN=16に対して0.8倍(最小値)、N=4096に対して553倍(最大値)計算時間が短縮できた。シェアードメモリを使用したGPUではN=16に対して0.82倍(最小値)、N=4096に対して3440倍(最大値)計算時間が短縮できた。
②N体問題(重力による運動)用いた比較。N個の天体が、万有引力で互いに相互作用し合う運動を4次のRunge-Kutta法を用いてシミュレートした。
図1:行列計算による性能比較 図2:N体問題による性能比較
図2に同様の比較図を示す。単精度計算の結果を比較すると、CPU計算に対してグローバルメモリを使用したGPUではN=256に対して6.73倍(最小値)、N=4096に対して144倍(最大値)計算時間が短縮できた。シェアードメモリを使用したGPUではN=16に対して7.37倍(最小値)、N=4096に対して170倍(最大値)計算時間が短縮できた。
CPUとGPUの性能比較の結果、どちらの比較でもGPUを使うことにより計算が高速になることがわかった。ただし、GPUでは丸め誤差の処理が全てデフォルトで切り捨てであったり、倍精度計算にすると、計算時間の差が縮まることも確かめられた。メモリ処理もチューニングが必要であることがわかった。
目次
- 序論
1.1 背景
1.2 本研究の目的・概要
1.3 本研究の実行環境
- 基本用語
2.1 GPU
2.1.1 GPUについて
2.1.2 CPUとの違い
2.1.3 近年の動向
2.2 CUDA
2.2.1 CUDAについて
2.2.2 CUDAの応用分野
2.2.3 CUDAに対応したソフトウェア
2.3 並列処理
- プログラミングの特徴
3.1 CUDAのプログラミングモデル
3.2 CUDAのメモリモデル
3.3 プログラミング
- 行列計算
4.1 行列計算について
4.2 行列計算プログラムの実例
4.3 行列計算による性能比較
4.3.1 スレッド数による性能比較
4.3.2 最適化した状態の性能比較
4.4 性能比較まとめ
- N体問題
5.1 N体問題について
5.2 ニュートンの運動方程式
5.3 Runge-Kutta法
5.4 N体問題による性能比較
5.4.1 最適化した状態の性能比較(単精度)
5.4.2 最適化した状態の性能比較(倍精度)
5.5 精度
5.6 性能比較まとめ
- まとめ
6.1 GPUの将来性
6.2 まとめ
卒業論文
卒業論文 [pdf]
Copyright (c) 富久 友樹 Yuuki Tomihisa 2011. All rights reserved.