研究室トップページへ / 卒業研究一覧へ

大阪工業大学 情報科学部 宇宙物理研究室 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 背景
    1.2 本研究の目的・概要
    1.3 本研究の実行環境

  2. 基本用語
    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. プログラミングの特徴
    3.1 CUDAのプログラミングモデル
    3.2 CUDAのメモリモデル
    3.3 プログラミング

  4. 行列計算
    4.1 行列計算について
    4.2 行列計算プログラムの実例
    4.3 行列計算による性能比較
       4.3.1 スレッド数による性能比較
       4.3.2 最適化した状態の性能比較
    4.4 性能比較まとめ

  5. N体問題
    5.1 N体問題について
    5.2 ニュートンの運動方程式
    5.3 Runge-Kutta法
    5.4 N体問題による性能比較
       5.4.1 最適化した状態の性能比較(単精度)
       5.4.2 最適化した状態の性能比較(倍精度)
    5.5 精度
    5.6 性能比較まとめ

  6. まとめ
    6.1 GPUの将来性
    6.2 まとめ


卒業論文

  • 卒業論文 [pdf]

    Copyright (c) 富久 友樹 Yuuki Tomihisa 2011. All rights reserved.