汎用ポストプロセッサー EnSight

カタログ(PDF 約3.1MB)EnSightカタログ

開発元: 米国 Computational Engineering International, Inc.   http://www.ceisoftware.com

並列分散処理機能を利用してEnSightをバッチ・モードで実行する方法

はじめに

SOS(Server of Servers)による並列分散処理機能を利用してEnSightを起動する場合は、CEIShellネットワークを構築する必要があります。このCEIShellネットワークは、使用する各マシンでCEIShellコマンドを実行する必要がありますが、使用するマシンの台数が多い場合は、手動で各マシンにログインしてCEIShellプログラムを実行するのは非常に面倒です。EnSight10.1で追加された「CEIStart」プログラムを利用すると、各マシン上でのCEIShell の起動から、その構築されたCEIShellネットワーク上でのEnSightの起動までの処理を、クライアント・マシン上から簡単に行えるようになります。ただし、複数のデータの可視化処理を連続的にバッチ・モードで行いたい場合には、CEIStartは使用できません。そのような場合は、バッチ・モードでEnSightを実行するスクリプト・ファイルの中で、CEIShellネットワークの構築も行う必要があります。

ここでは、SOS並列分散処理機能を利用してEnSightをバッチ・モードで実行する場合のスクリプト・ファイルの作成方法について説明します。

CEIShellネットワークを構築するためのPythonスクリプト・ファイルの準備

Pythonスクリプト・ファイルの作成

CEIShellネットワークを構築するためには、EnSightのクライアント・プログラムを実行するマシン(クライアント・マシン)と、EnSightのサーバー・プログラムを実行する各マシン(サーバー・マシン)でCEIShellコマンドを実行するための2種類のPythonスクリプト・ファイルが必要になります。このPythonスクリプト・ファイルは、CEIStart用に作成したものが利用できます。ここでは、「SOS並列分散処理機能を利用する場合」でサンプルとして用意した下記のスクリプト・ファイルを利用します。

 クライアント・マシンで実行するPythonスクリプト・ファイル:     sample_script1_for_sos_fe.py
 サーバー・マシンで実行するPythonスクリプト・ファイル:       sample_script1_for_sos_be.py

クライアント・マシンで実行するPythonスクリプト・ファイルの配置

適宜、「sample_script1_for_sos_fe.py」ファイルをクライアント・マシンのフォルダーに置いてください。

クライアント・マシンで実行するPythonスクリプト・ファイルの配置

適宜、「sample_script1_for_sos_be.py」ファイルを各サーバー・マシンのフォルダーに置いてください。なお、このファイルを置くフォルダーは、各サーバー・マシンで同じパスである必要があります。

バッチ・モードでEnSightを実行するためのスクリプト・ファイルの準備

EnSightをバッチ・モードで実行するには、EnSightの起動コマンドの引数に「-batch」オプションを付けて実行します。バッチ・モードでEnSightを実行するためのスクリプト・ファイルでは、まず、前述のクライアント・マシンで実行するPythonスクリプト・ファイルの実行を行い、その後に、「-batch」オプション付きのEnSightの起動コマンドを実行します。

「sample_script1_for_sos_fe.py」ファイルを実行するための記述

「sample_script1_for_sos_fe.py」ファイルを実行するためには、以下の4つの引数が必要になります。

 実行するCEIShellのバージョン:EnSight 10.1では、「31」を指定します。
 SSHコマンド名:        Windowsで実行する場合は「plink.exe」、Linuxで実行する場合は「ssh」を指定します。
 ログイン名:         各サーバー・マシンにログインする際に使用するユーザー名
 サーバー・プログラムの数:  起動するサーバー・プログラムの数を指定します。

例えば、起動するサーバー・プログラムの数が4つで、Windowsから各サーバー・マシンにユーザー名「user1」でログインする場合は、以下のような記述になります。

cpython31 sample_script1_for_sos_fe.py 31 plink.exe user1 4

「cpython31」は、EnSightのコマンドで、Pythonスクリプト・ファイルを実行するためのものです。使用するには、環境変数CEI_HOMEが正しく設定されている必要があります。なお、一般的なPythonコマンドを使用しても構いません。

EnSightをバッチ・モードで実行するための記述

データの可視化をバッチ・モードで行う場合は、EnSightの起動コマンドの後に、引数として可視化処理を行うためのコマンドが記述されたコマンド・ファイルを「-p」オプションに続けて指定します。例えば、可視化処理を行うためのコマンド・ファイル名が「execute_commands.py」の場合は、以下のようなコマンドになります。

ensight101 -ceishell -sos -batch -p execute_commands.py

「-ceishell」は、前述の「sample_script1_for_sos_fe.py」と「sample_script1_for_sos_be.py」で構築されたCEIShellネットワークを利用することを指定するためのオプションです。また、「-sos」は、SOS並列分散処理機能を利用してEnSightを起動する場合のオプションです。

「ensight101」コマンドの後の引数の順番は、入れ替わっても構いません。


複数のデータの可視化処理を連続的に行う場合は、読み込むデータのファイル名を入れ替えながら、上記の2つのコマンドを繰り返し実行します。

スクリプト・ファイルのサンプル

SOS並列分散処理機能を利用してEnSightをバッチ・モードで実行する場合のスクリプト・ファイルのサンプルを用意しました。以下のサンプルは、Windows環境で実行することを想定しています。

 処理するデータのファイル名をリストしたファイル:          sample1_list.txt
 「sample1_list.txt」の中で定義されているSOS Caseファイル:     sample1_cube-*.sos
 複数のデータを処理するためのバッチ・ファイル:           sample1_run_batch_script.bat
 CEIShellとバッチ・モードのEnSightを起動するためのバッチ・ファイル: sample1_run_ensight.bat
 可視化処理を行うためのコマンド・ファイル:             sample1_execute_commands.py

スクリプト・ファイルの実行方法

1.上記のファイルをWindowsの同じフォルダーの中に置いてください。

2.「sample1_cube-0.sos」の中のホストID(machine id行)と、データのパス(data_path行)を適宜変更してください。 なお、このSOS Caseファイルは、コピーを3つ作成し、ファイル名がそれぞれ「sample1_cube-0.sos」、「sample1_cube-1.sos」、「sample1_cube-2.sos」、「sample1_cube-3.sos」となるようにしてください。

3.「sample1_run_ensight.bat」の中の「sample_script1_for_sos_fe.py」のパスと、「sample1_list.txt」の中のパスを変更してください。 それぞれ、実際にファイルを置いているパスにしてください。

4.コマンド・プロンプトを開き、各種ファイルを置いたフォルダーに移動して、以下のコマンドを実行してください。

 

sample1_run_batch_script.bat sample1_list.txt

正常に実行されると、フォルダー内に画像ファイル「image0.png」、「image1.png」、「image2.png」、「image3.png」が作成されます。

サンプルのスクリプト・ファイルで行われる処理

このサンプルでは、「sample1_list.txt」に記述されたデータ・ファイル「sample1_cube-*.sos」を順番に読み込み、その読み込まれたデータに対して、SOS並列分散処理機能を利用し、かつ、バッチ・モードで「sample1_execute_commands.py」に記述された可視化処理を行います。データは、EnSightのサンプル・データの「cube.case」を用い、SOS Caseファイルを使って「自動分割」で読み込むようになっています。

sample1_run_batch_script.bat:
はじめに、「sample1_list.txt」から読み込まれたファイル名を環境変数「ENSIGHT_DATA_FILENAME」の値として定義しています。可視化処理を行うためのコマンド・ファイル「sample1_execute_commands.py」で、この環境変数の値を読み込むファイル名として利用します。次に環境変数「ENSIGHT_EXPORT_FILENAME」を定義しています。コマンド・ファイルの中で、この環境変数の値を出力する画像ファイル名として利用します。最後に、「sample1_run_ensight.bat」を実行しています。これらの処理を「sample1_list.txt」に定義されたファイル名の数だけ繰り返し行います。

sample1_run_ensight.bat:
はじめに、「sample_script1_for_sos_fe.py」を利用して、CEIShellネットワークを作成し、次に、EnSightをバッチ・モードで起動し、コマンド・ファイル「sample1_execute_commands.py」に記述された可視化処理を行うようになっています。このバッチ・ファイルは、「sample1_run_batch_script.bat」から繰り返し呼び出されます。

sample1_execute_commands.py:
はじめに、「sample1_run_batch_script.bat」で設定された2つの環境変数の値を読み込み、それらを入出力ファイル名としています。その後、データの読み込み、断面の作成、画像ファイルの出力の処理を行っています。