富士通c++コンパイラの 性能向上の取り組み › materials ›...
TRANSCRIPT
![Page 1: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/1.jpg)
Copyright 2013 FUJITSU LIMITED
富士通C++コンパイラの
性能向上の取り組み
2013年9月27日
富士通株式会社
ミドルウェア事業本部
アプリケーションマネジメント・ミドルウェア事業部 第四開発部
千葉 修一
![Page 2: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/2.jpg)
Copyright 2013 FUJITSU LIMITED
富士通C++コンパイラ
C++コンパイラの概要
C++コードに対する課題
最適化の拡張
性能状況
OpenFOAM
FX10向けOpenFOAM
OpenFOAM構築
OpenFOAM利用
OpenFOAMの性能改善
流体解析ヘルプデスク(OpenFOAM)
Agenda
1
![Page 3: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/3.jpg)
Copyright 2013 FUJITSU LIMITED
富士通C++コンパイラ
2
![Page 4: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/4.jpg)
Copyright 2013 FUJITSU LIMITED
製品名 Parallelnavi for MP10 - 「京※」向け Technical Computinig Suite - PRIMEHPC FX10向け
仕様
ISO/IEC 14882:2003規格
GNU C++ コンパイラ仕様 (一部)
Standard Template Library: STLport 5.0.0 / 5.2.1 / 5.0.0 fast mode
機能
逐次最適化機能
インライン展開、ループ最適化、SIMD化、ソフトウェアパイプライニング、etc.
並列化機能
自動並列化、OpenMP API Version 3.0 May 2008
C++コンパイラの概要
* 「京」は独立行政法人理化学研究所の登録商標です。 * スーパーコンピュータ「京」は、独立行政法人理化学研究所と富士通の共同開発です。
3
![Page 5: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/5.jpg)
Copyright 2013 FUJITSU LIMITED
アプリケーション実行性能における問題
C++コードに対する課題
(sec)
0.00
5000.00
10000.00
15000.00
20000.00
25000.00
30000.00
35000.00
富士通C++ 2012/09
GNU C++
multiphase/interDyMFoam/ras/sloshingTank3Dmultiphase/multiphaseInterFoam/laminar/damBreak4phasemultiphase/interFoam/ras/damBreakmultiphase/MRFMultiphaseInterFoam/mixerVessel2Dincompressible/MRFSimpleFoam/mixerVessel2DheatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomheatTransfer/buoyantPimpleFoam/hotRoomheatTransfer/buoyantBoussinesqPimpleFoam/hotRoomcompressible/rhoPorousMRFPimpleFoam/mixerVessel2Dcombustion/PDRFoam/flamePropagationWithObstaclesDNS/dnsFoam/boxTurb16basic/potentialFoam/pitzDaily
OpenFOAM 2.1.0 付属 チュートリアルコード 13本選出における性能比較で、2.3倍差
2.3倍差
※性能測定は、FX10を利用
4
![Page 6: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/6.jpg)
Copyright 2013 FUJITSU LIMITED
最適化機能の改善計画
C++コードに対する課題
開発言語共通 最適化機能
C++言語仕様 最適化機能
C++コード 最適化機能
特殊なコード 最適化機能
Base Function 1st Ext.
2nd Ext.
3rd Ext.
Fortran/C/C++共通汎用最適化 ハードウェア向け最適化
インライン展開の強化 STLport 5.0.0 fast modeの開発 効果: テンプレート、operator、etc.
再帰向けインライン展開の強化 スケジューリングの改善 効果: 再帰型テンプレート
コード一括変換型最適化 ループの多段変形 効果: CRTP、ガウスザイデル法 smoother
2012/09 2013/09 2014/03 2014/09
5
![Page 7: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/7.jpg)
Copyright 2013 FUJITSU LIMITED
C++機能に対する最適化状況
C++コードに対する課題
C++ 技術 最適化機能
対応状況・予定
base
'12/09
1st
'13/09
2nd
'14/03
3rd
'14/09
クラス コンストラクタ/デストラクタ分岐削除 × △ △ ○
例外処理 unwindライブラリ ○ ○ ○ ○
自動インライン
インライン属性 ユーザ指示インライン展開 × △ ○ ◎
STL SPARCアーキテクチャ対応による
STLport 5.0.0 fast mode × △ △ ◎
多重継承
テンプレート
operator
インライン展開、
ローカルスケジューリング × △ ○ ◎
再帰型テンプレート 再帰向けインライン展開 × × △ ○
CRTP、仮想関数
フレンド関数
型変換解析、仮想関数テーブル除去
特殊属性インライン展開 × × × ○
ポインタ、構造体 依存解析、PointerValueResolution × △ △ ○
×:未着手 △:50%対応完了 〇:90%対応完了(g++レベル) ◎:対応完了
6
![Page 8: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/8.jpg)
Copyright 2013 FUJITSU LIMITED
最適化の拡張
Memory pool allocate/deallocate
instance
Base Function
1st Extension
Memory pool allocate/deallocate
instance
:Lock Object
排他用オブジェクトの再利用 排他論理のC&Sに変更 高速モードオプションを追加
STLport 5.0.0 fast mode
SPARCアーキテクチャ向けチューニングによる高速化を実現
Lock Objectの生成オーバ ヘッドが高い
pthreadを利用したライブラリ・レベルの排他
7
![Page 9: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/9.jpg)
Copyright 2013 FUJITSU LIMITED
再帰型テンプレート
1から10までの数字の合計を算出するプログラム
最適化の拡張
Num
template< int S, int E > class Num // S: start, E: end { public: static const int status = (S < E) ? 1 : 0; static int getSum() { return S + Num< status*(S+1), status*E >::getSum(); }
template<> class Num< 0, 0 > // Partial template specialization { public: static int getSum() { return 0; } // tail call
main() { Num<1,10> n; cout << "sum=" << n.getSum() << endl ;; // sum=55
8
![Page 10: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/10.jpg)
Copyright 2013 FUJITSU LIMITED
最適化の拡張
再帰型テンプレート
再帰呼び出し向けのインライン展開による即値の伝搬
Base Function
call Graph
int Num<N, I>::getSum() [with int S = 1, int E = 10]
→int Num<N, I>::getSum() [with int S = 2, int E = 10]
→int Num<N, I>::getSum() [with int S = 3, int E = 10]
・・・
→int Num<N, I>::getSum() [with int S = 10, int E = 10]
→int Num<N, I>::getSum() [with int S = 0, int E = 0]
2nd Extention
call Graph
55
完全なインライン展開 即値を設定
すべて別名関数 部分特殊化の利用
9
![Page 11: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/11.jpg)
Copyright 2013 FUJITSU LIMITED
最適化の拡張
三角形 : 正多角形
class Polygon { private: int side; virtual int calcArea(int side) = 0; public: int getArea() { return calcArea(side); }
class Triangle : public Polygon { private: int calcArea(int side) { return side * side / 2; }
int main(int argc, char *argv[]) { Triangle t(100); cout << "triangle area=" << t.getArea() << endl ;; // 5000
仮想関数
基底クラス:Polygonを持つTriangleの面積算出プログラム
10
![Page 12: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/12.jpg)
Copyright 2013 FUJITSU LIMITED
最適化の拡張
call calcArea
Base Function
3rd Extension
vtable (仮想関数テーブル)
Polygon::calcArea
仮想関数
仮想関数テーブルの削除により即値を伝搬
calcArea() { ・・・ }
Triangle search
calcArea Polygon
getArea() { ・・・ }
5000
inline
Polygon
getArea() { ・・・ }
calcArea() { ・・・ }
Triangle
inline
オーバライドの検出 仮想関数テーブルの削除 インライン展開の強化
即値を設定
仮想関数テーブルによる 間接アクセス
11
![Page 13: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/13.jpg)
Copyright 2013 FUJITSU LIMITED
CRTP:Curiously Recurring Template Pattern
基底クラス:Polygonを持つTriangleの面積算出プログラム
最適化の拡張
三角形 : 正多角形
template<class T> class Polygon { private: int side; public: int getArea() { return static_cast<T&>(*this).calcArea(side); }
class Triangle : public Polygon<Triangle> { public: int calcArea(int side) { return side * side / 2; }
int main(int argc, char *argv[]) { Triangle t(100); cout << "triangle area=" << t.getArea() << endl ;;
12
![Page 14: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/14.jpg)
Polygon
getArea() { //キャスト呼び出し static_cast<T&>(*this) }
Copyright 2013 FUJITSU LIMITED
最適化の拡張
CRTP:Curiously Recurring Template Pattern
型変換解析の強化による即値の伝搬
call calcArea
Base Function
3rd Extension
Polygon
getArea() { //キャスト呼び出し static_cast<T&>(*this) }
5000
型変換解析の強化 インライン展開の強化
calcArea() { ・・・ }
Triangle call
getArea
inline
calcArea() { ・・・ }
Triangle
inline
即値を設定
アドレスに対する型変換
13
![Page 15: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/15.jpg)
Copyright 2013 FUJITSU LIMITED
コーディングスタイルによる性能の変化
コーディングスタイルの異なるC++コードの姫野ベンチを作成し、実行性能
の変化を計測 ※ 富士通C++、GNU C++ともに同じ傾向
最適化の拡張
チューニングのポイントは、コーディングスタイルにもある
0
200
400
600
800
1000
1200
1400
1600
himenoBMT type 1 himenoBMT type 2 himenoBMT type 3
1572.56 55.82 38.73
type 1 (Fortranコード ライク) 配列アクセスを利用したコード type 2 (C言語コード ライク) ポインタアクセスを利用したコード type 3 (C++コード ライク) テンプレートを利用したコード
(MFLOPS)
※性能測定は、FX10を利用
14
![Page 16: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/16.jpg)
Copyright 2013 FUJITSU LIMITED
アプリケーション実行性能
性能状況
OpenFOAM 2.1.0 付属 チュートリアルコード 13本選出における性能比較
0
5,000
10,000
15,000
20,000
25,000
30,000
35,000
富士通C++ 2012/09
富士通C++ 2013/09
富士通C++ 2014/09
GNU C++
multiphase/interDyMFoam/ras/sloshingTank3Dmultiphase/multiphaseInterFoam/laminar/damBreak4phasemultiphase/interFoam/ras/damBreakmultiphase/MRFMultiphaseInterFoam/mixerVessel2Dincompressible/MRFSimpleFoam/mixerVessel2DheatTransfer/buoyantSimpleRadiationFoam/hotRadiationRoomheatTransfer/buoyantPimpleFoam/hotRoomheatTransfer/buoyantBoussinesqPimpleFoam/hotRoomcompressible/rhoPorousMRFPimpleFoam/mixerVessel2Dcombustion/PDRFoam/flamePropagationWithObstaclesDNS/dnsFoam/boxTurb16basic/potentialFoam/pitzDailybasic/laplacianFoam/flange
(sec)
コンパイルオプション -O3 -Xg -Klib -Krdconv -Kfp_contract -Nstl=500fast ※ チュートリアルによっては、 FPEが発生する場合あり
※性能測定は、FX10を利用
15
![Page 17: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/17.jpg)
0
10
20
30
40
50
60
70
80
90
100
富士通C++ 2012/09 富士通C++ 2013/09
Copyright 2013 FUJITSU LIMITED
アプリケーション翻訳性能
性能状況
36 % 性能改善
OpenFOAM 2.1.0 付属 チュートリアルコード 177本選出における性能比較
(%)
※性能測定は、FX10を利用
16
![Page 18: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/18.jpg)
Copyright 2013 FUJITSU LIMITED
OpenFOAM
17
![Page 19: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/19.jpg)
FX10向けOpenFOAM
FX10におけるOpenFOAMの取り組み
FX10は市販(ISV)アプリの動作実績が少ないため、OSS(流体解析分野ではOpenFOAM)を強化。
OpenFOAMの調査・分析を行い、コンパイラ改善、性能改善を実施し、FX10向けに提供
東京大学)情報基盤センター様 FX10 (Oakleaf-FX)の状況
OpenFOAMのリリース状況
実行確認は、OpenFOAM tutorialsを使用。2.1.0/2.1.1は、560ケース中557の走行を確認(3ケースはIA Intelコンパイラと同等)。
2.2.0はアプリケーションバグが多く、2.2.1で確認作業を実施中。
Copyright 2013 FUJITSU LIMITED
OpenFOAM Version 公開日 最終更新日
2.1.0 2012/4/2 2013/3/18 9/26迄 デフォルト
2.1.1 2013/2/22 2013/3/18
2.2.0 2013/3/18 2013/5/30
2.2.1 2013/9/28 - 9/28以降のデフォルト
18
![Page 20: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/20.jpg)
OpenFOAM構築 (東大情報基盤センター様 FX10)
構築方法
東大センター(Oakleaf-FX)の利用支援ポータルから、FX10用OpenFOAMのパッチと構築手順のダウンロードが可能。(Oakleaf-FXのアカウントが必要)
FX10の開発環境は、ログインノードと計算ノードで環境が異なる。
•ログインノード : IA機 - x86, FJクロスコンパイラ,リトルエンディアン
•計算ノード : FX10 - SPARC, FJオウンコンパイラ,ビックエンディアン
Copyright 2013 FUJITSU LIMITED
1) OpenFOAMとThird-Partyを ダウンロード
2) Third-Partyはオウンコンパイラ で構築
3) OpenFOAMはクロスコンパイラ で構築
4) tutorialsで動作確認
19
![Page 21: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/21.jpg)
Oakleaf-FXでの環境設定 (Environment Modules を利用)
利用可能なライブラリ・アプリを表示 (ログインノードとインタラクティブノードで異なる)
OpenFOAM 2.2.1の環境を設定
利用例
OpenFOAM用メッシュの作成(blockMesh snappyHexMesh、その他)
パラメタ、モデル設定等、実行スクリプト準備
ジョブ投入 (Oakleaf-FX : pjsub:投入 , pjstat:確認)
ポスト処理(Paraview等)
Copyright 2013 FUJITSU LIMITED
[user@fx10 ~]$ module avail -------------- /usr/local/share/Modules/modulefiles/apps -------------- OpenFOAM/2.1.0(default) OpenFOAM/2.2.0 OpenFOAM/2.2.1 : :
[user@fx10 ~]$ module load OpenFOAM/2.2.1 [OpenFOAM 2.2.1を設定] [user@fx10 ~]$ module list [環境設定されたことを確認] Currently Loaded Modulefiles: 1) TCSuite/GM-1.2.1-06 2) OpenFOAM/2.2.1
OpenFOAM利用 (東大情報基盤センター様 FX10)
20
![Page 22: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/22.jpg)
Foam::GaussSeidelSmoother::smooth()
• 3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展開したルートを通るようにコード変更。実行時間が、51.66秒→32.14秒に短縮
プロセス間リダクション演算にTofuバリア機構を利用
• プロセス間リダクション演算がMPI_Send/Recvで実装されている。 MPI_Allreduceを使用するバイパスルートを追加 。対象関数: Foam::reduce()
平方根演算のコスト削減
• 平方根演算が多いが、逆数近似命令が使用されていないため、翻訳オプション -Klib,fp_relaxedを適用。 ※ FPEで異常終了する事もあり注意が必要
OpenFOAMの性能改善
利用頻度の高い tutorials を選定し性能改善を実施中
Copyright 2013 FUJITSU LIMITED
チュートリアル名 内容 問題規模
motorBike 風環境解析 34万格子 (逐次実行)
hotRoom 定常熱流体解析 4千格子 (逐次実行)
multiRegionHeaterRadiation 伝熱連成解析 3千格子 (逐次実行)
propeller 回転機械解析 57万格子 (4並列実行)
buoyantBoussinesqSimpleFoam 定常熱流体解析 -
今後も性能改善を継続し、OpenFOAMチューニング版の情報提供を予定
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
0 10 20 30 40 50 60 70 80 90 100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
ランク
演算 集団通信開始待ち
一対一通信完了待ち その他の通信
パフォーマンス解析
21
![Page 23: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/23.jpg)
流体解析ヘルプデスク(OpenFOAM)
サービス一覧
ホームページ http://jp.fujitsu.com/solutions/hpc/tccloud/helpdesk/openfoam.html
Copyright 2013 FUJITSU LIMITED
導入サービス インストール、動作チェック
Q&Aサービス e-mailにより技術的なご質問回答
教育サービス 操作講習、理論解説、等
お客様のニーズ応じたコースを提供
受託開発サービス 方程式の組込み等、
アプリのカスタマイズを実施
受託解析サービス 十分に経験を積んだ技術者が
お客様の解析を代行 ※ 現在は、IAサーバのみサポート対象
標準ソルバー simpleFoamのカスタマイズ例
solve ( fvm::div(phi, C) ==fvm::laplacian(turbulence->nuEff(), C) );
① トップレベルソースコード simple.C に以下を挿入
② ヘッダーファイル createField.H を編集
③ 新ソルバーをビルド
定常の濃度移流拡散方程式
simpleFoamの流れ場と完全に 一致
追加した濃度の移流拡散方程式が正常に機能
22
![Page 24: 富士通C++コンパイラの 性能向上の取り組み › materials › ws_openfoam_130927_slides...Foam::GaussSeidelSmoother::smooth() •3~4回転のループがソフトウェアパイプライニングされているため、4回転以下の場合は、ループ内容を展](https://reader034.vdocuments.pub/reader034/viewer/2022042404/5f18c0e16202717b254a6b14/html5/thumbnails/24.jpg)
Copyright 2010 FUJITSU LIMITED 23