<?xml version="1.0"?>
<!DOCTYPE flagsdescription
    SYSTEM "http://www.spec.org/dtd/cpuflags1.dtd"
>

<!--
   -
   -	File:		XL_flags.mpi.xml
   -
   -	Purpose:	XML description file for SPEC/MPI2007 compiler and driver invocations on PowerPC/AIX.
   -
   -	Usage:		In config-file, use the lines
   -
   -					flagsurl1 = ....
   -					flagsurl2 = XL_flags.mpi.xml
   -					flagsurl3 = ....
   -
   -	Format:
   -				The lines above are NOT optional.  If you're adept at reading DTDs, the one that this
   -				file conforms to is at the URL listed above.  
   -
   -				But most humans writing a flags file will want to have it automatically checked using
   -				a validating parser such as RXP (available at http://www.ltg.ed.ac.uk/~richard/rxp.html),
   -				or use one of the on-line parsers:
   -
   -					http://www.stg.brown.edu/service/xmlvalid/
   -					http://www.cogsci.ed.ac.uk/~richard/xml-check.html
   -
   -				The parser used by the CPU tools is _not_ a validating parser, so it may be possible to
   -				sneak things by it that would not pass the checkers above. However, if the checkers above
   -				say that your file is clean, it's clean.
   -
   -				Flag files submitted to SPEC _will_ be checked by a validating parser. Invalid or not-well
   -				-formed flag files will be rejected.
   -
   -	Rights:
   -				This file is Copyright (C) 2006 Standard Performance Evaluation Corporation
   -				All Rights Reserved
   -
   -				This file may be freely modified and redistributed, provided that the copyright notice
   -				above and this notice remain unaltered.
   -
   -				These extensions are made by IBM (2007).
   -
   -	Notes:
   -				This file serves as a supplement to the CPU2006 flags-description file, and serves to
   -				compartmentalize the MPI details that would cause confusion in the PowerPC/AIX CPU2006
   -				flags-description report. Other compartmentalized files may be added as necessary.
   -
   -				Use the "specregexp" tool on this file to generate the HTML sub-report, or on the full
   -				list of files to get the full report. Any XML errors will be reported to STDERR.
   -
   -				Unless otherwise explicitly noted, all references to "section n.nn" refer to the file
   -				flag_description.html, available at
   -
   -					http://www.spec.org/cpu2006/docs/flag_description.html
   -
   -				Information about the meaning of boot-time settings, BIOS options, kernel tuning, and
   -				so forth can go in the 'platform_settings' section. They'll be appended to the end of
   -				both the flags dump and per-result flag report.
   -
   -				As the contents should be HTML, it will save lots of time to just enclose the whole thing
   -				in a CDATA section.  Section 2.3.1 again.
   -
   -				The original file was extracted from the SPEC repository as
   -
   -					$Id: flags-simple.xml 4007 2006-03-17 11:34:42Z cloyce $
   -
   -
   -->

<flagsdescription>

<title>IBM MP Utility Descriptions</title>

<style>
<![CDATA[
body { background: white; }
]]>
</style>


<platform_settings>
<![CDATA[
<p>MPI is provided as part of the IBM AIX offering package "Parallel Operating Environment" (POE).</p>
<ul>
<li>poe: MPI driver for AIX.
<pre>
Usage:  submit = poe $command ...

  Command-line parameters:

    -procs $ranks            The number of ranks to run. Can also be specified with the MP_PROCS environment variable.
	-hostfile $hostfile      Name of file containing the list of names of hosts that will run each rank. Can also
	                         be specified with the MP_HOSTFILE environment variable.

  Parameters specified by environment variables:

     MP_PGMMODEL=spmd              Set program model to Single-Program/Multiple-Data.
	 MP_MSG_API=mpi                Specify that MPI is the message-passing protocol to use.
	 MP_DEVTYPE=ib                 Use InfiniBand devices for communication.
	 MP_CLOCK_SOURCE=AIX           Retreive time values from the OS.
     MP_ADAPTER_USE=shared         Determines how the node's adapter should be used (e.g. "shared" for shared between ranks).
     MP_EUILIB=us                  Determines the communication subsystem implementation to use (e.g. "us" for user mode).
     MP_EUIDEVICE=sn_single        Determines the adapter set to use for message passing (e.g. "sn_single" for one window per task).
     MP_EUIDEVICE=sn_all            Using "sn_all" causes user-space windows to be striped per task.
     MP_SHARED_MEMORY=yes          Do not use switch to transmit messages within the same node.
     MP_SINGLE_THREAD=yes          Skip mutex locking in single-threaded ranks.
     MP_WAIT_MODE=poll             Poll across blocked threads.
     MP_WAIT_MODE=yield            Suspend blocked threads.
     MP_EAGER_LIMIT=65536          Use rendezvous protocol above this message size.
     MP_BUFFER_MEM=67108864        The size of the Early Arrival (EA) buffer that is used by the communication subsystem.
     MP_POLLING_INTERVAL=80000000  Length of polling interval, in microseconds.
	 MP_PULSE=0                    The interval at which POE checks the remote nodes to ensure that they are communicating with the home node. Use 0 to disable.
     MP_USE_BULK_XFER=yes          Use the bulk data transfer mechanism.
     MP_BULK_MIN_MSG_SIZE=65536    Use bulk data transfer for messages of at least this many bytes.
     MP_STDINMODE=none             Tasks will not read input from STDIN.
	 MP_STDOUTMODE=unordered       Determines the formatting of task output.
     MP_LABELIO=no                 Do not label lines of output with the task ID number.
	 MP_RESD=no                    Determines whether or not the Partition Manager should connect to the LoadLeveler utility.
	 MP_CSS_INTERRUPT=no           Determines whether or not arriving message packets cause interrupts. 
	 MP_INFOLEVEL=0                Determines the level of message reporting.
	 MP_PMDLOG=no                  Determines whether or not diagnostic messages should be logged to a file in /tmp on each of the remote nodes.
	 MP_PARTITION=64               An identifying number that is the same for all tasks in a job.
	 NRT_WINDOW_COUNT=1            Set to the number of communication windows used by each task. 
</pre>
</li>
<li>petaskbind.sh: script to assign ranks to cores within a node, with the core index incremented by the <tt>stride</tt> parameter.
<pre>
Usage:  submit = poe petaskbind.sh $command ...
</pre>
</li>
]]>
</platform_settings>


<flag
      name="mpcc"
      class="compiler"
      regexp="(\S*\/)?mpcc(_r)?\b">
<![CDATA[
<p>
Wrapper invoking the IBM XL C compiler for MPI programs. 32-bit binaries are
produced by default.
</p>
]]>
</flag>


<flag
      name="mpCC"
      class="compiler"
      regexp="(\S*\/)?mpCC(_r)?\b">
<![CDATA[
<p>
Wrapper invoking the IBM XL C++ compiler for MPI programs. 32-bit binaries are
produced by default.
</p>
]]>
</flag>


<flag
      name="mpxlf95"
      class="compiler"
      regexp="(\S*\/)?mpxlf95(_r)?\b">
<![CDATA[
<p>
Wrapper invoking the IBM XL C++ compiler for MPI programs. 32-bit binaries are
produced by default.
</p>
]]>
</flag>


</flagsdescription>

