<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html > <head><title>psb_amn — Global minimum absolute value</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="generator" content="TeX4ht (https://tug.org/tex4ht/)"> <meta name="originator" content="TeX4ht (https://tug.org/tex4ht/)"> <!-- html,3 --> <meta name="src" content="userhtml.tex"> <link rel="stylesheet" type="text/css" href="userhtml.css"> </head><body > <!--l. 847--><div class="crosslinks"><p class="noindent">[<a href="userhtmlse8.html" >next</a>] [<a href="userhtmlsu69.html" >prev</a>] [<a href="userhtmlsu69.html#tailuserhtmlsu69.html" >prev-tail</a>] [<a href="userhtmlsu67.html#tailuserhtmlsu70.html">tail</a>] [<a href="userhtmlsu59.html#userhtmlsu73.html" >up</a>] </p></div> <h4 class="subsectionHead"><span class="titlemark">7.14 </span> <a id="x82-1190007.14"></a>psb_amn — Global minimum absolute value</h4> <pre class="verbatim" id="verbatim-84"> call psb_amn(ctxt, dat [, root, mode, request]) </pre> <!--l. 851--><p class="nopar" > <!--l. 853--><p class="indent" > This subroutine implements a minimum absolute value reduction operation based on the underlying communication library. <dl class="description"><dt class="description"> <span class="cmbx-10">Type:</span> </dt><dd class="description">Synchronous. </dd><dt class="description"> <span class="cmbx-10">On Entry</span> </dt><dd class="description"> </dd><dt class="description"> <span class="cmbx-10">ctxt</span> </dt><dd class="description">the communication context identifying the virtual parallel machine.<br class="newline" />Scope: <span class="cmbx-10">global</span>.<br class="newline" />Type: <span class="cmbx-10">required</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an integer variable. </dd><dt class="description"> <span class="cmbx-10">dat</span> </dt><dd class="description">The local contribution to the global minimum.<br class="newline" />Scope: <span class="cmbx-10">local</span>.<br class="newline" />Type: <span class="cmbx-10">required</span>.<br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array.  Type, kind, rank and size must agree on all processes. </dd><dt class="description"> <span class="cmbx-10">root</span> </dt><dd class="description">Process to hold the final value, or <span class="cmsy-10">-</span>1 to make it available on all processes.<br class="newline" />Scope: <span class="cmbx-10">global</span>.<br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an integer value <span class="cmsy-10">-</span>1 <span class="cmmi-10"><</span>= <span class="cmmi-10">root <</span>= <span class="cmmi-10">np </span><span class="cmsy-10">- </span>1, default -1. <br class="newline" /> </dd><dt class="description"> <span class="cmbx-10">mode</span> </dt><dd class="description">Whether the call is started in non-blocking mode and completed later, or is executed synchronously.<br class="newline" />Scope: <span class="cmbx-10">global</span>.<br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">in</span>.<br class="newline" />Specified as: an integer value. The action to be taken is determined by its bit fields, which can be set with bitwise <span class="obeylines-h"><span class="verb"><span class="cmtt-10">OR</span></span></span>. Basic action values are <span class="obeylines-h"><span class="verb"><span class="cmtt-10">psb_collective_start_</span></span></span>, <span class="obeylines-h"><span class="verb"><span class="cmtt-10">psb_collective_end_</span></span></span>. Default: both fields are selected (i.e. require synchronous completion).<br class="newline" /> </dd><dt class="description"> <span class="cmbx-10">request</span> </dt><dd class="description">A request variable to check for operation completion.<br class="newline" />Scope: <span class="cmbx-10">local</span>.<br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />If <span class="obeylines-h"><span class="verb"><span class="cmtt-10">mode</span></span></span> does not specify synchronous completion, then this variable must be present.</dd></dl> <!--l. 895--><p class="indent" > <dl class="description"><dt class="description"> <span class="cmbx-10">On Return</span> </dt><dd class="description"> </dd><dt class="description"> <span class="cmbx-10">dat</span> </dt><dd class="description">On destination process(es), the result of the minimum operation.<br class="newline" />Scope: <span class="cmbx-10">global</span>.<br class="newline" />Type: <span class="cmbx-10">required</span>.<br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array. <br class="newline" />Type, kind, rank and size must agree on all processes. </dd><dt class="description"> <span class="cmbx-10">request</span> </dt><dd class="description">A request variable to check for operation completion.<br class="newline" />Scope: <span class="cmbx-10">local</span>.<br class="newline" />Type: <span class="cmbx-10">optional</span>.<br class="newline" />Intent: <span class="cmbx-10">inout</span>.<br class="newline" />If <span class="obeylines-h"><span class="verb"><span class="cmtt-10">mode</span></span></span> does not specify synchronous completion, then this variable must be present.</dd></dl> <!--l. 913--><p class="noindent" ><span class="cmbx-12">Notes</span> <ol class="enumerate1" > <li class="enumerate" id="x82-119002x1">The <span class="obeylines-h"><span class="verb"><span class="cmtt-10">dat</span></span></span> argument is both input and output, and its value may be changed even on processes different from the final result destination. </li> <li class="enumerate" id="x82-119004x2">The <span class="obeylines-h"><span class="verb"><span class="cmtt-10">mode</span></span></span> argument can be built with the bitwise <span class="obeylines-h"><span class="verb"><span class="cmtt-10">IOR()</span></span></span> operator; in the following example, the argument is forcing immediate completion, hence the <span class="obeylines-h"><span class="verb"><span class="cmtt-10">request</span></span></span> argument needs not be specified: <div class="center" > <!--l. 928--><p class="noindent" > <div class="minipage"><pre class="verbatim" id="verbatim-85">   call psb_amn(ctxt,dat,mode=ior(psb_collective_start_,psb_collective_end_)) </pre> <!--l. 932--><p class="nopar" ></div></div> </li> <li class="enumerate" id="x82-119006x3">When splitting the operation in two calls, the <span class="obeylines-h"><span class="verb"><span class="cmtt-10">dat</span></span></span> argument <span class="cmti-10">must not </span>be accessed between calls: <div class="center" > <!--l. 948--><p class="noindent" > <div class="minipage"><pre class="verbatim" id="verbatim-86">   call psb_amn(ctxt,dat,mode=psb_collective_start_,request=amn_request)   ....... ! Do not access dat   call psb_amn(ctxt,dat,mode=psb_collective_end_,request=amn_request) </pre> <!--l. 954--><p class="nopar" ></div></div> </li></ol> <!--l. 960--><div class="crosslinks"><p class="noindent">[<a href="userhtmlse8.html" >next</a>] [<a href="userhtmlsu69.html" >prev</a>] [<a href="userhtmlsu69.html#tailuserhtmlsu69.html" >prev-tail</a>] [<a href="userhtmlsu70.html" >front</a>] [<a href="userhtmlsu59.html#userhtmlsu73.html" >up</a>] </p></div> <!--l. 960--><p class="indent" > <a id="tailuserhtmlsu70.html"></a> </body></html>