(57)【要約】【課題】複雑な計算においてもＧＰＵまたはＣＰＵを単独に用いる場合に比べて計算速度が向上し、コストの削減が可能となる演算装置および演算方法を提供すること。【解決手段】ＧＰＵとＣＰＵとの両方を備える演算装置であって、数値演算を実施するためのデータや条件について計算格子の規模が所定値以下であるか否かを判定して、計算格子の規模が所定値以下の場合は、前記ＧＰＵに演算を実行させ、計算格子の規模が所定値以下でない場合は、前記ＣＰＵに演算を実行させる、判定部と、前記ＧＰＵでの演算結果と前記ＣＰＵでの演算結果とを統合して出力する統合部とを備えることを特徴とする演算装置である。好ましくは、前記ＧＰＵと前記ＣＰＵとは、時間発展計算が可能なナビエ・ストークス方程式またはエネルギー方程式を用いて演算を実行することである。【選択図】図２
2016095796.tif 000002
【特許請求の範囲】
【請求項１】
ＧＰＵとＣＰＵとの両方を備える演算装置であって、
数値演算を実施するためのデータや条件について計算格子の規模が所定値以下であるか否かを判定して、計算格子の規模が所定値以下の場合は、前記ＧＰＵに演算を実行させ、計算格子の規模が所定値以下でない場合は、前記ＣＰＵに演算を実行させる、判定部と、
前記ＧＰＵでの演算結果と前記ＣＰＵでの演算結果とを統合して出力する統合部とを備えることを特徴とする演算装置。
【請求項２】
前記ＧＰＵと前記ＣＰＵとは、時間発展計算が可能なナビエ・ストークス方程式またはエネルギー方程式を用いて演算を実行する際に、ＭｃＡｄａｍｓによる手法を用いることを特徴とする請求項１に記載の演算装置。
【請求項３】
ＧＰＵとＣＰＵとの両方を備える演算装置において実行される演算方法であって、
数値演算を実施するためのデータや条件について計算格子の規模が所定値以下であるか否かを判定する判定ステップと、
前記計算格子の規模が所定値以下の場合は、前記ＧＰＵに演算を実行させる、ＧＰＵ演算ステップと、
前記計算格子の規模が所定値以下でない場合は、前記ＣＰＵに演算を実行させる、ＣＰＵ演算ステップと、
前記ＧＰＵ演算ステップでの演算結果と前記ＣＰＵ演算ステップでの演算結果とを統合して出力する統合ステップとを含むことを特徴とする演算方法。
【請求項４】
前記ＧＰＵ演算ステップと前記ＣＰＵ演算ステップとは、時間発展計算が可能なナビエ・ストークス方程式またはエネルギー方程式を用いて演算を実行する際に、ＭｃＡｄａｍｓによる手法を用いることを特徴とする請求項３に記載の演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置および演算方法に関し、詳しくは、大規模な数値シミュレーションにおける計算を高速化する演算装置および演算方法に関する。
【背景技術】
【０００２】
数値シミュレーション分野では手法の高度化と扱う問題の大規模化が急速に進んでおり、計算の加速化法が大きなテーマの一つとなっている。電力分野、エネルギー分野、通信分野、センシング分野、などの数値解析や大規模数値計算を必要とする産業分野においては数値シミュレーションが必要とされている。その加速化法については、古典的には、連立一次方程式を反復緩和法で解くときの反復誤差に重み付けをすることで収束性を高める方法が知られている。特に、自然現象を記述している物理方程式系などの偏微分方程式を計算機上で解く際は、速度や気圧といった変数とメッシュ上の配置法とが高速性や精度に影響を与える。
【０００３】
一方で、コンピュータグラフィックス分野や数値演算など、大規模な反復計算や組み合わせ演算が必要とされている領域では、ＣＰＵの性能を大きく越えるＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が通常用いられてリアルタイム表現を実現している（非特許文献１参照）。非特許文献１には、例えば、データ数が数千規模の場合、ＣＰＵに比べてＧＰＵは１５０倍以上の高速化を可能としていることが記載されている。しかしながら、ＧＰＵのメモリ容量の制限があるので、適用範囲に限りがあることも事実である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“３次元画像計測分野でのＧＰＵを用いた高速化事例”  、［ｏｎｌｉｎｅ］、［平成２６年１１月１１日検索］、インターネット〈URL:http://gpu-computing.gsic.titech.ac.jp/sites/default/files/Tohto%20C-tech.pdf〉
【非特許文献２】A. McAdams, E. Sifakis, and J. Teran, “A parallel multigrid Poisson solver for fluids simulation on large grids”, Eurographics/ACM SIGGRAPH Symposium on Computer Animation, 2010.
【非特許文献３】“ポアソン方程式”、［ｏｎｌｉｎｅ］、［平成２６年１１月１１日検索］、インターネット〈URL:http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A2%E3%82%BD%E3%83%B3%E6%96%B9%E7%A8%8B%E5%BC%8F〉
【非特許文献４】建部修見、他１名、“マルチグリッド前処理付き共役勾配法の並列化”  、［ｏｎｌｉｎｅ］、［平成２６年１１月１１日検索］、インターネット〈URL:http://www.hpcs.cs.tsukuba.ac.jp/~tatebe/research/paper/JSPP93.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年の数値シミュレーションでは、扱う問題が複雑化している一方で、計算の高速化が求められている。コンピュータグラフィックスの分野や数値演算の分野では大規模なリアルタイム計算に対して高い性能を有するＧＰＵが従来のＣＰＵに代わって用いられている。しかしながら、上述したようにＧＰＵに関してはメモリ容量の制限があるため、計算格子の規模によってはメモリの適用範囲を超えて計算ができなくなるという問題があった。
【０００６】
例えば、数値シミュレーションの高速化において計算格子数が増大するとＧＰＵのメモリ容量を越えてしまい計算が不可能となることや、ソフトウェアだけの数値シミュレーションでは大規模な問題に対応できるが高速化には限界が生じていたことなどの問題があった。
【０００７】
本発明は上記従来の問題に鑑みなされたものであって、本発明の課題は、複雑な計算においてもＧＰＵまたはＣＰＵを単独に用いる場合に比べて計算速度が向上し、コストの削減が可能となる演算装置および演算方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決する一実施形態に記載の発明は、ＧＰＵとＣＰＵとの両方を備える演算装置であって、数値演算を実施するためのデータや条件について計算格子の規模が所定値以下であるか否かを判定して、計算格子の規模が所定値以下の場合は、前記ＧＰＵに演算を実行させ、計算格子の規模が所定値以下でない場合は、前記ＣＰＵに演算を実行させる、判定部と、前記ＧＰＵでの演算結果と前記ＣＰＵでの演算結果とを統合して出力する統合部とを備えることを特徴とする演算装置である。
【０００９】
他の実施形態に記載の発明は、ＧＰＵとＣＰＵとの両方を備える演算装置において実行される演算方法であって、数値演算を実施するためのデータや条件について計算格子の規模が所定値以下であるか否かを判定する判定ステップと、前記計算格子の規模が所定値以下の場合は、前記ＧＰＵに演算を実行させる、ＧＰＵ演算ステップと、前記計算格子の規模が所定値以下でない場合は、前記ＣＰＵに演算を実行させる、ＣＰＵ演算ステップと、前記ＧＰＵ演算ステップでの演算結果と前記ＣＰＵ演算ステップでの演算結果とを統合して出力する統合ステップとを含むことを特徴とする演算方法である。
【図面の簡単な説明】
【００１０】
【図１】本実施形態の演算装置の機能ブロック構成例を示す図である。
【図２】本実施形態の演算方法の処理フローを示す図である。
【図３】計算格子数と計算コストの関係に関する比較実験結果を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、詳細に説明する。
【００１２】
本実施形態の演算装置および演算方法について、計算格子の規模に応じて、ＧＰＵを使用する場合と、ＧＰＵは使用せずにＣＰＵを使用してソフトウェアだけで適応的に計算を進める方法について数理方程式の解法問題を例とした簡易な演算の高速化方法および装置に関して以下に述べる。
【００１３】
図１は、本実施形態の演算装置の機能ブロック構成例を示す図である。本実施形態の演算装置１は、図１に示すように、データの入力を受け付ける入力部１１と、入力されたデータを蓄積するデータ蓄積部１２と、ＧＰＵとＣＰＵのどちらで処理するかを判定する判定部１３と、ＧＰＵ１４と、ＣＰＵ１５と、ＧＰＵ１４の出力およびＣＰＵ１５の出力を統合する統合部１６と、統合した出力結果を表示する表示部１７とを備えて構成される。
【００１４】
図２は、本実施形態の演算方法の処理フローを示す図である。演算装置１において実行される演算方法について図２を参照して説明する。
【００１５】
演算装置１では、まず、数値演算などを実施するためのデータや条件について入力部１１においてデータ入力を受け付け（Ｓ１００）、入力されたデータや条件をデータ蓄積部１２に蓄積する（Ｓ１１０）。
【００１６】
データ蓄積部１２にデータや条件が蓄積される（Ｓ１１０）と、判定部１３において、蓄積されたデータや条件について計算格子規模判定処理により計算格子の規模が所定値以下であるか否かを判定し（Ｓ１２０）、計算格子の規模が所定値以下の場合（Ｓ１２０：Ｙｅｓ）は、ＧＰＵ１４で演算させ（Ｓ１３０）、計算格子の規模が所定値以下でない場合（Ｓ１２０：Ｎｏ）は、ＣＰＵ１５で演算させる（Ｓ１４０）。演算した結果はＧＰＵ１４、ＣＰＵ１５からそれぞれ出力され（Ｓ１３１、Ｓ１４１）、両者の出力結果は統合部１６において統合される（Ｓ１５０）。統合された最終結果は、表示部１７において表示する（Ｓ１６０）ことにより可視化される。
【００１７】
ここで計算格子規模判定処理について説明する。計算格子規模判定処理（Ｓ１２０）では、２つの加速化法を選択的に用いるための判定を行う。すなわち、計算格子の解像度などにより計算格子の規模を判定してＧＰＵ１４またはＣＰＵ１５に振り分ける。より詳細にはアルゴリズムも含めてＧＰＵ１４またはＣＰＵ１５のいずれが対応可能な演算部であるかを判定する機能を加えることもできる。
【００１８】
計算格子の規模は、特定の領域に対して適用する計算格子の数、すなわち計算格子の大きさや計算格子の解像度によって決まる。計算格子の大きさとは、３次元の等方間隔の計算格子の場合、計算格子の一辺の大きさ（Δｘ）をいい、計算格子の解像度とは、特定の領域に対して適用する計算格子の数（Ｎ個×Ｍ個×Ｗ個）をいう。つまり、計算格子の大きさ（Δｘ）が小さいほど、計算格子の解像度（Ｎ個×Ｍ個×Ｗ個）が大きいといえる。例えば、特定の領域に対する計算格子の解像度（Ｎ個×Ｍ個×Ｗ個）が所定値以下であるか否かに基づいて、計算格子の規模が所定値以下か否かを判定することができる。したがって、計算対象の領域の大きさと計算格子の大きさまたは計算格子の解像度とによって計算格子の規模が所定値以下であるか否かを判定することができる。
【００１９】
演算をＧＰＵ１４またはＣＰＵ１５に振り分ける基準となる計算格子の解像度は計算対象となる問題の難易度と使用するＧＰＵ１４のメモリの大きさにより決定することができる。
【００２０】
特定の領域に対する計算格子の解像度が所定値より小さい場合（Ｓ１２０：Ｙｅｓ）は、例えば、ＧＰＵ１４を用いて流体方程式の計算を高速化できる。オープンソースであるＣＵＤＡ（Ｃｏｍｐｕｔｅ  Ｕｎｉｆｉｅｄ  Ｄｅｖｉｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ）のＣＵＳＰに基づけば、連立方程式を高速に解くためのＧＰＵ計算を最大限生かすことができる。なお、ＣＵＳＰとは、線形問題やグラフィックスをＣＵＤＡ上で扱うときのライブラリーである。ＣＵＳＰは疎な行列や線形システムを解くときに柔軟で使い勝手のいいインタフェースも提供する。
【００２１】
特定の計算格子の解像度が所定値より大きい場合（Ｓ１２０：Ｙｅｓ）は、グラフィックスカードのメモリが計算用に十分ではなく、ＧＰＵ１４をシミュレーションの加速化に用いるのは現実的ではない。このような場合、ＣＰＵ１５に基づいたマルチグリッド法を用いることができる。これにより、反復計算の演算時間を大幅に削減することができる。
【００２２】
一方、ＣＰＵ１５における加速化アルゴリズムにおいて、グリッド分解能が高い場合は、ＭｃＡｄａｍｓ（非特許文献２参照）により提案されたシミュレーション計算を加速して解くことができる、マルチグリッドポアソン型ソルバーを用いることができる。この方法は高効率にポアソン型方程式（非特許文献３参照）を演算でき、しかも、不規則なノイマン型やディリクレー型境界条件を含んだ不規則なボクセル領域において効果的である。ＧＰＵ１４やＣＰＵ１５は、ポアソン型方程式を含んだ大規模計算で用いる物理方程式として、時間発展計算が可能なナビエ・ストークス方程式またはエネルギー方程式を用いて演算を実行することができるが、この際にＭｃＡｍａｍｓにより提案された手法を用いることで計算のさらなる高速化が可能である。
【００２３】
マルチグリッド型サイクル方式は前処理付共役勾配法（非特許文献４参照）に用いた。この方式は、不規則な計算空間において収束性と安定性において著しく向上させた方式である。また、シェアメモリプラットフォームに並列計算ができるようにしている。
【００２４】
計算処理対象において、演算コストと精度の両立化を図るため、非線形性が弱い領域には、粗い格子を与えて精度を上げる必要がなく、逆に、非線形性が強い領域には、細かい格子を与えて精度を向上させる必要がある。この場合、前者はＧＰＵ１４上で、後者はＣＰＵ１５上で数値解法を行うという混在型を考えることで最終結果は両者の結果を融合したものになる。即ち、系全体として、高精度化と高速性を両立させることが可能となる。
【００２５】
図３は、計算格子数と計算コストの関係に関する比較実験結果を示す。図３の縦軸の計算コストとは、計算速度に依存し計算の稼動時間、消費電力などから算出される。また、横軸の計算格子数とは、全体の計算対象領域を固定したときの計算格子数（密度が変わることに相当）である。計算コストは計算領域の大きさと密度の両方に影響される。計算格子数と計算コストに関して、小規模問題から大規模問題までＣＰＵのみの場合、ＧＰＵのみの場合、本発明の場合について数値実験による性能比較を行った。その結果、従来からのＣＰＵ単独使用、ＧＰＵ単独使用の場合に比べると、計算格子数が増加した場合でも本発明によれば高速性については優位性を保っているのがわかる。なお、図３のグラフは計算格子数がＧＰＵまたはＣＰＵの振り分けを行う値以上で、ＧＰＵの処理ができなくなる値より小さい範囲においての傾向を示している。
【００２６】
本実施形態の演算装置および演算方法によれば、計算格子の解像度に応じて、ＧＰＵを使用する場合とＧＰＵ使用せずにＣＰＵを使用してソフトウェアだけで適応的に計算を進める方法について数理方程式の解法問題を例とした簡易な演算の高速化方法および装置を提供することができる。この方法および装置によれば、例えば大規模な３次元熱流体計算問題などの複雑な計算において従来よりも高速に演算が可能となり、既存のノートＰＣ内で有効である。また、ＧＰＵは廉価であるため、適用できる用途、シーンを広げることができる。
【符号の説明】
【００２７】
１    演算装置
１１  入力部
１２  データ蓄積部
１３  判定部
１４  ＧＰＵ
１５  ＣＰＵ
１６  統合部
１７  表示部
【図１】
2016095796.tif 000003
【図２】
2016095796.tif 000004
【図３】
2016095796.tif 000005