OpenFOAM 勉強会 C++ プログラム相談 のご案内 オープン CAE シンポジウム 2012 金田誠 (OpenFOAM 勉強会 for 関東 ) 1

Similar documents
並列計算導入.pptx

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

目次 LS-DYNA 利用の手引き 1 1. はじめに 利用できるバージョン 概要 1 2. TSUBAME での利用方法 使用可能な LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラ

Micro Focus Enterprise Developer チュートリアル メインフレーム COBOL 開発 : MQ メッセージ連携 1. 目的 本チュートリアルでは CICS から入力したメッセージを MQ へ連携する方法の習得を目的としています 2. 前提 使用した OS : Red H

スクールCOBOL2002

Microsoft PowerPoint - C++_第1回.pptx

PowerPoint プレゼンテーション

はじめての OpenFOAM その 3 富 県 学 中川慎二 オープンCAE 富 2014 年 1 月 25 日 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD Limited, the producer of the

開発ツールのコラボレーション機能を検証する

スライド 1

OpenCAE-GIFU _pptx

Relay Socket for Industrial Relay                    1/2

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

intra-mart Accel Platform — intra-mart Sphinxドキュメント ビルド手順書   第2版  

150615_all.pdf


untitled

Microsoft PowerPoint - 演習1:並列化と評価.pptx

Fortran 勉強会 第 5 回 辻野智紀

表1-4.ai

4. 環境変数の設定実行にあたり 次のように環境変数を設定する必要があります 1)SJIS ロケールの指定コマンド例 )export LANG=ja_JP.sjis 2)MQ 環境の指定コマンド例 ). /opt/mqm/bin/setmqenv s 3)COBOL 実行環境の指定コマンド例 ).

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

分割コンパイル (2018 年度 ) 担当 : 笹倉 佐藤 分割コンパイルとは 一つのプログラムのソースを複数のソースファイルに分けてコンパイルすること ある程度大きなプログラムの場合ソースファイルをいくつかに分割して開発するのが普通 1

NUMAの構成

about MPI

VPN 接続の設定

Fujitsu Standard Tool

Microsoft PowerPoint - OpenMP入門.pptx

Microsoft PowerPoint - 09.pptx

+福島裕子.indd

Source Insight

UIOUSBCOM.DLLコマンドリファレンス

EnSightのご紹介

TFTP serverの実装

Microsoft Word - ManagerIPChange.doc

Microsoft PowerPoint - OS07.pptx

PowerPoint プレゼンテーション

Code_Aster / Salome-Meca 中級者への道 2015年5月31日

Prog2_12th

<基礎領域>

DAD Viewer Guide - Japanese - Updated 26 October 2009

PHP 分科会 '12/01 OpenSource 協議会 System i 2012/01/26

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

VBコンバータ利用方法

REX-C56EX FAX送信 第5.0版

レコードとオブジェクト

2010年4月~6月 協業実績報告

農業・農村基盤図の大字小字コードXML作成 説明書

Ontrack PowerControls バックアップ・復旧ガイド

untitled

Microsoft PowerPoint - RemoteGuide pptx

スライド 1

KTest

次 CAE を取り巻く環境と展望 企業がシミュレーションに抱える痛み :3 つの例 クラウド CAE サービス Cistr Cistr のシステム概要 最新版 Cistr でできること Cistr を利 してみる 2

富士通Interstage Application Server V10でのOracle Business Intelligence の動作検証

<4D F736F F D20B6BCB5D7B2CCDED7D8CFC6ADB1D9315F43532E444F43>

intra-mart Accel Platform

FW APIServer 設定ガイド Version 年 2 月 3 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

Microsoft Word _001b_hecmw_PC_cluster_201_howtodevelop.doc

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

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

HTTP 404 への対処

TheRecordx.indd

インストールマニュアル

DumpCollection IT Exam Training online / Bootcamp PDF and Testing Engine, study and practice

Congress Deep Dive

SOC Report

nakao

Gfarm/MPI-IOの 概要と使い方

PowerPoint プレゼンテーション

2018/9/19 for DEXCS2018 DEXCS for OpenFOAM における 推奨メッシュ生成法 オープンCAEコンサルタント OCSE^2 代表 野村悦治 1 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD L



好きですまえばし

Webアプリケーションでのlog4j利用ガイド

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

USDM Quick Start Guide 2014 年 1 月 第 1.0 版 第 29 年度 (2013 年度 ) SQiP 研究会第 6 分科会 D グループ

技術資料 JARI Research Journal OpenFOAM を用いた沿道大気質モデルの開発 Development of a Roadside Air Quality Model with OpenFOAM 木村真 *1 Shin KIMURA 伊藤晃佳 *2 Akiy

デザインパターン第一章「生成《

ソフトウェアエンジニアリング - 機能 #54

プログラミング実習I

Microsoft PowerPoint - 04_01_text_UML_03-Sequence-Com.ppt

レベルアップ詳細情報 < 製品一覧 > 製品名 バージョン < 追加機能一覧 > 管理番号 内容 説明書参照章 カナ文字拡張対応 < 改善一覧 > 管理番号 内容 対象バージョン 説明書参照章 文字列のコピー ペースト改善 ~ 子画面の表示方式 ~ 履歴の詳細情報 ~ タブの ボタン ~ 接続時の管

Windows Server 2003での使用方法

Microsoft PowerPoint _MPI-01.pptx

Slide 1

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

10 完了 をクリック 13 このサーバーは認証が必要 をチェックして 設定 をクリック Windows メール Windows Vista に標準のメールソフト Windows メール の設定方法を説明します 1 スタート から 電子メール Windows メール をクリック 11 続いて設定ファ

InstallShield FAQ < 独自の InstallShield 前提条件を作成する > 注 ) このドキュメントは InstallShield 2014 Premier Edition を基に作成しています InstallShield 2014 以外のバージョンでは設定名などが異なる場合

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

REPORT



Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上

Gromacsユーザーマニュアル

TheRecord.indd

Microsoft Word - nvsi_100207jp_quantumi40.doc

第8回講義(2016年12月6日)

Python によるジオプロセシング スクリプト入門

Transcription:

OpenFOAM 勉強会 C++ プログラム相談 のご案内 2012.12.15 オープン CAE シンポジウム 2012 金田誠 (OpenFOAM 勉強会 for beginner@ 関東 ) 1

C++ 学習法 C++ プログラマを目指す人 OpenFOAMの解析者 学習法が同じであって良いはずがない 解析者は C++ ばかりに時間を割いていられない 2

本を紹介して と言われると悩む Effective C++ Scott Meyers ( 著 ) C++ プログラマを目指す人が 入門書の次に読む本として優れた名著 ただし OpenFOAM の解析者にお勧めして良いものか 悩ましい 高度なことも書かれている 勉強しすぎかも 3

そうは言っても OpenFOAM は難しい OpenFOAM のソースコードは容赦ない template や多重継承のような上級者向けの機能を 容赦なく使っている 細かい話は避けますが OpenFOAM の多重継承の使い方は行儀が悪い ( と思う ) 余計に難しい ちゃんと C++ を勉強しないと歯が立たない? 4

C++ を知っている人に聞いてしまえば楽! OpenFOAM 勉強会 @ 関東で C++ プログラム相談 を始めました 少し自己紹介金田誠 C++ プログラマ出身の流体解析エンジニア 業務では宇宙輸送機周りの極超音速流れの解析 職場では格子職人と呼ばれています 5

C++ プログラム相談事例紹介 いままでのご相談事例から 3 件ご紹介します 1 件目 : 連成計算の通信部分を並列計算に対応させたい 2 件目 : 連成計算が FOCUS スパコンで動かない 3 件目 : ソースカスタマイズしたソルバを実行すると実行時エラーで落ちる 6

1 件目 : 連成計算の通信部分を並列計算に対応させたい 7

2 件目 : 連成計算が FOCUS スパコンで動かない 空調シミュレータと OpenFOAM を連成 空調シミュレータ : 単一プロセス OpenFOAM: フラット MPI で並列計算 空調シミュレータとOpenFOAMの間はソケット通信 手元のワークステーションでは動く FOCUSスパコンで通信できないというご相談 ソケット通信をMPIで書き換えてみた 8

前提知識 : 並列処理のモデル SPMD Single Program Multiple Data 同じプログラムで並列処理を行う MPI のプログラムは ほとんどが SPMD モデル (OpenFOAM も ) MPMD Multiple Program Multiple Data 複数のプログラムを協調させて並列処理を行う 今回はこっち 私は経験がなかった 9

ソースカスタマイズの要件 OpenFOAM は 可能ならライブラリに手を加えたくない ソルバのみのカスタマイズに留めたい MPI の機能で 空調シミュレータと OpenFOAM を別グループに分けることにより実現 10

グループ間通信 空調シミュレータのグループ OpenFOAM のグループ マスタープロセス 単一プロセス MPI_COMM_WORLD MPI_COMM_WORLD 11

グループ間通信 MPI のグループ間コミュニケータを使って通信 今回は OpenFOAM 側は マスタープロセスのみが空調シミュレータと通信するようにした マスタープロセスが受け取ったデータを 各ワーカープロセスに分配 12

カスタマイズ後の動作確認 DEXCS 上では動いた FOCUS スパコンでは まだ動作確認していないそうです 動作確認できたら いずれ発表できるかも 13

プログラムの起動方法 ( OpenMPI の場合 ) (1) ネームサーバーを立ち上げる $ ompi-server -d --report-uri $HOME/ompi-uri.dat $HOME/ompi-uri.dat は任意のファイル名にして良い 連成するプログラム間を動的に接続するとき サービス名の解決に使用 システムに ompi-server がないときの最終手段は? OpenMPI をソースからビルド 14

プログラムの起動方法 ( OpenMPI の場合 ) (2) 空調シミュレータを起動する $ mpiexec -ompi-server file:$home/ompi-uri.dat -np 1 逐次処理でも mpiexec を使って動かす必要がある (3) OpenFOAM を並列で起動する $ mpiexec -ompi-server file:$home/ompi-uri.dat -np 4 aaafoam -parallel 15

処理の流れ ( 空調シミュレータ側 ) // クライアント (OpenFOAM) が接続するポートを生成する MPI_Open_port(MPI_INFO_NULL, port_name); // ポート名をサービス名に関連付ける サービス名はプログラマが指定できる MPI_Publish_name(const_cast<char*>(service_name.c_str()), MPI_INFO_NULL, port_name); // クライアントの接続要求を受け付ける MPI_Comm_accept(port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF, &client_comm); // 処理 // ポート名とサービス名の関連を切り離す MPI_Unpublish_name(const_cast<char*>(service_name.c_str()), MPI_INFO_NULL, port_name); // ポートを閉じる MPI_Close_port(port_name); // クライアントを切り離す MPI_Comm_disconnect(&client_comm); 16

処理の流れ (OpenFOAM 側 ) // サービス名を渡して 特定のポート名に接続する MPI_Lookup_name(const_cast<char*>(service_name.c_str()), MPI_INFO_NULL, port_name); // サーバー ( 空調シミュレータ ) との接続を確立する MPI_Comm_connect(port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF, &server_comm); // 処理 // サーバーを切り離す MPI_Comm_disconnect(&server_comm); 17

参考文献 18

3 件目 : ソースカスタマイズしたソルバを実行すると 実行時エラーで落ちる #0 Foam::error::printStack(Foam::Ostream&) in "/opt/openfoam/openfoam- 2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #1 Foam::sigSegv::sigHandler(int) in "/opt/openfoam/openfoam- 2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #2 at sigaction.c:0 #3 typeinfo for Foam::HashTable<Foam::regIOobject*, Foam::word, Foam::string::hash> in "/opt/openfoam/openfoam- 2.1.1/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" セグメンテーション違反です ( コアダンプ ) 19

乱流モデル変数のコンストラクタ呼び出し PtrList<incompressible::RASModel> turbulence(fluidregions.size()); ( 中略 ) forall(fluidregions, i) { singlephasetransportmodel laminartransport(ufluid[i], phifluid[i]); turbulence.set ( ); i, ( 中略 ) } autoptr<incompressible::rasmodel> ( incompressible::rasmodel::new ( ) ).ptr() UFluid[i], phifluid[i], laminartransport forall ループのブロック開始 乱流モデル変数を格納するコンテナ 繰り返しの度に laminartransport 変数のコンストラクタが呼ばれる 乱流モデルクラスのコンストラクタに参照が渡されて 乱流モデル内部から参照される forall ループのブロック終了 繰り返しの度に laminartransport 変数のデストラクタが呼ばれる 20

結論 turbulence 変数 ( コンテナ ) は forall ループの外で定義されているため forall ループが終わっても生き続ける laminartransport 変数は forall ループの中でローカル変数として定義されているため forall ループの繰り返しのたびに生成 破壊が行われる その後 turbulence 変数の要素から 寿命の尽きた laminartransport 変数を参照したときに ソルバが実行時エラーで落ちる 21

C++ プログラム相談 受付中 OpenFOAM 勉強会内の活動として C++ プログラム相談を受け付けております 名前 : 金田誠 メール : メールまたは勉強会 @ 関東で直接お声掛けください 勉強会でのご相談は無料ですが ビジネスの話も歓迎します その場合も まず勉強会の無料相談をお試しいただけます 22