<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Wed, 25 Nov 2009 02:37:16 -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/technical-notes/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/technical-notes/</link>
    <description></description>
    <language>en-us</language>
    <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 style="white-space:normal; font-weight:bold">-mt_mpi</code> compiler driver option</li>
<li>Set the <code style="white-space:normal">I_MPI_PIN_DOMAIN</code> environment variable to select the desired process pinning scheme. The recommended setting is <code style="white-space:normal">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 style="white-space:normal">OMP_NUM_THREADS</code>.  Therefore, each MPI process can create <code style="white-space:normal">$OMP_NUM_THREADS</code> number of children threads for running within the corresponding domain.  If <code style="white-space:normal">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 style="white-space:normal">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>Thu, 21 May 2009 07:42:27 -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>Integrating Intel MPI Library with Sun Grid Engine </title>
      <description><![CDATA[ <p class="sectionHeadingText">So, you want to use Intel® MPI Library with the Sun* Grid Engine* (SGE) batch scheduler?</p>
<p>The below instructions describe how to run Intel MPI jobs using Sun Grid Engine. This document relates to Linux*.  While there are some differences and additional steps when using Microsoft* Windows*, in general the procedure is the same.</p>
<p>All optional steps are recommended but not necessary for successful integration.</p>
<ol>
<li>[Optional] Visit <a href="http://www.sun.com/software/gridware/" target="_blank">sun.com</a> and get a brief overview of SGE</li>
<li>Installation
<p>See the <a href="http://docs.sun.com/app/docs/doc/820-0697?a=load" target="_blank">Installation Guide</a> from sun.com for details.  Roughly, the steps are as follows:</p>
<ul>
<li>Install Master Host (see ‘How to Install the MasterHost’ section);</li>
<li>Install Execution Host (see ‘How to Install ExecutionHosts’ section);</li>
<li>Register Administration Hosts (see the corresponding section in the Installation Guide);</li>
<li>Register Submit Hosts (see corresponding section);</li>
<li>Verify the installation (see corresponding section).</li>
</ul>
<p>IMPORTANT NOTES:</p>
<ul>
<li>To finalize the installation process, you’ll have to configure the network services manually (by modifying /etc/services), which requires root privileges.</li>
<li>It’s possible to install/run SGE as a non-privileged user, but <ol>
<li>there are some limitations in that case;</li>
<li>you need root privileges for the complete installation process (at least, for modifying /etc/services).</li>
</ol> </li>
</ul>
</li>
<li>Create a new Parallel Environment (PE) for Intel MPI<ol>
<li>Create the appropriate configuration file for the new PE. It should contain the following lines:          
<table border="0">
<tbody>
<tr>
<td width="120">pe_name</td>
<td>impi</td>
</tr>
<tr>
<td>slots</td>
<td>999</td>
</tr>
<tr>
<td>user_lists</td>
<td>NONE</td>
</tr>
<tr>
<td>xuser_lists</td>
<td>NONE</td>
</tr>
<tr>
<td>start_proc_args</td>
<td>NONE</td>
</tr>
<tr>
<td>stop_proc_args</td>
<td>NONE</td>
</tr>
<tr>
<td>allocation_rule</td>
<td>$round_robin</td>
</tr>
<tr>
<td>control_slaves</td>
<td>FALSE</td>
</tr>
<tr>
<td>job_is_first_task</td>
<td>FALSE</td>
</tr>
<tr>
<td>urgency_slots</td>
<td>min</td>
</tr>
</tbody>
</table>
</li>
<li>Add the new PE using the following command:
<blockquote><code>‘qconf –Ap &lt;config_file&gt;’</code></blockquote>
</li>
</ol>
<p>USEFUL COMMANDS:<br />* <code>qconf –spl</code> – view all PEs currently available;<br />* <code>qconf –sp &lt;PE_name&gt;</code> - view settings for a particular PE;<br />* <code>qconf –dp &lt;PE_name&gt;</code> - remove a PE;<br />* <code>qconf –mp &lt;PE_name&gt;</code> - modify an existing PE.</p>
<p>Also see the ‘Managing Special Environment’ section in the <a href="http://docs.sun.com/app/docs/doc/820-0698?a=load" target="_blank">Administration Guide</a> from sun.com if you need more details about PE configuration.</p>
</li>
<li>Associate a queue with the new PE
<p>Use the following commands for that:</p>
<ol>
<li><code>qconf –sql</code> – to see all queues available;</li>
<li><code>qconf –mq &lt;queue_name&gt;</code> - to modify the queue’s settings. Find the ‘pe_list’ property in the open window and add the ‘impi’ string to that property.</li>
</ol>
<p>USEFUL COMMANDS:<br />* <code>qconf –sq &lt;queue_name&gt;</code> - view the queue’s settings.</p>
<p>See the Administration Guide if you need more details about the queue configuration process.</p>
</li>
<li>Add Intel MPI environment to your current environment by sourcing the appropriate <strong>mpivars.[c]sh</strong> script located in the &lt;install_dir&gt;/bin[64] directory</li>
<li>Build the MPI application to be run</li>
<li>[Optional] Make sure that Intel MPI works fine on the desired hosts. For this, manually run your application on the desired hosts individually</li>
<li>Submit your MPI job to SGE
<p>Use the following command for that:</p>
<blockquote><code>qsub -N &lt;job_name&gt; -pe impi &lt;num_of_processes&gt; \<br /> -V &lt;mpirun_absolute_name&gt; -r ssh -np &lt;num_of_processes&gt; &lt;app_absolute_name&gt;</code></blockquote>
<br />where<br />-V option is used so that all environment variables available in the current shell are exported to a job.
<p> </p>
<p>USEFUL COMMANDS to monitor and control jobs:<br />* <code>qstat</code> – show status of SGE jobs and queues;<br />* <code>qstat –j</code> – show detailed information about jobs (can be useful for pending jobs);<br />* <code>qdel</code> – remove existing job.<br />After submitting the job you can monitor its status using the <strong>qstat</strong> command. When the job is finished, you can find the job’s output and error output in your HOME directory – just look for &lt;job_name&gt;.o&lt;jobID&gt; and &lt;job_name&gt;.e&lt;jobID&gt; files.</p>
<p>See the <a href="http://docs.sun.com/app/docs/doc/820-0699?a=load" target="_blank">User’s Guide</a>, if you need more information about the job submission process.</p>
</li>
</ol>
<p class="sectionHeadingText">Closer integration with SGE</p>
<p>Read the 'Tight Integration of Parallel Environments and Grid Engine Software' section in <a href="http://docs.sun.com/app/docs/doc/820-0698?a=load" target="_blank">SGE's Administration Guide</a> first.</p>
<p>To enable tight integration for Intel MPI, use the same procedure as the one mentioned above, but use a different configuration file for the PE at step #3.</p>
<p>The configuration file should contain the following lines:           
<table border="0">
<tbody>
<tr>
<td width="120">pe_name</td>
<td>impi_tight</td>
</tr>
<tr>
<td>slots</td>
<td>999</td>
</tr>
<tr>
<td>user_lists</td>
<td>NONE</td>
</tr>
<tr>
<td>xuser_lists</td>
<td>NONE</td>
</tr>
<tr>
<td>start_proc_args</td>
<td>&lt;SGE_install_dir&gt;/mpi/startmpi.sh -catch_rsh $pe_hostfile</td>
</tr>
<tr>
<td>stop_proc_args</td>
<td>&lt;SGE_install_dir&gt;/mpi/stopmpi.sh</td>
</tr>
<tr>
<td>allocation_rule</td>
<td>$round_robin</td>
</tr>
<tr>
<td>control_slaves</td>
<td>TRUE</td>
</tr>
<tr>
<td>job_is_first_task</td>
<td>FALSE</td>
</tr>
<tr>
<td>urgency_slots</td>
<td>min</td>
</tr>
</tbody>
</table>
</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/integrating-intel-mpi-sge</link>
      <pubDate>Fri, 03 Apr 2009 08:22:27 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/integrating-intel-mpi-sge#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/integrating-intel-mpi-sge</guid>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* 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>Thu, 26 Feb 2009 07:53:14 -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>