<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Fri, 10 Feb 2012 05:34:54 -0800 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/intel-mpi-library-for-linux-kb/type/performance-and-optimization/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles Feed</title>
    <link>http://software.intel.com/en-us/articles/intel-mpi-library-for-linux-kb/type/performance-and-optimization/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Distributed memory coarray programs with process pinning</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Introduction :</strong> This article describes a method to compile and run a distributed memory coarray program using Intel® Fortran Compiler XE 12.0. An example using Linux* is presented.<br /><br /><br /><strong>Version :</strong> Intel® Fortran Compiler XE 12.0 <br /><br /><br /><strong>Application Notes :</strong> To compile for distributed memory coarrays, use compiler option -coarrays=distributed (Linux* OS) or /Qcoarrays:distributed (Windows* OS).  This requires an Intel® Cluster Toolkit license.  To compile for shared memory coarrays, use compiler option -coarrays=shared (Linux* OS) or /Qcoarrays:shared (Windows* OS).  Compiling for shared memory coarrays does not require an Intel® Cluster Toolkit license.<br /><br /><br /><strong>Obtaining Source Code :</strong> The coarray example from the Composer XE 'coarray_samples' directory could be used.<br /><br /><br /><strong>Prerequisites :</strong> An Intel® Cluster Toolkit license is required for compilation, and the Intel® MPI Library must be installed on the cluster nodes.<br /><br /><br /><strong>Configuration Set Up :</strong> A key for running a distributed memory coarray program with process pinning on specific nodes is to use compiler option -coarray-config-file=filename (Linux* OS)or /Qcoarray-config-file:filename (Windows* OS).  This enables you to take full advantage of Intel® MPI Library features in the coarrays environment, in the same way that 'mpiexec -config filename' allows mpiexec to take its commands from 'filename'.<br /><br />The contents of the configuration file for this example:<br /><br />-host host1 -env I_MPI_PIN_PROCESSOR_LIST 0,2,4 -n 3 &lt;path to executable&gt;coarry_dist_host.x : -host host2 -env I_MPI_PIN_PROCESSOR_LIST 1,3,5 -n 3 &lt;path to executable&gt;coarry_dist_host.x<br /><br />This says to execute six coarray images 'coarry_dist_host.x' on nodes host1 and host2, using processors 0,2,4 on host1, and processors 1,3,5 on host2.  The I_MPI_PIN_PROCESSOR_LIST environment variable is used to achieve the process pinning on the indicated nodes.<br /><br /><br /><strong>Source Code Changes :</strong> See <strong>Verifying</strong> <strong>Correctness</strong><br /><br /><br /><strong>Building the Application :</strong> Compile for distributed coarrays, create one coarray image, and specify the coarray configuration file:<br /><br />ifort -coarray=distributed -coarray-num-images=1 -coarray-config-file=coarray_config.txt coarry_dist_host.f90 -o coarry_dist_host.x<br /><br /><strong>Running the Application :</strong> Simply specify the name of the executable:<br />&gt; &lt;path to executable&gt;/coarry_dist_host.x<br />Hello from image 1 out of 6<br />total images, and running on host: host1<br /><br />Hello from image 2 out of 6<br />total images, and running on host: host1<br /><br />Hello from image 3 out of 6<br />total images, and running on host: host1<br /><br />Hello from image 5 out of 6<br />total images, and running on host: host2<br /><br />Hello from image 4 out of 6<br />total images, and running on host: host2<br /><br />Hello from image 6 out of 6<br />total images, and running on host: host2<br />&gt;<br /><br /><strong>Verifying Correctness :</strong> Embed 'call hostnm(hostname)' in your coarray program, then print 'hostname' to verify the images are executed on the correct nodes/processors.<br /><br /><br /><strong>Benefits :</strong> This method enables coarray image pinning on specific nodes/node processors.  Better load balance across cluster nodes might be obtained, or a subset of nodes easily partitioned.<br /><br /><br /><strong>Known Issues or Limitations :</strong> <br />-- Some users have reported MPI environment issues when trying to run the executable in a standalone fashion.  These issues are under investigation, but as a workaround try using mpiexec to launch the executable.  <br />--Distributed memory coarrays only work with Intel® MPI; other implementations of MPI are not supported.<br /></div>
			 ]]></description>
      <link>http://software.intel.com/en-us/articles/distributed-memory-coarray-programs-with-process-pinning/</link>
      <pubDate>Sun, 27 Feb 2011 00:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/distributed-memory-coarray-programs-with-process-pinning/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/distributed-memory-coarray-programs-with-process-pinning/</guid>
      <category>Parallel Programming</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
  </channel></rss>
