Application Definition 作成の基本
Application Definition作成の基本を、ご紹介いたします。
例として、Optistruct のApplication Definitionを作成し、Access WebからOptistructのジョブ投入ができるように設定します。
Optistructの実行コマンドラインは、/app/hw2021.2/altair/scripts/optistruct <Input File> -ncpu <No. of CPUS> -len <Memory>になるように構成します。
画面上で独自のオプション付加を許可し、ユーザーが必要に応じてオプションを付加することができます。標準出力と標準エラーもファイルに保存するようにします。
ジョブ投入の画面イメージは、以下のようになります。Show All をクリックすると、メモリ等の選択項目も表示されれるようにします。
必要なファイルは、以下の4つのファイルです。構築したい画面構成によっては利用するファイルが異なります。
- セントラルレポジトリ
- site-config.xml ($PAS_REPO/targets/localhost/repository/site-config.xml)
- Optistruct用ファイル
- app-inp-<ApplicationId>.xml ($PAS_REPO/targets/localhost/repository/applications/<ApplicationId>/app-inp-<ApplicationId>.xml)
- app-conv-<ApplicationId>.xml ($PAS_REPO/targets/localhost/repository/applications/<ApplicationId>/app-conv-<ApplicationId>.xml)
- start.py ($PAS_REPO/targets/localhost/repository/applications/<ApplicationId>/runtime/start.py
以下に4つのファイルについて、簡単にご説明します。
- セントラルレポジトリ site-config.xml
site-config.xmlはセントラルレポジトリなので他アプリケーション(Optistruct以外のアプリケーション)の設定項目も含まれます。アプリケーションの実行パスを、バージョンごとに定義します。以下のように記述します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <SiteConfiguration xmlns=http://schemas.altair.com/pbs/2007/01/site-config xmlns:site-config=http://schemas.altair.com/pbs/2007/01/site-config xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://schemas.altair.com/pbs/2007/01/site-config ../schemas/site-config.xsd> <Applications> ** 他アプリケーションも同様に、ここに書くことができます。** <Application id="Optistruct"> <ApplicationVersions> <ApplicationVersion> <Option>2021.2</Option> <Executable>/app/hw2021.2/altair/scripts/optistruct</Executable> </ApplicationVersion> </ApplicationVersions> </Application> ** 他アプリケーションも同様に、ここに書くことができます。** </Applications> <JobProjects id="BILLING_ACCOUNT"/> <Policies/> </SiteConfiguration> |
- Optistruct用ファイル app-inp-Optistruct.xml
このファイルでは、ジョブ投入画面の入力項目を定義します。
<?xml version="1.0" encoding="UTF-8"?> <TemplateApplicationInput xmlns=http://schemas.altair.com/pbs/2007/02/app-def xmlns:xi=http://www.w3.org/2001/XInclude xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:schemaLocation=http://schemas.altair.com/pbs/2007/02/app-def ../../schemas/app-def.xsd>
<ApplicationId>Optistruct</ApplicationId> <ApplicationName>Optistruct</ApplicationName> <ApplicationExtension>.fem</ApplicationExtension>
<ArgumentChoice> <ArgumentStringEnumerated> <Name>VERSION</Name> <Description>Version of application to use</Description> <DisplayName>Version</DisplayName> <InputRequired>true</InputRequired> ** 必須項目にしたい場合、InputRequiredをtrueにします。** <xi:include href="site-config.xml" xpointer="xpath1(//Application[@id='Optistruct']/ApplicationVersions//Option)"/> </ArgumentStringEnumerated> </ArgumentChoice>
<ArgumentChoice> <ArgumentString> <Name>JOB_NAME</Name> <Description>Name of the job</Description> <DisplayName>Job Name</DisplayName> <InputRequired>false</InputRequired> </ArgumentString> </ArgumentChoice>
<ArgumentChoice> <ArgumentInt> <Name>NCPUS</Name> <Description>Number of CPUS requested</Description> <DisplayName>No. of CPUS</DisplayName> <InputRequired>true</InputRequired> <LowerBound>1</LowerBound> <UpperBound>8</UpperBound> <DefaultValue>1</DefaultValue> ** デフォルト値を定義しておくこともできます。** </ArgumentInt> </ArgumentChoice>
<ArgumentChoice> <ArgumentInt> <Name>MEMORY</Name> <Description>Requested memory</Description> <DisplayName>Memory</DisplayName> <InputRequired>false</InputRequired> <Option>1000</Option> <Option>2000</Option> <Option>4000</Option> <Option>8000</Option> <DefaultValue>8000</DefaultValue> </ArgumentInt> </ArgumentChoice>
<ArgumentChoice> <ArgumentFileName> <Name>MASTER_FILE</Name> <Description>Input file</Description> <DisplayName>Input File</DisplayName> <InputRequired>true</InputRequired> </ArgumentFileName> </ArgumentChoice>
<ArgumentChoice> <ArgumentFileNameMulti> <Name>INCLUDE_FILES</Name> <Description>Additional files to include.</Description> <DisplayName>Include Files</DisplayName> <InputRequired>false</InputRequired> </ArgumentFileNameMulti> </ArgumentChoice>
<ArgumentChoice> <ArgumentString> <Name>EXTRA_ARGUMENTS</Name> ** Optistructコマンドへのオプションの付加 ** <Description>Pass command line arguments.</Description> <DisplayName>Extra Arguments</DisplayName> <InputRequired>false</InputRequired> </ArgumentString> </ArgumentChoice>
<ArgumentChoice> <ArgumentDirectoryName> <Name>SUBMISSION_DIRECTORY</Name> <Description>Result files will be placed here</Description> <DisplayName>Output directory</DisplayName> <InputRequired>true</InputRequired> </ArgumentDirectoryName> </ArgumentChoice> </TemplateApplicationInput> |
- Optistruct用ファイル app-conv-Optistruct.xml
ジョブ投入画面で入力した値をもとに、実行モジュールとそのオプションの定義、PBSジョブ実行のために必要なリソースを構成します。
<?xml version="1.0" encoding="UTF-8"?> <TemplateApplicationConverter xmlns=http://schemas.altair.com/pbs/2007/02/app-conv xmlns:app-def=http://schemas.altair.com/pbs/2007/02/app-def xmlns:jsdl=http://schemas.ggf.org/jsdl/2005/11/jsdl xmlns:jsdl-hpcp=http://schemas.ggf.org/jsdl/2006/07/jsdl-hpcp xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=http://schemas.altair.com/pbs/2007/02/app-conv ../../schemas/app-conv.xsd>
<ApplicationId>Optistruct</ApplicationId> <ApplicationName>Optistruct</ApplicationName>
<HPCProfileApplication> <jsdl-hpcp:Executable>$PYTHONPATH</jsdl-hpcp:Executable> <jsdl-hpcp:Argument>runtime/start.py</jsdl-hpcp:Argument> </HPCProfileApplication>
<jsdl:Resources> ** PBSジョブとしてのリソース要求** <TotalCPUCount> <Exact>$NCPUS</Exact> </TotalCPUCount>
<TotalPhysicalMemory> <Exact>$MEMORY</Exact> </TotalPhysicalMemory> </jsdl:Resources>
<jsdl:DataStaging> <jsdl:FileName>name($MASTER_FILE)</jsdl:FileName> <jsdl:CreationFlag>overwrite</jsdl:CreationFlag> <jsdl:Source> <jsdl:URI>$MASTER_FILE</jsdl:URI> </jsdl:Source> </jsdl:DataStaging>
<jsdl:DataStaging> <jsdl:FileName>name($INCLUDE_FILES)</jsdl:FileName> <jsdl:CreationFlag>overwrite</jsdl:CreationFlag> <jsdl:Source> <jsdl:URI>$INCLUDE_FILES</jsdl:URI> </jsdl:Source> </jsdl:DataStaging>
<jsdl:DataStaging> <jsdl:FileName>*</jsdl:FileName> <jsdl:CreationFlag>overwrite</jsdl:CreationFlag> <jsdl:Target> <jsdl:URI>$SUBMISSION_DIRECTORY</jsdl:URI> </jsdl:Target> </jsdl:DataStaging> </TemplateApplicationConverter> |
- Optistruct用ファイル start.py
ジョブ投入時に実行されるファイルです。
import os import sys import re
os.environ['ALTAIR_LICENSE_PATH']="6200@licserver"
master_file = os.path.basename(os.environ['PAS_MASTER_FILE']) python_path = os.environ['PAS_PYTHON_PATH'] optistruct_exe = os.environ['PAS_EXECUTABLE']
if 'PAS_EXTRA_ARGUMENTS' in os.environ: optistruct_exe += os.environ['PAS_EXTRA_ARGUMENTS']
required_mem = os.environ['PAS_MEMORY'] required_core = os.environ['PAS_NCPUS']
pas_job_name = os.environ["PAS_JOB_NAME"] pas_application = os.environ["PAS_APPLICATION"] pbs_job_dir = os.environ["PBS_JOBDIR"]
logfile_basename = pas_application + "-" + pas_job_name ** 標準出力と標準エラーを出力するファイル名の定義 ** stdout_logfile = logfile_basename + "-stdout.log" stderr_logfile = logfile_basename + "-stderr.log"
cmd = optistruct_exe + ' ' + master_file + ' -ncpu ' + required_core + ' -len ' + required_mem cmd += ' > ' + stdout_logfile + ' 2> ' + stderr_logfile
#run application print (cmd) os.system (cmd) |
以上、4つのファイルのご説明です。
詳細については、各バージョンのDiving Into Application Definition Guide をご参照ください。