マルチCPUとGPUを用いた計算

1,001 views
Skip to first unread message

横山太郎

unread,
Oct 21, 2014, 4:10:54 AM10/21/14
to open...@googlegroups.com
こんにちは。
横山と申します。
OpenFOAMを使い始めてまだ半年の学生です。

CPU、GPUを同時に使用し、
それぞれだけ使用する時よりも高速な計算を行える手法を調べています。

環境は
CPU:Xeon E5-2620 v2 を2台

GPU : Tesla K20
です。

自分で調べられる限りではCPUで並列計算するのみか
GPUのみを使う方法しか見つけらていません。

現在の環境をフルに生かせるような方法、ライブラリ等
ご存知の方がいらっしゃいましたら御教授お願い致します。

Seiji Amasawa

unread,
Oct 24, 2014, 5:33:48 AM10/24/14
to openfoam
こんにちは。

下記件についてコメントが少ないのは、そもそも少ないというのも
あるかもしれないのですが、計算対象など情報が少なすぎるから
かもしれないので、OpenFOAMで何をCPUとGPUで高速に計算したいのか等
書かれるともしかすると良いかもしれません。

OpenFOAMで流体計算をする場合など、線形ソルバーが計算時間を大きく
占める場合を前提にお答えします。


> 自分で調べられる限りではCPUで並列計算するのみか
> GPUのみを使う方法しか見つけらていません。

もちろん方法はありますし、実現も可能です。


> 現在の環境をフルに生かせるような方法、ライブラリ等
> ご存知の方がいらっしゃいましたら御教授お願い致します。

大学・研究機関などではスパコン環境など含めてCPU+GPUのハイブリッド
計算はそれなりにありそうですが、フリーのライブラリなどでそれを
入れれば簡単にCPU+GPUのハイブリッド高速計算が実行されるという
ようなものはあまり聞かないようです。商用ならありますが。
(どうなんでしょう。識者の方ご存知でしたらお教え下さい。)

ご存知かもしれませんが、並列計算といってもさまざまありまして
CPUの並列化だけでも、ネットワーク越しに複数マシンで実現するものもあれば
同じマシン上で実装する場合もありますし、その場合でもメモリ共有の
スレッド並列型や分散メモリのプロセス並列型などあります。
更に、CPUとGPUを組み合わせる場合は、役割分担して実行する場合もあれば
同じ計算を振り分けて計算途中でロードバランスして割合を変更しながら
計算したりもできます。

今のところGPUのリソース、計算コアやGPUメモリをOSが管理して分配して
くれるようなOSはありませんので、CPUとGPUを使う場合、特に複数GPUが
入るような場合を含めて全てのリソース管理をプログラマー側が
ドライバーを通して管理することになります。
実現の難易度はさまざまで、問題の規模にも種類にも大きく依存します。


参考までに5月のOpenCAE勉強会の時の資料の一部をPDFで添付します。
マルチGPU・マルチCPUで計算したベンチマーク結果です。


ちょうどタイミングよく、
オープンCAEシンポジウム2014というのが11月13日(木)~14日(金)に
ありますが、偶然にもその辺の話があったような。。(←ステマ)

参考URL:
オープンCAEシンポジウム2014 – オープンCAE学会 - http://bit.ly/1BXJBMD
オープンCAE勉強会@関東(流体など) - http://bit.ly/1rrOhEI



2014年10月21日 17:10 横山太郎 <thepap...@gmail.com>:
--
@amasawa_seiji
hybrid_benchmark.pdf

横山太郎

unread,
Oct 30, 2014, 3:50:28 AM10/30/14
to open...@googlegroups.com
こんにちは。
返事が遅くなり申し訳ありません。

説明不足でしたが、現在OpenFOAMにて燃焼反応を伴う流体の計算行っています。
燃焼モデルには詳細反応モデルを組み込んでいます。
メッシュ数は現在数万程度ですが、数百万~数千万程度まで計算を行っていきたいと考えています。

添付ファイルの内容に衝撃を受けました。
適切なチューニングの重要さを痛感しています。
当方の研究室ではプログラミングを専門に勉強している人はおらず、
今回対象とする計算についてはかなり高度なプログラミングに関する知識が必要と思われますので、
商用ソフトの購入ということになりそうです。

重ねて質問で申し訳ないのですが、
Seiji Amasawa様の資料ではマルチCPU/GPUという構成ですが、
マルチCPU+単GPUといった条件でも高速な計算は可能なのでしょうか。
また、まだ検討段階ですが、
線形ソルバー部分の入れ替えについてSeiji Amasawa様が構築された線形ソルバー
(OpenMP+MPI+GPU)を購入させて頂くといったことは可能なのでしょうか。

質問ばかりで申し訳ありません。
どうぞよろしくお願い致します。





2014年10月24日金曜日 18時33分48秒 UTC+9 Seiji Amasawa:

Seiji Amasawa

unread,
Nov 3, 2014, 3:28:49 PM11/3/14
to openfoam
こんにちは。(おはようございます。)

> 説明不足でしたが、現在OpenFOAMにて燃焼反応を伴う流体の計算行っています。
> 燃焼モデルには詳細反応モデルを組み込んでいます。
> メッシュ数は現在数万程度ですが、数百万~数千万程度まで計算を行っていきたいと考えています。

面白そうな研究ですね。
K20を一つで計算する場合GDDR5が5Gですので、
数千万というのが中盤以降などになるとなかなか難しいかもしれませんが、
それなりな規模の計算はできると思います。
計算がtutorialsのfireFoamのものの規模を大きくしたようなイメージで
良いようでしたら、GPGPUで効果的な計算ができると思います。
シングルGPUでももちろん計算可能です。

行列の形や値が反復法で非常に解きにくいものだったりする場合、
不完全LU分解を前処理に入れなければならなかったりするのですが、
その場合だとサイズの条件はすこし厳しくなります。
CPUとメインメモリ側も同時に使って計算もできるのですが、
パフォーマンスとトレードオフになりますので計算したい規模に
合わせてチューニングすることになります。

私のところのソルバーは元々大手企業のインハウスなシミュレーター
向けに開発したものでしたので、ソルバーについて大学研究室等と
取引は今まで無いのですが、お取引可能です。
また、色々協力できる点がありそうです。

私も燃焼反応の詳細反応モデルの大規模計算というのはベンチマークとしても
非常に興味があります。(そのへん細かい所は別途メールさせて下さい。)



2014年10月30日 16:50 横山太郎 <thepap...@gmail.com>:
> こんにちは。
> 返事が遅くなり申し訳ありません。
>
> 説明不足でしたが、現在OpenFOAMにて燃焼反応を伴う流体の計算行っています。
> 燃焼モデルには詳細反応モデルを組み込んでいます。
> メッシュ数は現在数万程度ですが、数百万~数千万程度まで計算を行っていきたいと考えています。
>
> 添付ファイルの内容に衝撃を受けました。
> 適切なチューニングの重要さを痛感しています。
> 当方の研究室ではプログラミングを専門に勉強している人はおらず、
> 今回対象とする計算についてはかなり高度なプログラミングに関する知識が必要と思われますので、
> 商用ソフトの購入ということになりそうです。
>
> 重ねて質問で申し訳ないのですが、
> Seiji Amasawa様の資料ではマルチCPU/GPUという構成ですが、
> マルチCPU+単GPUといった条件でも高速な計算は可能なのでしょうか。
> また、まだ検討段階ですが、
> 線形ソルバー部分の入れ替えについてSeiji Amasawa様が構築された線形ソルバー
> (OpenMP+MPI+GPU)を購入させて頂くといったことは可能なのでしょうか。
>
> 質問ばかりで申し訳ありません。
> どうぞよろしくお願い致します。
>

--
@amasawa_seiji
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
0 new messages