<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Wed, 25 Nov 2009 04:28:27 -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/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-linux-kb/tips-and-techniques/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Installing the Intel(R) Cluster Tools on Debian-based systems</title>
      <description><![CDATA[ <p><b>I have a Debian-based system and would like to use the Intel® Cluster Tools.  Is there a way?</b></p>
<p>Officially, the Intel Cluster Tools support RPM-based installs only.  For a full list of supported OSes, check out our <a href="http://software.intel.com/en-us/articles/intel-cluster-toolkit-operating-system-compatibility/" target="_blank">compatibility matrix</a>.</p>
<p>If you’d still like to use the tools on Debian and Ubuntu systems, the following steps can help you in, at least, installing the tools.  Note that the process below still requires that a valid license for the desired Cluster Tool is present on the machine.</p>
<ol>
<li>Download the latest version of the Intel® MPI Library for Linux* from the <a href="https://registrationcenter.intel.com/" target="_blank">Intel® Registration Center</a>.</li>
<br />
<li>Untar the package and go down into the newly created directory
<blockquote>$ tar –xzf l_mpi_p_3.2.1.009.tgz<br /> $ cd l_mpi_p_3.2.1.009/</blockquote>
</li>
<br />
<li>Create a new directory and extract the RPM files using the provided install.sh script.  Note that you’d need a valid license to do so.
<blockquote>$ mkdir rpms<br /><br /> $ ./install.sh --extract=./rpms<br /> Extracting components...<br /> Extracting files...    ################################################   [100%]<br /> Product's rpm and EULA have been extracted in ./rpms<br /> Please carefully read EULA before using the product<br /><br /> $ ls –l<br /> 
<table border="0">
<tbody>
<tr>
<td style="margin-right: 10px">intel-mpi-em64t-3.2.1p-009.x86_64.rpm</td>
<td># SDK for the Intel MPI Library for Linux*</td>
</tr>
<tr>
<td style="margin-right: 10px">intel-mpi-rt-em64t-3.2.1p-009.x86_64.rpm     <br /></td>
<td># Runtime component of the Intel MPI Library</td>
</tr>
<tr>
<td style="margin-right: 10px">mpiEULA.txt</td>
<td># End-User License Agreement for the Intel MPI Library.<br /># Read before using.</td>
</tr>
<tr>
<td style="margin-right: 10px">redist.txt</td>
<td># List of Intel MPI Library files whose redistribution is allowed</td>
</tr>
</tbody>
</table>
</blockquote>
</li>
<br />
<li>Convert the <b>RPM</b> files into <b>DEB</b> files, to be installed on your Debian-based system using the <b>alien</b> utility
<blockquote>$ which alien<br /> /usr/bin/alien<br /><br />$ alien intel-mpi-em64t-3.2.1p-009.x86_64.rpm<br />intel-mpi-em64t_3.2.1p-10_amd64.deb generated</blockquote>
Here note that converting the SDK package for the Intel MPI Library is enough, as the runtime libraries are already contained within.</li>
<br />
<li>Now that you have the <b>.deb</b> file generated, install using your preferred method.  For example, this is how it’s done using the <b>dpkg</b> utility
<blockquote># This will use the default /opt/intel installation directory<br />$ dpkg --install intel-mpi-em64t_3.2.1p-10_amd64.deb</blockquote>
</li>
<br />
<li>Done!  You are now free to enjoy the Intel MPI Library at your leisure.</li>
<br />
<p>Even though this example highlighted the Debian-based installation of the Intel MPI Library, the same technique can be applied to the Intel® Cluster Toolkit for Linux*, Intel® Cluster Toolkit Compiler Edition for Linux*, and the Intel® Trace Analyzer and Collector for Linux*.</p>
</ol> ]]></description>
      <link>http://software.intel.com/en-us/articles/installing-cluster-tools-on-debian</link>
      <pubDate>Wed, 19 Aug 2009 09:56:06 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/installing-cluster-tools-on-debian#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/installing-cluster-tools-on-debian</guid>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Linux* 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 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>
    <item>
      <title>Master node issue</title>
      <description><![CDATA[ <p><strong>Issue</strong></p>
<p>I have a cluster, which has for example 3 nodes, where the mpd.hosts file contains:</p>
<blockquote>$ cat mpd.hosts <br />node2 <br />node3</blockquote>
<p>The  <strong>master node</strong>, which is  <strong>node1</strong> is not listed in the  <strong>mpd.hosts</strong> file. The shell commands:</p>
<blockquote>$ mpdboot -r ssh -n 2 -f ~/mpd.hosts <br />$ mpiexec -n 4 /bin/hostname</blockquote>
which are issued from  <strong>node1</strong> reveal the following:
<blockquote>node1 <br />node1 <br />node2 <br />node2</blockquote>
<p> </p>
<p><strong>Solution</strong></p>
<p>By design, the  <strong>master node</strong> (i.e., the node where the  <strong>mpiexec</strong> command is launched from) needs to have a daemon running. If you want to run your application on  <strong>node2</strong> and  <strong>node3</strong>, you can use the  <strong>-host</strong> options with the  <strong>mpiexec</strong> command as follows:</p>
<blockquote>$ mpdboot -r ssh -n 3 -f ~/mpd.hosts <br />$ mpiexec -n 2 -host node2 /bin/hostname : -n 2 -host node3 /bin/hostname</blockquote>
Or simply to use the <strong>-nolocal</strong> option for <strong>mpiexec</strong> as follows:
<blockquote>$ mpdboot -r ssh -n 3 -f ~/mpd.hosts <br />$ mpiexec -nolocal -n 4 /bin/hostname</blockquote>
<p>This will run the hostname command on nodes  <strong>node2</strong> and  <strong>node3</strong> only, even though there are three mpd daemons total.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-cluster-toolkit-for-linux-master-node-issue</link>
      <pubDate>Fri, 23 Jan 2009 12:12:46 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-cluster-toolkit-for-linux-master-node-issue#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-cluster-toolkit-for-linux-master-node-issue</guid>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* 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>Fri, 16 Jan 2009 15:04:12 -0800</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>
  </channel></rss>