Microsoft PowerPoint _OpenCAE並列計算分科会.pptx

Similar documents
Slide 1

Microsoft PowerPoint - GPUシンポジウム _d公開版.ppt [互換モード]

PowerPoint Presentation

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin

untitled

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

Microsoft PowerPoint - 発表II-3原稿r02.ppt [互換モード]

数学 t t t t t 加法定理 t t t 倍角公式加法定理で α=β と置く. 三角関数

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

Microsoft PowerPoint - CSA_B3_EX2.pptx

今週の内容 後半全体のおさらい ラグランジュの運動方程式の導出 リンク機構のラグランジュの運動方程式 慣性行列 リンク機構のエネルギー保存則 エネルギー パワー 速度 力の関係 外力が作用する場合の運動方程式 粘性 粘性によるエネルギーの消散 慣性 粘性 剛性と微分方程式 拘束条件 ラグランジュの未

Microsoft PowerPoint - H22制御工学I-2回.ppt

untitled

パソコンシミュレータの現状

例 e 指数関数的に減衰する信号を h( a < + a a すると, それらのラプラス変換は, H ( ) { e } e インパルス応答が h( a < ( ただし a >, U( ) { } となるシステムにステップ信号 ( y( のラプラス変換 Y () は, Y ( ) H ( ) X (

はじめに 動機 IGModel プロジェクトとは 目次 IGModel プロジェクトの構成 構造 現在の開発状況 IGMBaseLib, IGMTool IGModel-SW( 正二十面体格子全球浅水モデル ) IGModel-SW のテスト計算の結果 ( 一部 ) まとめ, 今後の展望

大気環境シミュレーション

07-二村幸孝・出口大輔.indd

FEM原理講座 (サンプルテキスト)

Microsoft PowerPoint - 夏の学校(CFD).pptx

ଗȨɍɫȮĘർǻ 図 : a)3 次元自由粒子の波数空間におけるエネルギー固有値の分布の様子 b) マクロなサイズの系 L ) における W E) と ΩE) の対応 として与えられる 周期境界条件を満たす波数 kn は kn = πn, L n = 0, ±, ±, 7) となる 長さ L の有限

Microsoft PowerPoint - chap8.ppt

Microsoft PowerPoint - H21生物計算化学2.ppt

N 体問題 長岡技術科学大学電気電子情報工学専攻出川智啓

2 /13 仮想的な湿潤惑星の計算 計算条件を手軽に変更 大気組成 入射太陽放射量 重力加速度 大気圧 自転周期 etc. 可変性 可読性に優れた大気大循環モデル 何を計算しているか ソースコードを読んで分かる スキームの交換や分離が容易にできる

TSUBAME2.0におけるGPUの 活用方法

平成 22 年度 革新的な三次元映像技術による超臨場感コミュニケーション技術研究開発 の開発成果について 1. 施策の目標 人体を収容できる大きさの 3 次元音響空間についてリアルタイムに音響レンダリングできるシステム ( シリコンコンサートホール ) を 2013 年までに開発する 具体的には,

Microsoft Word - note02.doc

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要

日本内科学会雑誌第98巻第4号

日本内科学会雑誌第97巻第7号

N08

DVIOUT

PowerPoint プレゼンテーション

多次元レーザー分光で探る凝縮分子系の超高速動力学

4 倍精度基本線形代数ルーチン群 QPBLAS の紹介 [index] 1. Introduction 2. Double-double algorithm 3. QPBLAS 4. QPBLAS-GPU 5. Summary 佐々成正 1, 山田進 1, 町田昌彦 1, 今村俊幸 2, 奥田洋司

Microsoft PowerPoint - システム創成学基礎2.ppt [互換モード]

Microsoft PowerPoint - 第3回2.ppt

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

Microsoft PowerPoint - qcomp.ppt [互換モード]

GPGPUイントロダクション

3 数値解の特性 3.1 CFL 条件 を 前の章では 波動方程式 f x= x0 = f x= x0 t f c x f =0 [1] c f 0 x= x 0 x 0 f x= x0 x 2 x 2 t [2] のように差分化して数値解を求めた ここでは このようにして得られた数値解の性質を 考

Microsoft PowerPoint - ip02_01.ppt [互換モード]

NS NS Scalar turbulence 5 6 FEM NS Mesh (A )

GPGPUクラスタの性能評価

NVIDIA Tesla K20/K20X GPU アクセラレータ アプリケーション パフォーマンス テクニカル ブリーフ

NUMAの構成

Microsoft PowerPoint - kougi2.ppt

並列・高速化を実現するための 高速化サービスの概要と事例紹介

CCS HPCサマーセミナー 並列数値計算アルゴリズム

Microsoft PowerPoint - kougi9.ppt

0 スペクトル 時系列データの前処理 法 平滑化 ( スムージング ) と微分 明治大学理 学部応用化学科 データ化学 学研究室 弘昌

(Microsoft PowerPoint - \221\34613\211\361)

微分方程式 モデリングとシミュレーション

s とは何か 2011 年 2 月 5 日目次へ戻る 1 正弦波の微分 y=v m sin ωt を時間 t で微分します V m は正弦波の最大値です 合成関数の微分法を用い y=v m sin u u=ωt と置きますと dy dt dy du du dt d du V m sin u d dt

PowerPoint Presentation

CUDA 連携とライブラリの活用 2

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

スライド 1

Insert your Title here

CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン

ゲームエンジンの構成要素

モデリングとは

DVIOUT-SS_Ma

スライド 1

Microsoft PowerPoint - aep_1.ppt [互換モード]

TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日

偏微分方程式、連立1次方程式、乱数

数値計算で学ぶ物理学 4 放物運動と惑星運動 地上のように下向きに重力がはたらいているような場においては 物体を投げると放物運動をする 一方 中心星のまわりの重力場中では 惑星は 円 だ円 放物線または双曲線を描きながら運動する ここでは 放物運動と惑星運動を 運動方程式を導出したうえで 数値シミュ

Microsoft PowerPoint - Lec15 [互換モード]

Microsoft PowerPoint - 物情数学C(2012)(フーリエ前半)_up

スライド 1

GPUを用いたN体計算

Microsoft PowerPoint - kougi7.ppt

工業数学F2-04(ウェブ用).pptx

Microsoft PowerPoint - 卒業論文 pptx

GPU 画像 動画処理用ハードウェア 低性能なプロセッサがたくさん詰まっている ピーク性能が非常に高い GPUを数値計算に用いるのがGPGPU Graphics Processing Unit General Purpose GPU TSUBAME2.0: GPUスパコン 本演習ではNVIDIA社の

Microsoft PowerPoint - シミュレーション工学-2010-第1回.ppt

スライド 1

DVIOUT

1. マシンビジョンにおける GPU の活用

領域シンポ発表

スライド 1

1/17 平成 29 年 3 月 25 日 ( 土 ) 午前 11 時 1 分量子力学とクライン ゴルドン方程式 ( 学部 3 年次秋学期向 ) 量子力学とクライン ゴルドン方程式 素粒子の満たす場 y ( x,t) の運動方程式 : クライン ゴルドン方程式 : æ 3 ö ç å è m= 0

Microsoft Word - Cプログラミング演習(12)

解析力学B - 第11回: 正準変換

Chap2.key

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

GTC Japan, 2018/09/14 得居誠也, Preferred Networks Chainer における 深層学習の高速化 Optimizing Deep Learning with Chainer

NEE 研究会第 18 回講演討論会 OpenFOAM への計算機能追加連続的データ同化法 (VCA 法 ) の実装 大阪大学大学院工学研究科博士後期課程松尾智仁 内容 1.OpenFOAM を使う理由 1.1 OpenFOAMの特徴 1.2 OpenFOAMを使うにあたって 2.OpenFOAM

のプログラムはそのままでは 人間は理解できても コンピュータは理解できません 皆さんが作るプログラムはソースプログラム ( ソースファイル ) と呼ばれます C 言語では *.c という形式にファイルで作成します そのソースプログラムをコンピュータが理解できるようなデータ形式に変換することをコンパイ

スライド 1

Ł\”ƒ-2005

計測コラム emm182号用


第 3 章二相流の圧力損失

memo

about MPI

Transcription:

地球流体力学に関する GPGPU を用いた数値計算 神戸大学惑星科学研究センター西澤誠也

地球流体力学とは 地球 惑星に関連がある流体の力学 回転, 重力の影響 e.g. 大気, 海洋, マントル

数値計算は天気予報 & 弾道軌道予測から始まった ベクトル計算機 地球流体の計算はベクトル長が長いものが多い ベクトル計算機の凋落 某社の次世代スパコンからの撤退

個人的スパコンの将来予想 個々の演算器はシンプルに 単一演算器の消費電力を減らす トランジスタ数を減らす» 消費電力はトランジスタ数におおよそ比例» 性能はトランジスタ数の平方根におおよそ比例 クロック周波数を下げる» 消費電力 ( クロック周波数におおよそ比例 ) は電圧の自乗の比例» 性能はクロック周波数に比例 製作コストを下げる ( 歩留まりをあげる ) ダイサイズを大きくしない 演算器の数を増やす ( 超並列 ) 比較的単純な汎用プロセッサをたくさん 加速器 e.g. GPU, GRAPE

超並列 コーディングがより困難に メモリアクセス 通信 競合 演算は安く, メモリ, ネット,IO バンド幅が高価に 無駄な計算をおしまない ノウハウの蓄積が必要 まずは簡単な問題から 知識の共有 個々人で別々にやっていては効率が悪い

計算事例 1 ランダムな乱れた流れから秩序構造(大規模 渦)をもつ流れへ発展 エネルギーの逆カスケード 初期時刻 時間発展後 渦度場の時間発展の様子

2 次元 現実世界は 3 次元であるが, 重力, 回転の影響で, 現象は 2 次元的な振る舞いをする 成層 テーラーカラム 乱流と大規模渦 渦 現実の現象では, 小さなスケールと大きなスケールの現象が相互に影響し合っている 現実の現象には渦が満ちあふれている 低気圧 亜熱帯還流

解くべき変数は渦度のみ ζ t + u ζ x + v ζ y + βv = ν 2p ζ ζ :vorticity u, v :verocity(x, y direction) β : latitudinal gradient of planetary vorticity ν :diffusion coefficient

もともと Fortran でコードを書いていた 差分化 : スペクトル法 ( 三角関数 ) 切断波数 : 682 ( 空間解像度 : 2048 x 2048) 境界条件 : 周期境界条件 時間積分 : 4 次のルンゲクッタ時間ステップ数 10,000 で 計算時間はおおよそ1ヶ月 (Intel Core 2 Quad 9550)

スペクトル法とは 偏微分方程式の数値解法の一つ 関数を いくつかの独立な基底関数に展開し 展開係数に対する常微分方程式を計算する e.g. 三角関数 (sin,cos) f(x) = KX a(k)cos(kx)+b(k)sin(kx) k=0

ある物理量は x の関数 離散化 格子点 ( 差分法 ) 基底関数 ( スペクトル法 )

長所 展開関数系として なめらかな関数を選ぶことにより 偏微分を差分近似することによる誤差がない ( 高精度 ) 展開関数系をうまく選ぶことにより 得られる常微分方程式が非常に簡単になる 短所 境界条件や領域の形が複雑な場合は 展開係数が簡単には構成できない 非線形の場合には特別な工夫が必要となる

非線形項の計算 非線形項のみ 実空間で計算する たたみ込み積分は計算量が多い 計算量 : O(N 2 ) 前後に実 スペクトル変換が必要 高速な変換法が利用できる 高速フーリエ変換 (FFT) の計算量 : O(NlogN) エイリアスエラー ( エイリアシング ) を除去する 実空間における格子点数を切断波数の 3 倍以上とる必要がある

GPGPU により高速化 CUDA + cufft 一週間程度の開発で約 20 倍 (Tesla C1060 vs Core2Quad Q9550) ほとんどチューニングなしで まずまずの高速化 GPGPU 普及には非常に重要な点 深く考えずにとにかくやってみましょう

cufft ライブラリ FFT を CUDA で動作するように実装したライブラリ CUDA Toolkit に含まれる 特別なものをインストールする必要が無い

sample code ( 実数のフーリエ変換 ) #include <cufft.h> #include <math.h> #define NX 256 int main(int argc, char **argv) { float data_h[nx+2], *data; cuffthandle plan_r2c, plan_c2r; // 順変換 逆変換用のプランが必要 (r2c の場合 ) cufftplan1d(&plan_r2c, NX, CUFFT_R2C, 1); // 順変換用プラン作成 cufftplan1d(&plan_c2r, NX, CUFFT_C2R, 1); // 逆変換用プラン作成 for (int i=0; i<nx; i++) data_h[i] = sinf( 2*M_PI*i/NX ); // 波数 1 の sin データ作成 cudamalloc((void**) &data, sizeof(float)*(nx+2)); // スペクトルデータは, NX+ 2 必要 (r2c の場合 ) cudamemcpy(data, data_h, sizeof(float)*nx, cudamemcpyhosttodevice); cufftexecr2c(plan_r2c, data, (cufftcomplex*) data); // 順変換実行 ( 結果は NX 倍されている ) cufftexecc2r(plan_c2r, (cufftcomplex*) data, data); // 逆変換実行 cufftdestroy(plan_r2c); // プラン破棄 cufftdestroy(plan_c2r); cudafree(data); return(0); }

速度比較 1 次元実フーリエ 1000 回順 逆変換 ( 計 2000 回 ) fftw (Intel Core2Quad Q9550) cufft (Nvidia Tesla C1060) sec 18.00 16.00 14.00 12.00 10.00 8.00 6.00 4.00 2.00 0.00 N が大きくなればなるほど GPU が速い N fftw cufft

計算事例 2 2 次元点渦 粒子法のようなもの 渦無し流れの中に 面積 0 の点渦を配置 点渦から速度場を計算し 点渦を移流させる ψ i = 1 2π X j6=i Γ j log x j x i ψ :streamfunction, Γ :circuration

OpenCL の利用 メリット CPU でも,N 社 GPU でも, A 社 GPU でも なんだかんだで CPU で動くことは重要 ( デバッグがしやすい ) 特定の企業に依存しない デメリット 事例 / ドキュメントが少ない おきまりの記述が多くて面倒くさい 便利なライブラリを利用する

Ruby OpenCL OpenCL( ホストコード部分 ) の Ruby バインディング OpenCL の 1:1 ラッパー + α ( 便利な機能 ) オブジェクト解放から解放 情報取得の簡単化 メモリ転送をお任せにすることもできる 他の有用な Ruby ライブラリ群を利用できる IO, 描画, 通信, etc http://ruby opencl.rubyforge.org/

require "quick_opencl" kernel_source = <<EOF kernel void dot_product ( global const float4 *a, global const float4 *b, global float *c) { int gid = get_global_id(0); c[gid] = dot(a[gid], b[gid]); // a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3]; } EOF n = 256 OpenCL::Quick.init srca = OpenCL::Quick::VArray.new(OpenCL::VArray::FLOAT4, n) srcb = OpenCL::Quick::VArray.new(OpenCL::VArray::FLOAT4, n) dst = OpenCL::Quick::VArray.new(OpenCL::VArray::FLOAT, n) for i in 0...n srca[i] = OpenCL::Float4.new(i,i,i,i) srcb[i] = OpenCL::Float4.new(i,i,i,i) end OpenCL::Quick.sources = [kernel_source] OpenCL::Quick.execute_NDRange("dot_product", [srca, srcb, dst], [n], [1]) p dst # => 0.0, 4.0, 16.0, 36.0,..

まとめ 今後は超並列時代に ノウハウの蓄積が必要 まずは簡単なところから 知識の共有 利用者人口を増やす必要がある GPGPU 使用事例 2 次元乱流 お手軽 GPGPU 化 2 次元点渦 OpenCL, Ruby OpenCL の利用

GPGPU の普及に向けて コスト と ゲイン のバランス それなりの労力でまずまずの速度向上 チューニング無しでもそれなり Fermi でよりお気軽に? まず GPGPU 化してみる 将来無駄になるという不安 過渡期であることは間違いない 超並列のノウハウは生き続けるに違いない 新しいものへの抵抗感 現状で特に問題ない 将来でも問題ないか? 新しいものに取り組む時間がない