<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Fri, 10 Feb 2012 10:39:15 -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-windows-kb/type/tips-and-techniques/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-windows-kb/type/tips-and-techniques/</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>
    <item>
      <title>How to create your own fabric provider</title>
      <description><![CDATA[ <p><b>What does an Independent Hardware Vendor (IHV) have to do to enable their interconnects to work with the Intel® MPI Library?</b><br />Use the following instructions to get the Intel® MPI Library running on your own adapters:</p>
<ol>
<li>Determine if a sockets interface is provided. If yes, the interconnect will work with TCP/IP performance out of the box.</li>
<li>If no sockets interface is available, or if you’d like to enable maximum interconnect performance and functionality, a fabric provider layer must be developed.  As an interconnect vendor, you have the following options:       
<ul>
<li><a href="http://software.intel.com#dapl">Direct Access Programming Library (DAPL*) provider</a></li>
<li><a href="http://software.intel.com#ofa_verbs">OpenFabrics Alliance* (OFA*) verbs provider</a></li>
<li><a href="http://software.intel.com#tmi">Tag Matching Interface (TMI) provider</a></li>
</ul>
All three APIs are used to drive RDMA (remote direct memory access)-capable fabrics like InfiniBand*, Myrinet* MX*, and Qlogic* PSM*.</li>
</ol> <br />
<p><a name="dapl"><b>What steps should be performed to build your own Direct Access Programming Library (DAPL*) provider?</b></a></p>
<ol>
<li>Obtain the DAPL software by visiting the <a href="http://sourceforge.net/projects/dapl" target="_blank">SourceForge repository</a>.</li>
<li>Visit the <a href="http://www.datcollaborative.org/" target="_blank">DAT Collaborative website</a> for additional information on DAPL or to check out other InfiniBand* DAPL implementations.  You can also join the <a href="http://www.openfabrics.org/" target="_blank">OpenFabrics Alliance*</a> for access to even more resources.</li>
<li>Decide on a level of DAPL to support. The suggested level is 2.0.</li>
<li>Develop your DAPL driver. You can use the Intel MPI Library Fabric Provider writer guide for hints and ideas. The document is available free of charge as long as you are willing to sign an Intel-standard Non-Disclosure Agreement (NDA).</li>
<li>Test the DAPL layer with the DAPL test suite that comes with the DAPL source code.</li>
<li>Obtain the Intel MPI Library. The software can be purchased from the Intel website by visiting <a href="http://www.intel.com/go/mpi/" target="_blank">www.intel.com/go/mpi</a>.</li>
<li>Link with the Intel MPI Library and test with the Intel MPI Library test suite. The Intel MPI Library test suite is provided upon request at the <a href="https://premier.intel.com/" target="_blank">Intel® Premier Web Portal</a>.</li>
</ol> <br />
<p><a name="ofa_verbs"><b>What steps should be performed to build your own OpenFabrics Alliance (OFA*) verbs provider?</b></a></p>
<ol>
<li>Obtain the OFA verbs software by visiting the <a href="http://www.openfabrics.org/downloads/verbs/" target="_blank">OpenFabrics download page</a>.</li>
<li>Visit the <a href="http://www.openfabrics.org/" target="_blank">OpenFabrics Alliance* website</a> for additional information on the verbs or to join the alliance.</li>
<li>Develop your OFA verbs driver. You can use the Intel MPI Library Fabric Provider writer guide for hints and ideas. The document is available free of charge as long as you are willing to sign an Intel-standard NDA.</li>
<li>Obtain the Intel MPI Library. The software can be purchased from the Intel website by visiting <a href="http://www.intel.com/go/mpi/" target="_blank">www.intel.com/go/mpi</a>.</li>
<li>Link with the Intel MPI Library and test with the Intel MPI Library test suite. The Intel MPI Library test suite is provided upon request at the <a href="https://premier.intel.com/" target="_blank">Intel® Premier Web Portal</a>.</li>
</ol> <br />
<p><a name="tmi"><b>What steps should be performed to build your own Tag Matching Interface (TMI) provider?</b></a></p>
<ol>
<li>Obtain the TMI API by submitting a request through the <a href="https://premier.intel.com/" target="_blank">Intel® Premier Web Portal</a>. You need to sign an NDA with Intel before we can provide you the document.</li>
<li>Develop your TMI driver. You can use the Intel MPI Library Fabric Provider writer guide for hints and ideas. The document is available free of charge upon signing the Intel-standard NDA.</li>
<li>Obtain the Intel MPI Library. The software can be purchased from the Intel website by visiting <a href="http://www.intel.com/go/mpi/" target="_blank">www.intel.com/go/mpi</a>.</li>
<li>Link with the Intel MPI Library and test with the Intel MPI Library test suite. The Intel MPI Library test suite is provided upon request at the <a href="https://premier.intel.com/" target="_blank">Intel® Premier Web Portal</a>.</li>
</ol> ]]></description>
      <link>http://software.intel.com/en-us/articles/create-your-own-fabric-provider/</link>
      <pubDate>Sat, 24 Apr 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/create-your-own-fabric-provider/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/create-your-own-fabric-provider/</guid>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Release notes</title>
      <description><![CDATA[ <p><strong>Note</strong>: This web page refers to the entire set of Intel® Cluster Tools.</p>
<ul>
<li><a href="http://software.intel.com/en-us/articles/intel-mpi-library-documentation/" target="_blank">Release Notes for Intel® MPI Library</a></li>
<li><a href="http://software.intel.com/en-us/articles/intel-trace-analyzer-and-collector-documentation/" target="_blank">Release Notes for Intel® Trace Analyzer and Collector</a></li>
<li><a href="http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/" target="_blank">Release Notes for Intel® Math Kernel Library</a></li>
<li><a href="http://software.intel.com/en-us/articles/intel-cluster-toolkit-documentation/" target="_blank">Release Notes for Intel® Cluster Toolkit and Intel® Cluster Toolkit Compiler Edition</a></li>
</ul>
<p><strong>Operating System:</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="xs">SUSE* Linux Enterprise Server 9.0, SUSE* Linux Enterprise Server 10, Red Hat* Enterprise Linux 4.0, Red Hat* Enterprise Linux 5.0, Windows* Compute Cluster Server 2003, Windows* HPC Server 2008</td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-cluster-tools-release-notes/</link>
      <pubDate>Mon, 22 Jun 2009 22:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-cluster-tools-release-notes/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-cluster-tools-release-notes/</guid>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Windows* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Linux* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Tips and tricks - FAQ</title>
      <description><![CDATA[ <ul>
<li><a href="http://software.intel.com#A1">Are there any DAPL* implementations available for Microsoft* Windows*?</a></li>
<li><a href="http://software.intel.com#A2">How do you run an Intel® MPI Library application located on a network resource?</a></li>
<li><a href="http://software.intel.com#A3">How do you pin processes to prevent undesired process migration?</a></li>
</ul>
<p><a name="A1"><strong>Are there any DAPL* implementations available for Microsoft* Windows*?</strong></a></p>
<div><span class="sectionBodyText">Yes. Find Windows OpenFabrics* (WinOF*) at OpenFabrics* Alliance website <a href="http://www.openfabrics.org/downloads/WinOF/" target="_blank">http://www.openfabrics.org/downloads/WinOF/</a> †</span></div>
<p> </p>
<p><a name="A2"><strong>How do you run an Intel® MPI Library application located on a network resource?</strong></a></p>
<div><span class="sectionBodyText">
<p>Use the <code>mpiexec -gwdir</code> or <code>-wdir</code> options to specify a working directory for the application.</p>
<p>For instance: <code>mpiexec.exe -machinefile machine_file -n 4 -wdir \\host\share_folder IMB-MPI1.exe</code></p>
</span></div>
<p> </p>
<p><a name="A3"><strong>How do you pin processes to prevent undesired process migration?</strong></a></p>
<div><span class="sectionBodyText">
<p>The Intel MPI Library automatically pins processes to CPUs to prevent undesired process migration. Use the <code>I_MPI_PIN</code>, <code>I_MPI_PIN_MODE</code> and <code>I_MPI_PIN_PROCESSOR_LIST</code> environment variables to control process pinning.</p>
<p>For example: <code>mpiexec -env I_MPI_DEVICE shm -env I_MPI_PIN enable -np 4 ./prog</code></p>
<p>See the <a href="http://software.intel.com/en-us/articles/intel-mpi-library-for-windows-31-manuals/" target="_blank">Intel® MPI Library for Windows Reference Manual</a> for more details.</p>
</span></div>
<p> </p>
<p>† This link will take you off of the Intel Web site. Intel does not control the content of the destination Web Site.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/tips-and-tricks-faq/</link>
      <pubDate>Wed, 17 Jun 2009 22:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/tips-and-tricks-faq/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/tips-and-tricks-faq/</guid>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Hybrid applications: Intel MPI Library and OpenMP*</title>
      <description><![CDATA[ <p class="sectionHeadingText">I have a mixed application which uses both MPI and OpenMP* calls.  Does the Intel® MPI Library support this type of hybrid functionality?</p>
<p>Yes, Intel MPI does support mixed MPI/OpenMP applications.  To make sure your hybrid code runs correctly, follow these steps:</p>
<ol>
<li>Use the thread safe version of the Intel MPI Library by using the <code >-mt_mpi</code> compiler driver option</li>
<li>Set the <code >I_MPI_PIN_DOMAIN</code> environment variable to select the desired process pinning scheme. The recommended setting is <code >omp</code>:
<blockquote><code>$ export I_MPI_PIN_DOMAIN=omp</code></blockquote>
<p>This will set the process pinning domain size to be equal to <code >OMP_NUM_THREADS</code>.  Therefore, each MPI process can create <code >$OMP_NUM_THREADS</code> number of children threads for running within the corresponding domain.  If <code >OMP_NUM_THREADS</code> is not set, each node is treated as a separate domain (which will allow as many threads per MPI processes as there are cores).</p>
<p><strong>NOTE:</strong> In order to pin OpenMP threads inside the domain, use the corresponding OpenMP feature by setting the <code >KMP_AFFINITY</code> environment variable.</p>
</li>
<li>See the <em>“Interoperability with OpenMP*”</em> section in the <a href="http://software.intel.com/en-us/articles/intel-mpi-library-documentation/" target="_blank">Intel® MPI Library for Linux* Reference Manual</a> for more details</li>
</ol> ]]></description>
      <link>http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/</link>
      <pubDate>Wed, 20 May 2009 22:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/</guid>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Does Intel® MPI Library limit the number of procs on a node</title>
      <description><![CDATA[ <p><strong>Question</strong></p>
<p>Does Intel® MPI Library limit the number of processes run on a single node?</p>
<p><strong>Answer</strong></p>
<p>No, it does not.  Intel MPI has no internal restrictions on the number of MPI processes started on a node.</p>
<p><em>NOTE:</em> Be careful when running a large number of processes on a single machine.  At some point, you might start oversubscribing the processor (meaning starting more processes than there are cores).  This could lead to performance degradation.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/does-intel-mpi-library-limit-the-number-of-procs-on-a-node/</link>
      <pubDate>Wed, 25 Feb 2009 22:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/does-intel-mpi-library-limit-the-number-of-procs-on-a-node/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/does-intel-mpi-library-limit-the-number-of-procs-on-a-node/</guid>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Windows* Knowledge Base</category>
    </item>
  </channel></rss>
