<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sun, 12 Feb 2012 05:35:56 -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/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>Remote Terminal MPI Debug using Intel(R) Debugger</title>
      <description><![CDATA[ <br />
<p><b>Introduction : <br /></b><br />By default the Intel(R) Debugger requires the ability to open either a GUI or at least a dedictaed separate xterm window. This article describes how to launch a command line verion of MPI enabled IDB in a command line only terminal window. <br /><br /><br /><b>Version : </b><br />This article applies to the Intel(R) Debugger for Linux* v11.0 and higher<br />The proposed command ine and testing of this approach was based on Intel(R) MPI Library 3.x, but newer versions should work as well.<br />The screen command needs to be available<br /><br /><b>Configuration Set Up : </b><br />The usage model this article applies to is as follows:<br /><br />- network based Linux MPI cluster with application possibly running distributed over several nodes</p>
<p>- only available access to the cluster is via remote terminal login (puTTY, ssh, ...)</p>
<p>- no X window output redirection to the login machine is possible <br /><br />- Please ensure to IDB_PARALLEL_SHELL set to enable multi-node debugging<br /><br /> "export IDB_PARALLEL_SHELL=/usr/bin/ssh"<br /><br /><b>Solution:<br /></b><br />- Edit mpiexec.py launch script in the bin directory of your Intel(R) MPI Library installation<br />- Launch debugger with "screen mpiexec -idb -n &lt;node number&gt; &lt;debuggee executable&gt;"<br /> <br /><b>Python Script Changes : </b><br /><br />1. In the line that defines dbg_cmd replace "xterm" with "screen" and remove "-e" in mpiexec.py. In addition remove the "&amp;" at the end of the line.<br /><br />E.g. replace the line <br /><br />dbg_cmd = 'xterm -e ' + tv_exe + ' -pid ' + `os.getpid()` + ' -mpi2 -parallel /usr/bin/python &amp;'<br /><br />with<br /><br />dbg_cmd = 'screen' + tv_exe + ' -pid ' + `os.getpid()` + ' -mpi2 -parallel /usr/bin/python'<br /><br />2. Replace the line<br /><br />os.system(dbg_cmd)<br /><br />with the following lines:<br /><br />cpid = os.fork()<br /><br />if (cpid == 0):<br />os.system(dbg_cmd)<br />sys.exit(0)</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/remote-terminal-mpi-debug/</link>
      <pubDate>Wed, 15 Dec 2010 19:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/remote-terminal-mpi-debug/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/remote-terminal-mpi-debug/</guid>
      <category>Tools</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>How to use SLURM* PMI with the Intel® MPI Library for Linux*?</title>
      <description><![CDATA[ <p><b>Introduction : </b><br /><br />Intel® MPI Library provides PMI virtualization mechanism. It means that users may utilize third party implementations of the PMI library.<br /><br /><b>Version : <br /></b><br />Intel® MPI Library 4.0 Update 1 for Linux*<br /><br /><b>Running the Application: </b><br /><br />To use SLURM's implementation of the PMI library do the following:<br />• Set the I_MPI_PMI_LIBRARY environment variable to desired PMI library specifying the full path to the libpmi.so library<br />• Use srun utility to start an application. In this case Intel® MPI Library Process Manager is not used and only Slurm utilities control the job (launch, control, terminate)<br /><br /><b>Benefits : </b><br /><br />Tight integration is reached with a job scheduler if a PMI library integrated with it is used. <br /><br /><b>Known Issues or Limitations : </b><br /><br />• SLURM’s implementation of the PMI library does not provide enough functionality to enable pinning feature of the Intel® MPI Library<br />• Set the I_MPI_FABRICS environment variable explicitly or set I_MPI_CHECK_DAPL_PROVIDER_MISMATCH=off to make sure that fast fabric will be initialized correctly<br /><br /><strong>Example : <br /></strong><br />$ export I_MPI_PMI_LIBRARY=/full/path/to/slurm/libpmi.so<br />$ export I_MPI_FABRICS=shm:dapl<br />$ srun -N &lt;num_nodes&gt; -n &lt;num_processes&gt; ./a.out<br /><br />This approach was checked with Slurm-1.2.21 on Intel® 64 based system.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-use-slurm-pmi-with-the-intel-mpi-library-for-linux/</link>
      <pubDate>Tue, 30 Nov 2010 10:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-use-slurm-pmi-with-the-intel-mpi-library-for-linux/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-use-slurm-pmi-with-the-intel-mpi-library-for-linux/</guid>
      <category>Intel® Cluster Toolkit</category>
      <category>Intel® Cluster Toolkit Compiler</category>
      <category>Intel® MPI Library</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Using the new TMI fabric for Intel MPI Library</title>
      <description><![CDATA[ <p><b>I heard the Intel® MPI Library 4.0 has a fancy new fabric to enable support for tag matching interfaces (TMI) such as QLogic* PSM* and Myrinet* MX*.  How do I enable it?</b></p>
<p>It’s as easy as 1-2-3:</p>
<ol>
<li>Create a <code>tmi.conf</code> file for your chosen fabric driver.  You can find an example <code>tmi.conf</code> file in the <code>&lt;impi_install_dir&gt;/etc[64]</code> directory.                    
<ul>
<li>If your cluster is running the Myrinet* MX* drivers, your <code>tmi.conf</code> file should have the following contents:
<blockquote>$ cat tmi.conf<br />#  TMI provider configuration<br />mx     1.0     libtmip_mx.so           " "              #  comments ok</blockquote>
</li>
<li>If your cluster is running the Qlogic* PSM* drivers, your <code>tmi.conf</code> file should have the following contents:
<blockquote>$ cat tmi.conf<br />#  TMI provider configuration<br />psm     1.0     libtmip_psm.so          " "             #  comments ok</blockquote>
</li>
</ul>
<p>Make sure your <code>LD_LIBRARY_PATH</code> includes the Intel MPI Library <code>lib[64]</code> directory.  You can do that easily by sourcing the provided <code>mpivars.[c]sh</code> scripts.</p>
<p>Alternatively, you can specify the full path to the TMI library in the <code>tmi.conf</code> file as illustrated in the following example for the PSM* interface:</p>
<blockquote>$ cat tmi.conf<br />#  TMI provider configuration<br />psm     1.0     <b>/opt/intel/impi/4.0/lib64/libtmip_psm.so</b> " "             #  comments ok</blockquote>
<p> </p>
</li>
<li>
<p>Position the new <code>tmi.conf</code> file appropriately.  The default location for this configuration file is <code>/etc/tmi.conf</code>.  If the <code>/etc</code> directory is not shared amongst all nodes, manually copy the <code>tmi.conf</code> file across the cluster.</p>
<p>Alternatively, you can use the <code>TMI_CONFIG</code> environment variable to point to a new location, as follows:</p>
<blockquote>$ export TMI_CONFIG=/home/myid/tmi.conf</blockquote>
<p>If you use the <code>TMI_CONFIG</code> variable as specified, the Intel MPI Library will use the new <code>/home/myid/tmi.conf</code> configuration file instead of <code>/etc/tmi.conf</code>.</p>
<p> </p>
</li>
<li>
<p>Enable the use of the <b>tmi</b> fabric on your Intel MPI Library command line by setting the <code>I_MPI_FABRICS</code> environment variable as follows:</p>
<blockquote>$ export I_MPI_FABRICS=shm:tmi 	# for shared memory and TMI communication</blockquote>
or
<blockquote>$ export I_MPI_FABRICS=tmi	# for TMI-only communication</blockquote>
<p>Alternatively, this can be selected at runtime on your command line:</p>
<blockquote>$ mpirun –genv I_MPI_FABRICS shm:tmi –n 2 ./exe</blockquote>
<p> </p>
</li>
</ol>
<p>You can find additional information in the <a href="http://software.intel.com/en-us/articles/intel-mpi-library-documentation/" target="_blank">Intel MPI Library Reference Manual</a>, or contact us by posting at the <a href="http://software.intel.com/en-us/forums/intel-clusters-and-hpc-technology/" target="_blank">Intel® Clusters and HPC Technology Forums</a>.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-tmi/</link>
      <pubDate>Wed, 12 May 2010 19:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-tmi/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-tmi/</guid>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* 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>Using Cluster MKL PBLAS/ScaLAPACK FORTRAN routine in your C program</title>
      <description><![CDATA[ <b>Introduction</b><br /><br />Intel MKL PBLAS and ScaLAPACK routines are written in FORTRAN 77  (with exception of a few utility routines written<br />in C to exploit the IEEE arithmetic). It is difficult for the programmer who used to C language convention. This article describles a sample to call the Intel® Math Kernel Library (Intel® MKL) PBLAS routines from a C program to show the difference between C calling converstion and Fortran calling conversion . <br />Please see the <a href="http://software.intel.com/en-us/forums/showthread.php?t=71886">detail discussion</a> on <a href="http://software.intel.com/en-us/forums/intel-math-kernel-library/">MKL forum</a>. <br /><br /><strong>1. Problem</strong><br />    The sample is using PDGEMV(), which computes a distributed matrix-vector product y =<em>alpha</em>Ax+<em>beta*</em>y. <br />    A= [1  4  7  10  13 ; 3   6   9   12  15 ;  5  8   11  14  17 ; 7  10  13  16  19;  9  12  15  18  21] <br />    and x=[1 ; 1; 0; 0; 1]<sup>T</sup>, x is a column vector, Call PDGEMV() routine to compute y=Ax.  <br />    The right result is y=[18; 24; 30; 36; 42]<sup>T</sup> <br /><br /><strong>2. Code sample in C:</strong> <a href="http://software.intel.com/file/25271">pdgemv.c</a><br />    The function call in C is like,<br />
<p>    double alpha = 1.0; double beta = 0.0;<br />    pdgemv_("N",&amp;M,&amp;M,&amp;alpha,A,&amp;ONE,&amp;ONE,descA,x,&amp;ONE,&amp;ONE,descx,&amp;ONE,&amp;beta,y,&amp;ONE,&amp; amp;ONE,descy,&amp;ONE);<br /><strong> <br />3. Build and Run it</strong><br />    Build it under linux environment, assume intel 64bit application. <br />    ! set environment and build pdgemv.c <br />    $source /opt/intel/mkl/10.x.x.0xx/tools/environment/mklvarsem64t.sh<br />    $source /opt/intel/mpi/3.x.x/bin64/mpivars.sh<br />    $source /opt/intel/Compiler/11.x/0xx/bin/iccvars.sh intel64<br />    $mpiicc -w -o pdgemv pdgemv.c -I/opt/intel/mkl/10.x.x.0xx/include -L/opt/intel/mkl/10.x.x.0xx/lib/em64t <br />     -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread<br /><br />    ! run the application <br />    $ mpirun -n 4 ./pdgemv<br /><br /><strong>4. Notes</strong><br />Intel MKL PBLAS/ScaLAPACK routines are written in FORTRAN interface, so Column-major are used and row-major is not acceptable.  If you gives the matrix to these routines in row-major - even your code is completely right from C (Row-major) point of view,  the result will be almost always wrong.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-cluster-mkl-pblasscalapack-fortran-routine-in-your-c-program/</link>
      <pubDate>Mon, 01 Mar 2010 08:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-cluster-mkl-pblasscalapack-fortran-routine-in-your-c-program/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-cluster-mkl-pblasscalapack-fortran-routine-in-your-c-program/</guid>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Syntax errors when running Intel® MPI Library scripts under Ubuntu</title>
      <description><![CDATA[ <p><b>Problem : </b></p>
<p>I'm trying to run the Intel® MPI Library on my Ubuntu system. Installation went fine but I see this error when trying to run:</p>
<blockquote>gsslavov@backuppc:~$ mpirun -np 4 hostname<br />/home/gsslavov/intel/impi/3.2.2.006/bin/mpirun: 63: Syntax error: "(" unexpected (expecting "fi")</blockquote>
<p>What's going on?</p>
<p><b>Environment : </b></p>
<p>This applies to systems running Ubuntu 9.10 or later (as well as Ubuntu 8.04 LTS or later)</p>
<p><b>Root Cause : </b></p>
<p>It seems that with version 9.10, Ubuntu has decided to change the default shell from <code>bash</code> to <code>dash</code>. More info is available from the link in the excerpt below:</p>
<blockquote>In Ubuntu 6.10, the default system shell, /bin/sh, was changed to <b>dash</b> (the Debian Almquist Shell); previously it had been <b>bash</b> (the GNU Bourne-Again Shell). <a target="_blank" href="https://wiki.ubuntu.com/DashAsBinSh">This document explains this change and what you should do if you encounter problems.</a><br /><br />The default login shell remains <b>bash</b>.
<div></div>
</blockquote>
<p>The two shells are not fully compatible (since <code>bash</code> is quite more extensive than <code>dash</code>), thus leading to the syntax errors.</p>
<p><b>Resolution : </b></p>
<p>If you'd like to continue using the Intel MPI Library (or any of the Cluster Tools) on Ubuntu, the fix for this issue is fairly simple: change the <code>/bin/sh</code> symlink to point from <code>dash</code> to <code>bash</code>:</p>
<blockquote>$ rm /bin/sh<br />$ ln -s /bin/bash /bin/sh</blockquote>
<div></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/syntax-errors-when-running-intelr-mpi-library-scripts-under-ubuntu/</link>
      <pubDate>Mon, 21 Dec 2009 22:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/syntax-errors-when-running-intelr-mpi-library-scripts-under-ubuntu/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/syntax-errors-when-running-intelr-mpi-library-scripts-under-ubuntu/</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>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 target="_blank" href="http://software.intel.com/en-us/articles/intel-cluster-toolkit-operating-system-compatibility/">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 target="_blank" href="https://registrationcenter.intel.com/">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 >intel-mpi-em64t-3.2.1p-009.x86_64.rpm</td>
<td># SDK for the Intel MPI Library for Linux*</td>
</tr>
<tr>
<td >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 >mpiEULA.txt</td>
<td># End-User License Agreement for the Intel MPI Library.<br /># Read before using.</td>
</tr>
<tr>
<td >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>
<p>NOTE: It seems like Ubuntu has changed the default system shell starting with version 9.10. If you're seeing syntax errors, <a href="http://software.intel.com/en-us/articles/syntax-errors-when-running-intelr-mpi-library-scripts-under-ubuntu/">the following article</a> talks about how they can be resolved.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/installing-cluster-tools-on-debian/</link>
      <pubDate>Mon, 21 Dec 2009 22:00:00 -0800</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>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 Library 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 Library<br /><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 Library environment to your current environment by sourcing the appropriate <b>mpivars.[c]sh</b> 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 Library 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 <b>qstat</b> 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" mce_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>Sun, 20 Dec 2009 22:00:00 -0800</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>Random fabric errors on Red Hat Enterprise Linux 5.4</title>
      <description><![CDATA[ <p><b>Problem:</b></p>
<p>The Intel® MPI Library fails intermittently when run over the <code>RDSSM</code> or <code>RDMA</code> devices. Approximately 5-10% of runs fail on RHEL (Red Hat Enterprise Linux) 5.4, but this problem does not occur on earlier versions of RHEL.</p>
<p>When reviewing the debug output, the following error is seen during the Intel MPI Library operations:</p>
<blockquote>setup_listener Cannot assign requested address</blockquote>
<br />
<p><b>Environment:</b></p>
<p>Red Hat Enterprise Linux 5.4 only</p>
<p><b>Root Cause:</b></p>
<p>This error occurs with the Intel MPI Library and the version of OFED (Open Fabrics Enterprise Distribution) included with RHEL 5.4. There is a potential port space conflict with RDS (reliable datagram sockets) and when this port space conflict occurs, uDAPL does not resolve it correctly.</p>
<p>By default, the Intel MPI Library uses its process ID to define its port number. In RHEL 5.4, the process ID can occasionally match a port number that the RDS driver has already allocated, which creates a port space conflict. Currently, uDAPL will reply with the wrong return code to the Intel MPI Library and communication will fail.</p>
<p><b>Resolution:</b></p>
<p>As a temporary workaround, set the following environment variable on all nodes:</p>
<blockquote>$ export I_MPI_RDMA_CREATE_CONN_QUAL = 0</blockquote>
<p>After setting this variable, the Intel MPI Library will not define its port number from its process ID.</p>
<p>This error is resolved in DAPL 2.0.25, to be included in Open Fabrics Enterprise Distribution (OFED) 1.5.  Status of the resolution can be found in <a href="http://www.openfabrics.org/downloads/dapl/" target="_blank">the latest OFED release notes</a>.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/random-fabric-errors-on-rhel5U4/</link>
      <pubDate>Tue, 01 Dec 2009 22:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/random-fabric-errors-on-rhel5U4/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/random-fabric-errors-on-rhel5U4/</guid>
      <category>Intel® Cluster Checker Knowledge Base</category>
      <category>Intel® Cluster Toolkit for Linux* Knowledge Base</category>
      <category>Intel® MPI Library for Linux* Knowledge Base</category>
    </item>
  </channel></rss>
