This is a static archive of the previous Open Grid Forum GridForge content management system saved from host forge.ogf.org file /sf/wiki/do/viewPage/projects.jsdl-wg/wiki/ParameterSweepExtensionConstraints at Sun, 06 Nov 2022 11:48:23 GMT SourceForge : View Wiki Page: ParameterSweepExtensionConstraints

Project Home

Tracker

Documents

Tasks

Source Code

Discussions

File Releases

Wiki

Project Admin

JSDL calendar
Search Wiki Pages Project: JSDL-WG     Wiki > ParameterSweepExtensionConstraints > View Wiki Page
wiki2028: ParameterSweepExtensionConstraints

Constraints


Schema modifications

sweep.xsd

 <xsd:element name="Function" abstract="true" />

 <!--+
     | values derived from sweep:Function implementations during sweeping are
     |   assigned to the variable named by variableName attribute if/when 
     |   referred to in a sweep:Constraint element.
     +-->
 <xsd:complexType name="AbstractFunction_Type" mixed="false" abstract="true">
   <xsd:attribute name="variableName" type="xsd:Name" use="optional" />
 </xsd:complexType>
 <xsd:element name="Parameter" abstract="true" />

 <xsd:element name="DocumentNode" type="xsd:string"
              substitutionGroup="sweep:Parameter" />
    
 <xsd:element name="Assignment">
   <xsd:complexType mixed="false">
     <xsd:sequence>
       <xsd:element ref="sweep:Parameter" 
                    minOccurs="1" maxOccurs="unbounded"/>
       <xsd:element ref="sweep:Function" 
                    minOccurs="1" maxOccurs="1"/>
     </xsd:sequence>
   </xsd:complexType>
 </xsd:element>

 <xsd:complexType name="Sweep_Type" mixed="false">
   <xsd:sequence>

     <!--+
         | Any number of sweep:Constraint elements can be defined.
         +-->
     <xsd:element name="Constraint" type="xsd:string"
                  minOccurs="0" maxOccurs="unbounded"/>
     <xsd:element ref="sweep:Assignment" 
                  minOccurs="1" maxOccurs="unbounded"/>
     <xsd:element ref="sweep:Sweep" 
                  minOccurs="0" maxOccurs="unbounded"/>
   </xsd:sequence>
 </xsd:complexType>
    
 <xsd:element name="Sweep" type="sweep:Sweep_Type">
   <!--+
       | uniqueness of variableName attribute values within sweep:Sweep elements is 
       |   ensured using xsd:unique
       +-->
   <xsd:unique name="uniqueVariableName">
     <xsd:selector xpath=".//sweep:Assignment" />
     <xsd:field xpath=".//@variableName" />
   </xsd:unique>
 </xsd:element>

sweepfunc.xsd

 <xsd:element name="Values" substitutionGroup="sweep:Function">
   <xsd:complexType>
     <xsd:complexContent>
       <xsd:extension base="sweep:AbstractFunction_Type">
         <xsd:sequence>
           <xsd:element name="Value" type="xsd:anyType"
                              nillable="false"
                              minOccurs="1" maxOccurs="unbounded"/>
         </xsd:sequence>
       </xsd:extension>
     </xsd:complexContent>
   </xsd:complexType>
 </xsd:element>

Example scenario

<jsdl:JobDefinition ....>
    <jsdl:JobDescription>
        <jsdl:Application>
            <jsdl-posix:POSIXApplication>
                <jsdl-posix:Executable>/tutorial/snu/2D_Comp</jsdl-posix:Executable>
                <jsdl-posix:Argument>-mesh</jsdl-posix:Argument>
                <jsdl-posix:Argument>NACA.msh</jsdl-posix:Argument>
                <jsdl-posix:Argument>-param</jsdl-posix:Argument>
                <jsdl-posix:Argument>endowed1.inp</jsdl-posix:Argument>
                <jsdl-posix:Argument>outputDir</jsdl-posix:Argument>
            </jsdl-posix:POSIXApplication>
        </jsdl:Application>
        <jsdl:DataStaging>
            <jsdl:FileName>NACA.msh</jsdl:FileName>
            <jsdl:CreationFlag>overwrite</jsdl:CreationFlag>
            <jsdl:DeleteOnTermination>true</jsdl:DeleteOnTermination>
            <jsdl:Source>
                <jsdl:URI>gsiftp://host:port/dir/</jsdl:URI>
            </jsdl:Source>
        </jsdl:DataStaging>
        <jsdl:DataStaging>
            <!-- stage to default location/dir on consuming system -->
            <jsdl:FileName>endowed1.inp</jsdl:FileName>
            <jsdl:CreationFlag>overwrite</jsdl:CreationFlag>
            <jsdl:DeleteOnTermination>false</jsdl:DeleteOnTermination>
            <jsdl:Source>
                <jsdl:URI>gsiftp://host:port/dir/endowed1Template.inp</jsdl:URI>
            </jsdl:Source>
        </jsdl:DataStaging>
    </jsdl:JobDescription>
    
    <sweep:Sweep>
        <sweep:Assignment>
            <sweep:DocumentNode>/*//jsdl-posix:POSIXApplication/jsdl-posix:Argument[2]</sweep:DocumentNode>
            <sweep:DocumentNode>/*//jsdl:DataStaging[1]/jsdl:FileName</sweep:DocumentNode>
            <sweep:DocumentNode>substring(/*//jsdl:DataStaging[1]/jsdl:Source/jsdl:URI, 23)</sweep:DocumentNode>
            <sweepfunc:Values>
                <sweepfunc:Value>NACA0012.msh</sweepfunc:Value>
                <sweepfunc:Value>NACA1412.msh</sweepfunc:Value>
            </sweepfunc:Values>
        </sweep:Assignment>
        <sweep:Sweep>
            <sweep:Assignment>
                <sweep:DocumentNode>/*//jsdl-posix:POSIXApplication/jsdl-posix:Argument[5]</sweep:DocumentNode>
                <sweepfunc:Values>
                    <sweepfunc:Value>outputDir_1</sweepfunc:Value>
                    <sweepfunc:Value>outputDir_2</sweepfunc:Value>
                    <sweepfunc:Value>outputDir_3</sweepfunc:Value>
                </sweepfunc:Values>
            </sweep:Assignment>
            <sweep:Sweep>
                <sweep:Constraint><![CDATA[ i + j < 9 ]]></sweep:Constraint>           <!-- constraint definition -->
                <sweep:Assignment>
                    <file-sweep:TemplateFiles>
                        <file-sweep:TemplateFile>
                            <jsdl:FileName>endowed1.inp</jsdl:FileName>
                        </file-sweep:TemplateFile>
                        <file-sweep:PlaceHolder file-sweep:name="@AOA@"/>
                    </file-sweep:TemplateFiles>
                    <sweepfunc:Values variableName="i">                                <!-- variable "i" defined -->
                        <sweepfunc:Value>3</sweepfunc:Value>
                        <sweepfunc:Value>4</sweepfunc:Value>
                    </sweepfunc:Values>
                </sweep:Assignment>
                <sweep:Assignment>
                    <file-sweep:TemplateFiles>
                        <file-sweep:TemplateFile>
                            <jsdl:FileName>endowed1.inp</jsdl:FileName>
                        </file-sweep:TemplateFile>
                        <file-sweep:PlaceHolder file-sweep:name="@RE@"/>
                    </file-sweep:TemplateFiles>
                    <sweepfunc:Values variableName="j">                                <!-- variable "j" defined -->
                        <sweepfunc:Value>5</sweepfunc:Value>
                        <sweepfunc:Value>6</sweepfunc:Value>
                    </sweepfunc:Values>
                </sweep:Assignment>
            </sweep:Sweep>
        </sweep:Sweep>
    </sweep:Sweep>

</jsdl:JobDefinition>
    <!-- 
    Yields 6 jobs where:
    
    (outer sweep iteration 1)   
    Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_1
    endowed1.inp:  'AOA = 3, RE = 5'
  
    Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_2
    endowed1.inp:  'AOA = 3, RE = 5'
  
    Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_3
    endowed1.inp:  'AOA = 3, RE = 5'
 
    (outer sweep iteration 2)   
    Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_1
    endowed1.inp:  'AOA = 3, RE = 5'
    
    Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_2
    endowed1.inp:  'AOA = 3, RE = 5'
       
    Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_3
    endowed1.inp:  'AOA = 3, RE = 5'
    -->

The constraint prevents the following jobs:

Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_1
endowed1.inp:  'AOA = 4, RE = 6'
    
Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_2
endowed1.inp:  'AOA = 4, RE = 6'
       
Command Line:   -mesh NACA0012.msh -param endowed1.inp outputDir_3
endowed1.inp:  'AOA = 4, RE = 6'

Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_1
endowed1.inp:  'AOA = 4, RE = 6'
  
Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_2
endowed1.inp:  'AOA = 4, RE = 6'

Command Line:   -mesh NACA1412.msh -param endowed1.inp outputDir_3
endowed1.inp:  'AOA = 4, RE = 6'   

Coincidently the example below indicates that at least in certain situations the effect of using constraints provides the same results as requested in the use case for self modifying sweeps ( artf6151 Use Case )

  <sweep:Sweep>
    <sweep:Constraint><![CDATA[ j <= i ]]></sweep:Constraint>
    <sweep:Assignment>
      <sweep:DocumentNode> .. </sweep:DocumentNode>
      <sweepfunc:LoopInteger start="1" end="3" variableName="i" />
    </sweep:Assignment>
    <sweep:Sweep>
      <sweep:Assignment>
        <sweep:DocumentNode> .. </sweep:DocumentNode>
        <sweepfunc:LoopInteger start="0" end="3" variableName="j" />
      </sweep:Assignment>
    </sweep:Sweep>
  </sweep:Sweep>

Should yield the following:

  i  j

  1  0
  1  1
  2  0
  2  1
  2  2
  3  0
  3  1
  3  2
  3  3
 




The Open Grid Forum Contact Webmaster | Report a problem | GridForge Help
This is a static archive of the previous Open Grid Forum GridForge content management system saved from host forge.ogf.org file /sf/wiki/do/viewPage/projects.jsdl-wg/wiki/ParameterSweepExtensionConstraints at Sun, 06 Nov 2022 11:48:28 GMT