<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Fri, 10 Feb 2012 10:36:23 -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-fortran-compiler-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-fortran-compiler-for-linux-kb/type/technical-notes/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Intel® MKL Data Fitting component: Overview</title>
      <description><![CDATA[ <br />Intel® MKL 10.3 update 8 introduces Data Fitting Component. Data Fitting functions in Intel® MKL provide spline-based interpolation capabilities that can be used for spline construction (Linear, Cubic Quadratic etc.), to approximate functions, function derivatives or integrals, and perform cell search operations.<br /><br />Please find additional details in the overview training material: <a href="http://software.intel.comjavascript:void(0)" onclick="ndownload('http://software.intel.com/file/41051')"><b>Intel MKL Data Fitting Library Overview.pdf</b></a> <br /><br /><br />Note: <br />1. Intel® MKL 10.3 update 8 supports 1-D data fitting components.<br />2. Data Fitting component of Intel® MKL 10.3 update 8 does not support PGI* Fortran Compiler.<br /><br />
<p ><br /><img height="482" width="615" src="http://software.intel.com/file/40438" /></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/mkl-data-fitting-component-overview/</link>
      <pubDate>Sun, 04 Dec 2011 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/mkl-data-fitting-component-overview/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/mkl-data-fitting-component-overview/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Intel® MKL: What&amp;#39;s deprecated?</title>
      <description><![CDATA[ <p><strong>Please see below for details on the deprecated functionalities in Intel® Math Kernel Library (Intel® MKL).</strong></p>
<p><b><span >Forthcoming Intel® MKL 11.0</span></b> (Expected date of release: Autumn 2012)</p>
<p >•  <a href="http://software.intel.com/en-us/articles/mkl-11-backward-incompatibility-with-mkl-10_2_3/">Intel® MKL 11.0 will have backward incompatibility with Intel® MKL 10.2 update 3</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/openmp-static-library-deprecation-in-intelr-mkl-on-microsoft-windows/">Open MP static library on Microsoft* Windows</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/mkl-gmp-functions-are-deprecated">GMP* Arithmetic functions</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/intel-mkl-reference-manual-was-removed-from-product-package/">Intel® MKL Reference Manual will be removed from product package</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/the-default-optimized-code-at-ia-32-will-be-removed-in-the-intel-mkl-110/">Intel® Pentium III will no longer be supported</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/system-requirements-change-in-intel-mkl/">Red Hat* EL4 and PGI* Fortran 10.x support will be dropped</a></p>
<p >•  <a href="http://software.intel.com/en-us/articles/pgi-fortran-77-will-not-be-supported/">PGI* Fortran 77 support will be removed</a></p>
<p> </p>
<p> </p>
<p> </p>
<p align="center"> </p>
<p align="center"> </p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-mkl-whats-deprecated/</link>
      <pubDate>Thu, 01 Dec 2011 10:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-mkl-whats-deprecated/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-mkl-whats-deprecated/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</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® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
    </item>
    <item>
      <title>NumPy User Note</title>
      <description><![CDATA[ <p><b><br />NumPy  Application Note</b><br /><br /><b>Step 1 - Overview</b><br /><br />This guide is intended to help current NumPy users to take advantage of Intel® <a href="http://en.wikipedia.org/wiki/Math_Kernel_Library">Math Kernel Library</a> (Intel® MKL). NumPy automatically maps operations on vectors and matrices to the BLAS and LAPACK functions wherever possible.  Since Intel® MKL supports these de-facto interfaces, NumPy can benefit from MKL optimizations through simple modifications to the NumPy scripts.<br /><br /><a href="http://en.wikipedia.org/wiki/NumPy">NumPy</a> is the fundamental package required for scientific computing with Python. It consists of:</p>
<ul type="disc">
<li>a powerful N-dimensional array object</li>
<li>sophisticated (broadcasting) functions</li>
<li>tools for integrating C/C++ and Fortran code</li>
<li>useful linear algebra, Fourier transform, and random number capabilities.</li>
</ul>
<p>Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional container of generic data.</p>
<p>For more information on NumPy, please visit http://NumPy.scipy.org/<br /><br /><b>Version Information</b><br /><br />This application note was created to help NumPy users to make use of the latest versions of Intel MKL on Linux platforms.</p>
<p>The instructions given in this articles apply to Intel MKL 10.3 and above and Intel Compiler 11.0 and above.<br /><br /> <br /><b>Step 2 - Downloading NumPy Source Code</b><br /><br />The NumPy source code can be downloaded from:</p>
<p>http://NumPy.scipy.org/<br /><br /><b>Prerequisites</b><br /><br />Intel MKL can be obtained from the following options:</p>
<p>Download a FREE evaluation version of the Intel MKL product.<br />Download the FREE non-commercial* version of the Intel MKL product.<br /><br />All of these can be obtained at: <a href="http://www.intel.com/cd/software/products/asmo-na/eng/307757.htm">Intel® Math Kernel Library product web page</a>.<br /><br />Intel® MKL is also bundled with the following products<br /><br /><a href="http://software.intel.com/en-us/articles/intel-parallel-studio-xe/">Intel® Parallel Studio XE 2011</a><br /><a href="http://software.intel.com/en-us/articles/intel-composer-xe/">Intel Parallel Composer XE 2011</a><br /><a href="http://software.intel.com/en-us/articles/intel-cluster-studio/">Intel Cluster Studio 2011</a><br /><br /><b>Step 3 - Configuration</b><br /><br />Use the following commands to <b>extract the NumPy tar files</b> from the downloaded NumPy-x.x.x.tar.gz.</p>
<pre name="code" class="shell">1.	$gunzip numpy-x.x.x.tar.gz 
2.	$tar -xvf numpy-x.x.x.tar </pre>
<p> <br />The above will create a directory named numpy-x.x.x<br /><br />Make sure that C++ and FORTRAN compilers are installed and they are in PATH. Also set LD_LIBRARY_PATH to your compiler (C++ and FORTRAN), and MKL libraries.<br /><br /><b>Step 4 - Building NumPy</b><br /><br />Change directory to numpy-x.x.x<br />Create a site.cfg from the existing one<br /> <br />Edit site.cfg as follows:</p>
<p>Add the following lines to site.cfg in your top level NumPy directory to use Intel® MKL, if you are building on Intel 64 platform:</p>
<pre name="code" class="cpp">[mkl]<br />library_dirs = /opt/intel/composer_xe_2011_sp1.6.233/mkl/lib/intel64<br />include_dirs = /opt/intel/composer_xe_2011.sp1.6.233/mkl/include<br />mkl_libs = mkl_rt<br />lapack_libs =</pre>
<p><br /><br />If you are building NumPy for 32 bit, please add as the following</p>
<pre name="code" class="cpp">[mkl]
library_dirs = /opt/intel/composer_xe_2011_sp1.6.233/mkl/lib/ia32<br />include_dirs = /opt/intel/composer_xe_2011_sp1.6.233/mkl/include
mkl_libs = mkl_rt<br />lapack_libs = </pre>
<p>Modify cc_exe in numpy/distutils/intelccompiler.py to be something like:</p>
<pre name="code" class="cpp">self.cc_exe = 'icc -O3 -g -fPIC -fp-model strict -fomit-frame-pointer -openmp -xhost'

</pre>
<p>Here we use, -O3, optimizations for speed and enables more aggressive loop transformations such as Fusion, Block-Unroll-and-Jam, and collapsing IF statements, -openmp for OpenMP threading and -xhost option tells the compiler to generate instructions for the highest instruction set available on the compilation host processor. If you are using the ILP64 interface, please add -DMKL_ILP64 compiler flag.</p>
<p>Run icc --help for more information on processor-specific options, and refer Intel Compiler documentation for more details on the various compiler flags.</p>
<p>Compile and install NumPy with the Intel compiler: (on 64-bit platforms replace "intel" with "intelem")</p>
<pre name="code" class="cpp">python setup.py config --compiler=intel build_clib --compiler=intel build_ext --compiler=intel install

</pre>
<p><br />If you build NumPY for Intel64 bit platforms:</p>
<pre name="code" class="shell">$export LD_LIBRARY_PATH=/opt/intel/composer_xe_2011_sp1.6.233/mkl/lib/intel64:/opt/intel/composer_xe_2011_sp1.6.233/compiler/lib/intel64:$LD_LIBRARY_PATH

</pre>
<p>If you build NumPY for ia32 bit platforms:</p>
<pre name="code" class="shell">$export LD_LIBRARY_PATH=/opt/intel/composer_xe_2011_sp1.6.233/mkl/lib/ia32:/opt/intel/composer_xe_2011_sp1.6.233/compiler/lib/ia32:$LD_LIBRARY_PATH

</pre>
<p>It is possible that LD_LIBRARY_PATH causes a problem, if you have installed MKL and Composer XE in other directories than the standard ones. The only solution I've found that always works is to build Python, NumPy and SciPy inside an environment where you've set the LD_RUN_PATH variable, e.g:</p>
<pre name="code" class="cpp">$export LD_RUN_PATH=~/opt/lib:~/intel/composer_xe_2011_sp1.6.233/compiler/lib:~/intel/composer_xe_2011_sp1.6.233/mkl/lib/ia32
</pre>
<p><br /><br /><strong>Note:</strong> We recommend users to use arrays with 'C' ordering style which is row-major, which is default than Fortran Style which is column-major, and this is because NumPy uses CBLAS and also to get better performance.<br /><br /><strong>Appendex A: Example:</strong> <br /><br />Please see below an example Python script for matrix multiplication that you can use Numply installed with Intel MKL which has been provided for illustration purpose.</p>
<pre name="code" class="python">import numpy as np
import time

N = 6000
M = 10000

k_list = [64, 80, 96, 104, 112, 120, 128, 144, 160, 176, 192, 200, 208, 224, 240, 256, 384]

def get_gflops(M, N, K):
	return M*N*(2.0*K-1.0) / 1000**3

np.show_config()

for K in k_list:
	a = np.array(np.random.random((M, N)), dtype=np.double, order='C', copy=False)
	b = np.array(np.random.random((N, K)), dtype=np.double, order='C', copy=False)
	A = np.matrix(a, dtype=np.double, copy=False)
	B = np.matrix(b, dtype=np.double, copy=False)

	C = A*B

	start = time.time()

	C = A*B
	C = A*B
	C = A*B
	C = A*B
	C = A*B

	end = time.time()

	tm = (end-start) / 5.0

	print "{0:4}, {1:9.7}, {2:9.7}".format(K, tm, get_gflops(M, N, K) / tm)
</pre>
<br />
<p><strong>Appendix B: Performance Comparison<br /><br /><br /></strong></p>
<p ><br /><img height="500" width="530" src="http://software.intel.com/file/40584" alt="numpy-matrix-multiply.jpg" title="numpy-matrix-multiply.jpg" /><br /><br /><br /><br /><img height="500" width="530" src="http://software.intel.com/file/41176" alt="numpy_mkl_svd_comparison.jpg" title="numpy_mkl_svd_comparison.jpg" /><br /><br /><img height="500" width="530" src="http://software.intel.com/file/41175" alt="numpy_mkl_lu_comparison.jpg" title="numpy_mkl_lu_comparison.jpg" /> <br /><br /><img height="500" width="530" src="http://software.intel.com/file/41174" alt="numpy_mkl_cholesky_comparison.jpg" title="numpy_mkl_cholesky_comparison.jpg" /><br /><br />Please click <a href="http://software.intel.comjavascript:void(0)" onclick="ndownload('http://software.intel.com/file/41177')"><strong>Examples.py</strong></a> to download the examples for LU, Cholesky and SVD.<br /><br /><br /><br /> <b></b><a></a></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/numpy-user-note/</link>
      <pubDate>Tue, 16 Aug 2011 10:30:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/numpy-user-note/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/numpy-user-note/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</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® Math Kernel Library Knowledge Base</category>
    </item>
    <item>
      <title>How to open a file on a system where file locking is disabled on Linux</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b><br />The following OPEN statement will fail when running on a system where file locking is disabled:
<pre name="code" class="cpp"><br />open(unit=20,
    1      file=trim(filepath)//'/PROINIT',
    2      form='formatted',
    3      access='sequential',
    4      status='new',
    5      action='readwrite',
    6      shared,
    7      err=600)</pre>
<br /><b>Environment : Linux</b><br /><br /><br /><b>Root Cause : </b><br />On Linux systems, the task of enforcing file and record locking is left to the implementer. In other words, there is no intrinsic locking associated with the IO (open, fopen, read, etc...) system calls. The implementer has to use specific system calls (fcntl, flock, or lockf) to set locks. <br /><br />Both "shared" and "noshared" keywords are designed for this purpose - to enforce file access restriction when file-locking is enabled. That's to say file access will be checked by Intel Fortran RTL when "shared" or "noshared" is specified.<br /><br />Further more, specifying SHARED will explicitly set a file lock that is the same as SHARE='DENYNONE' on Windows. Specifying NOSHARED will explicitly set a file lock that is the same as SHARE='DENYRW' on Windows.<br /><br />On a system where file locking is disabled, Intel RTL is unable to check file lock for "shared" or "noshared" access. This results in open file fails as well.<br /><br /><b>Resolution : </b><br /><br />The file sharing on Linux actually have 3 states: <br />1. Default is any program can open the file with no lock checking overhead.<br />2. Program opens the file NOSHARED which means the program has exclusive access to the file - this requires lock setting for this program and lock checking for any other program that wants to cooperate.<br />3. Program opens the file SHARED which means any other program can open the file by specifying SHARED to cooperate on this file.<br /><br />When file-locking is disabled on the system, only the defaul state is acceptable. In such a situation, we cannot use SHARED or NOSHARED as keywork when open a file, but use the default instead. <br /><br />Modifying the open statement as following will resolve the issue:<br />
<pre name="code" class="cpp">open(unit=20,
    1      file=trim(filepath)//'/PROINIT',
    2      form='formatted',
    3      access='sequential',
    4      status='new',
    5      action='readwrite',
    6      err=600)

</pre>
<br /><br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/fail-to-open-a-file-when-file-locking-is-disabled-on-linux/</link>
      <pubDate>Tue, 21 Jun 2011 06:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/fail-to-open-a-file-when-file-locking-is-disabled-on-linux/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/fail-to-open-a-file-when-file-locking-is-disabled-on-linux/</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Which Intel® Math Kernel Library (Intel® MKL) libraries are &amp;#34;Redistributables&amp;#34;?</title>
      <description><![CDATA[ When you consider distributing Intel® MKL libraries through your products, you may choose the following options:<br /><br />1. Copy Intel MKL dlls (for Widnows*) from directory redist\(ia32\intel64)  to your destination application folder. For Linux and Mac OS* shared objects, .so files are located in redist\(ia32/intel64) directory.<br /><br />2. Create your own dll for your redistributions by using Intel MKL customdll linkage. <br /><br />3. Use Intel MKL static libraries from \lib directory.<br /><br />If you are using Intel MKL stand-alone product:<br /><br />Check the redist.txt file located in &lt;Intel MKL install directory&gt; \Documentation\en_US\mkl for more details <br /><br /><br />If you are using Intel MKL from previous Intel® Compiler Professional Edition version:<br /><br />Check the redist.txt file located in Intel MKL directory &lt;Intel MKL install directory&gt; \Documentation\en_US\mkl for more details.<br /><br /><br /><br /> ]]></description>
      <link>http://software.intel.com/en-us/articles/which-mkl-libraries-are-redistributables/</link>
      <pubDate>Wed, 25 May 2011 08:30:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/which-mkl-libraries-are-redistributables/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/which-mkl-libraries-are-redistributables/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Distributed Memory Coarray Fortran with the Intel Fortran Compiler for Linux: Essential Guide</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Introduction : </b><br />This is an essential guide to using the Coarray Fortran (CAF) feature of the Intel Fortran Composer XE 2011 for Linux on a distributed memory cluster.<br /><br /><b>Version : </b><br />To use the distributed memory feature of Intel CAF, you must have a licensed copy of the Intel<span >®</span> Cluster Studio 2011 (Formerly Intel<span >®</span> Cluster Toolkit Compiler Edition).  The shared memory CAF feature is available in the Intel<span >®</span> Cluster Studio 2011, the Intel<span >®</span> Composer XE 2011 for Linux, and Intel<span >® </span>Visual Fortran Composer XE 2011 for Windows.  The CAF feature is currently not available under Mac OS X, and the distributed memory CAF feature is only available under the Linux operating system.<b></b><br />Requires Intel MPI for Linux version 4.0 Update 1 or greater<br />Requires Intel Composer XE 2011 (original or any Update) <br />Requires Intel Cluster Studio 2011 license for COMPILATION ONLY (no runtime checks).<br /><br /><span ><b>Configuration Set Up : </b></span><br />In order to run a distributed memory Coarray Fortran application, you must have an established cluster and an installation of Intel MPI version 4.0.1.007 or greater.  BEFORE ATTEMPTING TO RUN INTEL CAF, make sure you can run a simple MPI 'hello world' program on your cluster across multiple nodes using Intel MPI. <br /><br />Successful configuration and running of MPI jobs under Intel MPI is a prerequisite to using the Intel Fortran CAF feature in distributed memory mode.  In order to get support on the Intel CAF feature you will be asked to demonstrate the ability to run a 'hello world' MPI program on your cluster.  Please read the Intel MPI <span ><i>Release Notes</i></span> and <span ><i>Getting_Started</i></span> documents that come with your Intel MPI installation in the &lt;install directory&gt;/doc/ directory.<br /><br />Before running an Intel CAF application, perform the following steps:<br /><br />1) set up a mpd.hosts fle:  If your cluster hosts are fixed and you do NOT run under a batch system with PBS, set up a static hosts file.  In your home directory, create a file with the names of your cluster hostnames, one host per line optionally with the number of cores (processors) on each host similar to this:<br /> nodehostname1<br /> nodehostname2<br /> ...<br /> nodehostnameN<br /><br />If you run under a batch system such as PBS you will not know the hosts in your allocation until job dispatch.  In this scenario we will use the --file option to mpdboot that will use a batch system supplied hosts file (see later in this document).<br /><br />2) source Intel MPI and Intel Fortran compiler "...vars.sh" or "...vars.csh" files:  You must set up the paths to Intel MPI and Intel Fortran in your environment.  Furthermore, these should be sourced by child processes.  Thus it is recommended to perform the following source commands and/or add these to your .bashrc or .cshrc files in your home directory:<br /><br />source &lt;path to Intel MPI installation&gt;/[ia32 | intel64]/bin/mpivars.sh<br />source &lt;path to Intel Fortran installation&gt;/bin/compilervars.sh [ia32 | intel64]<br /> where you choose between 32 and 64 bit environments with ia32 or intel64 respectively.<br /><br />3) Setup a Coarray Fortran (CAF) configuration file:  When you run a distributed memory Coarray Fortran program, the application first runs a job launcher.  The job launcher invoked to start a distributed memory CAF application will use the Intel MPI 'mpiexec' command to start the job on the hosts in the cluster.  This CAF job launcher will first read the "CAF configuration file" to pick up arguments that will be passed to the Intel MPI mpiexec command.  Thus, the "CAF configuration file" is nothing more than arguments to the Intel MPI 'mpiexec' command.  And example CAF configuration file may contain:<br /> -envall -n 16 ./mycafprogram.exe<br /><br />Where you want 16 CAF images created of program "mycafprogram.exe".  Read the Intel MPI documentation on mpiexec for all possible options.  Some common options:<br /><br />-envall   copies your current environment variables to the environment of your CAF processes.  HIGHLY RECOMMENDED.<br /><br /> -n N     create N images (processes).  REQUIRED<br /><br /> -rr       round-robin image distribution of images to nodes.  OPTIONAL. Default is to pack each node with the number of images equal to the number of cores (real cores PLUS any hyperthreaded virtual cores) one host at at time in the order specified in mpd.hosts file.  Round-robin is one way to avoid using hyperthreaded cores.  With the -rr option to mpiexec, image 1 is assigned to host1 from your mpd.hosts or PBS_NODEFILE, image 2 to host2, etc. to image N on hostN, at which point the allocation cycles back to image N+1 on host1 and so on.<br /><br /> -perhost N    distribute images to hosts in groups of N.  OPTIONAL. This is another way to avoid hyperthreaded cores:  set N to the number of real cores on each host.  image 1..N are allocated on host1, images N+1 to N+N on host2, etc.<br /> <br /><br /><span ><b>Building the Application : </b></span><br />You are now ready to compile your Coarray Fortran application.  Create or use an existing Coarray Fortran application.  A sample Coarray Fortran 'hello world' application is included in the &lt;compiler install dir&gt;Samples/en_US/Fortran/coarray_samples/ directory.<br /><br />The essential compiler arguments to use for distributed memory coarray applications are:<br /><br />ifort -coarray=distributed -corray-config-file=&lt;CAF config filename&gt;<br /><br />Some essential notes:  -coarray=distributed is necessary to create a distibuted memory CAF application.  This option is only available on systems with a valid Intel Cluster Studio license.  Without this license you cannot create distributed memory Coarray Fortran applications - you can, however, create and use shared memory CAF applications with any existing Intel Composer XE 2011 for Linux or Windows license.<br /><br />-coarray-config-file=&lt;CAF configuration file&gt;   this option is used to set tell the CAF job launcher where to find the configuration file to find runtime arguments to 'mpiexec'.  This file need not exist at the time of compilation.  This file is ONLY read at job launch.  Thus, it can be changed or modified between job runs to change the number of images along with any other valid control option to 'mpiexec'.  This give the programmer a way to change the number of images and other parameters without having to recompile the application.  A reasonable name for the file may be ~/cafconfig.txt, but the name of the file and location is up to the user to decide.  One essential note:  the executable name is hard-coded in the CAF config file, so be sure that the executable name in the config file matches the name you used with the 'ifort -o &lt;name&gt;' option.  Also, be sure to use either the full pathname to the executable OR the current directory "dot" name, such as './a.out' or './mycafprogram.exe' as examples.<br /><br />Note:  -coarray-num-images=N  compiler option is ignored for -coarray=distributed.  This option is only used by shared memory Coarray Fortran applications.  The number of images for distributed memory CAF applications is ONLY controlled at job launch by the '-n N' option in the CAF config file.<br /><br />Of course, you can include any other compiler options including all optimization options.<br /><br /><br /><span ><b>Running the Application : </b></span><br />Running an Intel CAF application involves 3 commands:<br /><br /><ol>
<li>mpdboot</li>
<li>&lt;running the application executable, for example ./a.out or ./mycafprogram.exe&gt;</li>
<li>mpdallexit</li>
</ol><br />1) <b>mpdboot:</b> This command sets up the underlying runtime daemons used to control the various processes in your CAF application.  'mpdboot' sets up the runtime on the hosts in either your mpd.hosts file and/or from a file specified in the --file= option.  The mpdboot option needs a '-n &lt;number of nodes&gt;' argument.  For example, if you wish to run across 4 nodes, and there are 4 hosts in your mpd.host file:<br /><br /> mpdboot -n 4 <br /><br />will start the runtime daemons needed on all 4 nodes in your cluster or batch allocation.<br /><br />If you are using a static list of hosts in your cluster, you create a mpd.hosts file as documented in the <b>Configuration Set Up </b>section above and place that in your current directory or your home directory, running mpdboot thusly:<br /><br /> mpdboot --file=~/mpd.hosts -n 4<br /><br />for example for 4 nodes.<br /><br />If you run on under PBS, the PBS batch system will create a hosts file for you with the list of hosts in your current batch allocation and set environment variable PBS_NODEFILE to point to this hosts file.  Thus, you can use this mpdboot command:<br /><br /> mpdboot --file=$PBS_NODEFILE -n 4<br /><br />Other batch systems will similarly create a hosts file and set an appropriate environment variable.  Please consult your site system administrator for the environment variable and hosts file, as these host file conventions vary widely by batch system and local configuration.<br /><br />Another mpdboot option often needed is '--rsh=[rsh | ssh]' where the remote connection method is specified.  Again, consult your site system administrator to determine if MPI uses RSH or SSH for remote connections.  In most cases ssh is used.   Thus, an example mpdboot command would look like:<br /><br /> mpdboot --rsh=ssh --file=~/mpd.hosts -n N<br />or<br /> mpdboot --rsh=rsh --file=$PBS_NODEFILE -n N<br /><br />CHECK:  run the command 'mpdtrace' or 'mpdtrace -l' to confirm that your mpdboot launched runtime daemons on each node and that each node is communicating.  If all is well, you will get a list of nodes participating in your runtime environment.  If not, you will get an error message such as:<br />mpdtrace: cannot connect to local mpd (/tmp/mpd2.console_rwgreen); possible causes:<br /> 1. no mpd is running on this host<br /> 2. an mpd is running but was started without a "console" (-n option)<br /><br />YOU CANNOT RUN AN INTEL CAF APPLICATION UNTIL THE MPDTRACE COMMAND COMPLETES SUCCESSFULLY.<br /><br /><br />2) <b>Run your compiled Intel CAF application</b><br /><br />simply invoke your compiled Intel CAF application.  This application contains a job launcher that invokes the Intel MPI 'mpiexec' command using arguments from your CAF config file.<br /><br />./a.out<br />./mycafprogram.exe<br /><br />along with any command line arguments to the application.<br /><br />Need to change the number of images launched or the arguments to mpiexec?  Simply change the CAF config file settings in the text file.  Remember, the -coarray-config-file=  options used at compile time set the name an location for this text file.  You should use a name and location you can remember for this file, such as -coarray-config-file=~/cafconfig.txt<br />Then just add mpiexec options to ~/cafconfig.txt, for example<br /> -perhost 2 -envall -n 64 ./a.out<br /><br />Note:  environment variable FORT_COARRAY_NUM_IMAGES has not effect on distributed memory CAF applications.  This environment variable is only honored by a shared memory CAF image.  Only the -n option in the CAF config file is used to control the number of CAF images for a distributed memory CAF application.<br /><br />Again, read the mpiexec documentation in the Intel MPI documentation set.<br /><br />3) <b>Cleanup/shutdown</b>:  run command 'mpdallexit' to kill the cluster runtime daemons.  This is the opposite of the 'mpdboot' command.<br /><br /><span ><b>Known Issues or Limitations : </b></span><br /><b></b><br />Many clusters have multiple MPI implementations installed along with Intel MPI.  The PATH variable, LD_LIBRARY_PATH MUST have Intel MPI paths BEFORE any other MPI installed on your system.  Make sure to ONLY source the mpivars.sh script to set this correctly OR insure that the correct Intel MPI paths appear before other MPI paths.<br /><br />Batch system notes:  In the above notes, we added the option '-envall' to the CAF config file.  This is an attempt to get your current working environment variables to be inherited by your spawned remote CAF processes.  This was done to help insure that your PATH and LD_LIBRARY_PATH contain the paths to Intel MPI and Intel Fortran AND those paths appear before other MPI and compilers on your system.  HOWEVER, some batch scheduling systems will not allow environment inheritence: in other words they will throw out your current environment variables and use defaults for these.  That is why we suggested adding the 'source &lt;path to intel MPI&gt;/[ia32 | intel64]/bin/mpivars.sh' to your .bashrc, .cshrc, or .bash_profile.  These dot files are invoked by each child process created, and hence, SHOULD set the PATH and LD_LIBRARY_PATH appropriately.   When in doubt, execute 'which mpiexec' interactively, or put 'echo `which mpiexec`' in your batch script to insure the Intel MPI mpiexec is being used.  Other MPI implementation 'mpiexec' commands cannot be used and will cause errors.<br /><br />It is critical to insure that you can execute an Intel MPI application PRIOR to attempting to run an Intel CAF program.  Keep a simple MPI 'hello world' handy to debug your environment.  Here is a sample:<br /><br />
<pre name="code" class="plain">program hello_mpi
implicit none
include 'mpif.h'
integer :: size, rank, ierr, len
integer :: status
character*(MPI_MAX_PROCESSOR_NAME) name

call mpi_init(ierr)
call mpi_comm_size(MPI_COMM_WORLD, size, ierr)
call mpi_comm_rank(MPI_COMM_WORLD, rank, ierr)
call MPI_GET_PROCESSOR_NAME(name, len, ierr)

write(6, "(*(a,i3))") " MPI: size = ", size, " rank = ", rank
write(6, * ) "host is ", trim(name)

call mpi_finalize(ierr)

end program hello_mpi</pre>
<br />Compile with:   mpiifort -o hello_mpi hello_mpi.f90<br />run with:   mpdboot --rsh=ssh --file=~/mpd.hosts -n 2 ; mpiexec -n 4 ./hello_mpi ; mpdallexit<br /><br />and different number of processes for the -n argument.  Make sure you can run across all the nodes you believe are in your cluster or your batch allocation.<br /><br />READ: the Intel MPI Release Notes and the Getting_Started.pdf documents that come with Intel MPI in the &lt;installdir&gt;/doc/ directory.<br /><br /><br /><span ><b>GETTING HELP</b></span><br /><br />Our User Forums are great places to see current issues and to post questions:<br /><br /><a href="http://software.intel.com/en-us/forums/intel-clusters-and-hpc-technology/">Intel MPI User Forum</a><br /><a href="http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/">Intel Fortran User Forum</a><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/distributed-memory-coarray-fortran-with-the-intel-fortran-compiler-for-linux-essential-guide/</link>
      <pubDate>Fri, 01 Apr 2011 23:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/distributed-memory-coarray-fortran-with-the-intel-fortran-compiler-for-linux-essential-guide/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/distributed-memory-coarray-fortran-with-the-intel-fortran-compiler-for-linux-essential-guide/</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Description of PARDISO errors and messages</title>
      <description><![CDATA[ <p class="MsoNormal"><span lang="EN-US" >See the table below for the description of the error indicator.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<table cellpadding="0" cellspacing="0" border="1" class="MsoTableGrid" >
<tbody>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><b><i><span lang="EN-US" >Error </span></i></b><i><span lang="EN-US" >( Integer)</span></i><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><b><span lang="EN-US" >Information</span></b><span lang="EN-US" ><o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >0</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >no error</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-1</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >input inconsistency<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-2</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >not enough memory<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-3</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >reordering problem<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-4<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >zero pivot, numerical factorization or<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >iterative refinement problem</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-5</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >unclassified (internal) error<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-6</span><span lang="EN-US" ><o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >preordering failed (matrix types 11, 13 only)<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-7<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >diagonal matrix is singular<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-8<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >32-bit integer overflow problem<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-9<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >not enough memory for OOC<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-10<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >problems with opening OOC temporary files<o:p></o:p></span></p>
</td>
</tr>
<tr >
<td width="111" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >-11<o:p></o:p></span></p>
</td>
<td width="527" valign="top" >
<p class="MsoNormal"><span lang="EN-US" >read/write problems with the OOC data file<o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >Below each error is described in details:<o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" ><o:p></o:p></span></b></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span>0: <span ></span></span></i></b><b ><i ><span lang="EN-US" >no error</span></i></b><b ><i ><span lang="EN-US" ><o:p></o:p></span></i></b></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><o:p></o:p></span></i></b></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span>-1: <span ></span></span></i></b><b ><i ><span lang="EN-US" >Input inconsistency</span></i></b></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<span >This error can appear in the following situations:</span><br />
<ul>
</ul>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<ul>
<li>
<div class="MsoListParagraphCxSpFirst"><span lang="EN-US" >Incorrect stage number for PARDISO was called.<o:p></o:p></span></div>
</li>
<li>
<div class="MsoListParagraphCxSpMiddle"><span lang="EN-US" >Incorrect PARDISO calling sequence, e.g. run stage &gt; 1 without initialization results in error reporting.<o:p></o:p></span></div>
</li>
<li><span lang="EN-US" >Incorrect number of matrices to be solved was set (PARDISO can be used for solving several matrices with the same sparsity structure at once, taking into account that their maximum number was defined previously. Setting the number of matrices to be solved outside the range of <b>1</b></span><b><samp><span lang="EN-US">≤</span></samp><span lang="EN-US" > … </span><samp><span lang="EN-US">≤</span></samp></b><span lang="EN-US" ><b>maxfct</b> results in error).</span></li>
<li>
<div class="MsoListParagraphCxSpLast"><span lang="EN-US" >PARDISO checks the parameters at each stage for consistency with the parameters at the previous stages. Every disagreement results in error reporting.<o:p></o:p></span></div>
</li>
</ul>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >-2: <span ></span></span></i></b><b ><i ><span lang="EN-US" >not enough memory</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned in the case of any problem with memory allocation inside PARDISO.<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span ><span lang="EN-US" >PARDISO messages:<o:p></o:p></span></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><span ></span><i >"*** Error in PARDISO memory allocation: [STRUCTURE NAME], size to allocate: %d bytes"<o:p></o:p></i></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"total memory wanted here: %d kbyte"<o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"symbolic (max): %d symbolic (permanent): %d"<o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"real(including 1 factor): %d"<o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><span >It describes the issue that arises on allocation of STRUCTURE_NAME inside PARDISO. A additional information about current memory usages is also printed.</span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >-3</span></i></b><b ><i ><span lang="EN-US" >: </span></i></b><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >reordering problem</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >Returned for any problem on a reordering stage (phase 11)<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span ><span lang="EN-US" >PARDISO messages:<o:p></o:p></span></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><span ></span><i >"*** error PARDISO: reordering, symbolic factorization"<o:p></o:p></i></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >-4: <span ></span></span></i></b><b ><i ><span lang="EN-US" >zero pivot, numerical factorization or iterative refinement problem</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >Let us start with a citation of the Intel MKL manual:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" >Using </span></i><i><span lang="EN-US" >phase </span></i><i ><span lang="EN-US" >=33 </span></i><i ><span lang="EN-US" >results in an error message (</span></i><b ><i><span lang="EN-US" >error </span></i></b><b ><i ><span lang="EN-US" >=4, should be -4 *</span></i></b><b ><i ><span lang="EN-US" > </span></i></b><i ><span lang="EN-US" >) <span ></span>if the stopping criteria for the Krylow-Subspace iteration cannot be reached. <o:p></o:p></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" >If </span></i><i><span lang="EN-US" >phase</span></i><i ><span lang="EN-US" >= 23</span></i><i ><span lang="EN-US" >, then the factors </span></i><i><span lang="EN-US" >L</span></i><i ><span lang="EN-US" >, </span></i><i><span lang="EN-US" >U </span></i><i ><span lang="EN-US" >are recomputed for the matrix </span></i><i><span lang="EN-US" >A </span></i><i ><span lang="EN-US" >and the error flag </span></i><b ><i><span lang="EN-US" >error</span></i></b><b ><i ><span lang="EN-US" >=0 </span></i></b><i ><span lang="EN-US" >in case of a successful factorization. If </span></i><i><span lang="EN-US" >phase </span></i><i ><span lang="EN-US" >=33</span></i><i ><span lang="EN-US" >, then </span></i><b ><i><span lang="EN-US" >error </span></i></b><b ><i ><span lang="EN-US" >= -4</span></i></b><i ><span lang="EN-US" > </span></i><i ><span lang="EN-US" >signals the failure<o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >If the solver detects a zero or negative pivot for these matrix types, the factorization is stopped, PARDISO returns immediately with an error (</span></i><b ><i><span lang="EN-US" >error </span></i></b><b ><i ><span lang="EN-US" >= -4</span></i></b><i ><span lang="EN-US" >) and </span></i><i><span lang="EN-US" >iparm</span></i><i ><span lang="EN-US" >(30) </span></i><i ><span lang="EN-US" >contains the number of the equation where the first zero or negative pivot is detected.</span></i><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >The error returned in the case of any problem at the factorization stage (phase 22) or at the iterative refinement stage of solution. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span ><span lang="EN-US" >PARDISO messages:<o:p></o:p></span></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** Error in PARDISO: cgs error iparam(20) %d"</span></i><span lang="EN-US" > – prints iparm(20) – see CG / CGS diagnostics in the Intel MKL manual<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** error PARDISO: iterative refinement"<o:p></o:p></span></i></p>
<p class="MsoNormal"><span ><span lang="EN-US" ><i>" contraction rate is greater than 0.9, interrupt" – </i>rate of contraction is too small <i><o:p></o:p></i></span></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** error PARDISO: iterative refinement"<o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >" exceeds max. iteration number %d"<span > </span></span></i><span lang="EN-US" >- prints abs(iparm(8))<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** Error in PARDISO: internal error, insufficient memory factorization" – </span></i><span lang="EN-US" >looks like a problem at the factorization stage except for pivoting issues (see errors below)<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** Error in PARDISO: zero or negative pivot, A is not SPD-matrix" – </span></i><span lang="EN-US" >original matrix (almost) not SPD one (probably due to computer arithmetic inaccuracies)<o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"*** Error in PARDISO: zero pivot" – </span></i><span lang="EN-US" >the same as above but for other matrix types<i ><o:p></o:p></i></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span>-5</span></i></b><b ><i ><span lang="EN-US" >: </span></i></b><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >unclassified (internal) error</span></i></b><b ><i ><span lang="EN-US" ><o:p></o:p></span></i></b></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is not used currently and is reserved for the future use.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >-6: <span ></span></span></i></b><b ><i ><span lang="EN-US" >preordering failed (matrix types 11, 13 only)</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned in the case of any problem at the stage of preparation for reordering (in matching algorithm).<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span ><span lang="EN-US" >PARDISO messages:<o:p></o:p></span></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><span ></span><i >"*** Error in PARDISO: preordering failed after %d neqns out of %d"<o:p></o:p></i></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" >"structure singular or input/parameter problem (matrix type 11,13)"<o:p></o:p></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >Looks like the message provides no meaningful information.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span>-7: <span ></span></span></i></b><b ><i ><span lang="EN-US" >diagonal matrix problem</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >PARDISO prints no messages. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" ><span ></span></span></i></b><b ><i ><span lang="EN-US" >-8: <span ></span></span></i></b><b ><i ><span lang="EN-US" >32-bit integer overflow problem</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned on 32-bit architecture for big matrices when indices become greater than the maximal integer value on this platform. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span ><span lang="EN-US" >PARDISO messages:<o:p></o:p></span></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><span ></span><i >"*** error PARDISO: reordering, symbolic factorization"</i><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" >-9: </span></i></b><b ><i ><span lang="EN-US" >not enough memory for OOC</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >Let us start with a citation of the Intel MKL manual:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i ><span lang="EN-US" >Note that if </span></i><i><span lang="EN-US" >iparm</span></i><i ><span lang="EN-US" >(60) </span></i><i ><span lang="EN-US" >is equal to 1 or 2, and the total peak memory needed for strong local arrays is more than </span></i><i ><span lang="EN-US" >MKL_PARDISO_OOC_MAX_CORE_SIZE</span></i><i ><span lang="EN-US" >, the program stops with <b >error -9</b>. In this case, increase of </span></i><i ><span lang="EN-US" >MKL_PARDISO_OOC_MAX_CORE_SIZE </span></i><i ><span lang="EN-US" >is recommended.</span></i><i ><span lang="EN-US" ><o:p></o:p></span></i></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned when amount of memory available for PARDISO (defined by MKL_PARDISO_OOC_MAX_CORE_SIZE, by default 2000 Mb) is not enough to solve the current matrix. The issue can be resolved by increasing the value for available memory.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" >-10: </span></i></b><b ><i ><span lang="EN-US" >problems with opening OOC temporary files</span></i></b><span lang="EN-US" > <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned when PARDISO can’t create / open temporary files for storing OOC arrays, e.g. in the case of wrong permissions or when files were removed or blocked or not released after the previous steps.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><b ><i ><span lang="EN-US" >-11: </span></i></b><b ><i ><span lang="EN-US" >read/write problems with the OOC data file</span></i></b><b ><i ><span lang="EN-US" ><o:p></o:p></span></i></b></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" >This error value is returned when some problems appear in the process of working with files, e.g. in the case of no space left on device or problems with read / write operations because of algorithm issues. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i><span lang="EN-US" >* - the documentation error. Will be fixed in the version 10.3 Update3.</span></i><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><i><span lang="EN-US" >** - available memory means the RAM system's memory which is available at the moment of starting the calculations</span></i><i><span lang="EN-US" >.</span></i><span lang="EN-US" ><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" ><o:p></o:p></span></p> ]]></description>
      <link>http://software.intel.com/en-us/articles/description-of-pardiso-errors-and-messages/</link>
      <pubDate>Fri, 14 Jan 2011 11:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/description-of-pardiso-errors-and-messages/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/description-of-pardiso-errors-and-messages/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
    </item>
    <item>
      <title>How to prevent source code full path location information from being visible in an executable</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b>When using the -openmp  or -parallel compiler options under linux* or Mac OS* X, or the /Qopenmp or /Qparallel options under Windows, the resulting executable files contain the full pathnames to the source files for each source file containing an OpenMP or Parallel region.   This was done to allow Intel profiling and correctness checking tools to be able to find and display source information in the analysis tools.<br /><br /><br /><b>Environment : </b>Windows*, Linux*, Mac OS* X, all compilers since 9.1 versions<br /><br /><b>Root Cause : </b><br />The Intel compilers by default included source file full path information so that Intel analysis tools could find source files during analysis for correctness or performance.<br /><br /><b>Resolution : </b><br />With the release of Intel Composer XE ( aka version 12.0 ) an option was included to allow removing this source path information from the executable header information:<br /><br />Linux and Mac OS X:   -no-parallel-source-info  compiler option should be used<br />Windows:     /Qparallel-source-info-   compiler option should be used<br /><br />These options are only available in the 12.0 aka Composer XE compiler products.  If you are using an older version, please upgrade to 12.0.<br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-prevent-source-code-full-path-location-information-from-being-visible-in-an-executable/</link>
      <pubDate>Thu, 16 Dec 2010 20:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-prevent-source-code-full-path-location-information-from-being-visible-in-an-executable/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-prevent-source-code-full-path-location-information-from-being-visible-in-an-executable/</guid>
      <category>Intel® Parallel Composer</category>
      <category>Intel® Cluster Toolkit Compiler</category>
      <category>Intel® Compilers</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</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® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Parallel Composer 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>What&amp;#39;s New with Intel® Fortran Composer XE 2011 Technical Presentation Questions and Answers</title>
      <description><![CDATA[ <p>Here are the questions and answers from the What's New with Intel® Fortran Composer XE 2011 webinar held December 14, 2010.</p>
<table border="0" width="690">
<tbody>
<tr>
<td  width="230">
<p><a href="http://software.intel.com/file/32861"><img alt="Click to download video" height="113" width="200" src="http://software.intel.com/sites/products/graphics/webinars/click-to-download.jpg" /></a></p>
</td>
<td  width="230">
<p><a href="http://software.intel.com/sites/products/graphics/webinars/FortranWebinar20101214.pdf"><img alt="View Presentation" height="113" width="200" src="http://software.intel.com/sites/products/graphics/webinars/View-Presentation.jpg" /></a></p>
</td>
<td  width="230">
<p><a href="http://software.intel.com/en-us/articles/intel-software-development-products-technical-presentations/"><img alt="Upcoming Presentations" height="113" width="200" src="http://software.intel.com/sites/products/graphics/webinars/upcoming-presentations.jpg" /></a></p>
</td>
</tr>
</tbody>
</table>
<p><!--   <br /><br />The recording of the presentation is available <a href="http://software.intel.com/file/32861" mce_href="http://software.intel.com/file/32861">here</a>.<br /><br />The presentation slides are available at the end of this article.<br /><br />For information on upcoming presentations go <a href="http://software.intel.com/en-us/articles/intel-software-development-products-technical-presentations/" mce_href="http://software.intel.com/en-us/articles/intel-software-development-products-technical-presentations/">here</a>.--></p>
<p><strong>Question and Answers:</strong><br /><br /> Q: If I install Intel® Fortran Composer XE, will my old version still be there?<br /><br />A: If by old version you mean 11.1, etc., then yes. The Visual Studio integration for Intel® Visual Fortran Composer XE 2011 gives you access to versions 11.0 and 11.1 through Tools &gt; Options &gt; Intel Visual Fortran &gt; Compilers. Note that there are separate entries for 32-bit and 64-bit development.<br /><br />On Linux* and Mac OS X*, the new installation will default to /opt/intel. Under this directory you will see your older 11.x compilers under the Compiler/11.1/xxx/ directories. The new Intel® Composer XE will have physical directory /opt/intel/composerxe-2011.12.1.122 (or similar): deciphering "12.1.122" is major version 12, Update 1, minor version 122. Along with this directory, you will see the new generic directory link "composerxe/" which links this generic path to the last version of the compiler installed on the system. These generic paths allow one to 'source /opt/intel/composerxe/bin/compilervars.sh intel64' and be assured that this path will exist and will link to the latest version compiler installed on the system. This provides a version-independent, default path to compilervars.sh for those who don't want to rewrite their makefiles or shell startup files for each new version installed on the system.<br /><br /><br /><br />Q: I have been using Fortran for scientific applications since the 1980s, but am not a professional programmer. What is the most efficient way to learn how to properly use new features?<br />Q: Do you provide some level of guidance to write a parallel processing program?<br />Q: Is there a refresher course available to bring me up to speed from earlier versions of Fortran to the latest version?<br /><br />A: Intel does not offer training on the Fortran language. There are several good books on the language which are more tutorial in nature. A list of books we have seen can be found in the compiler documentation under Introduction &gt; Related Information<br /><br /><br /><br />Q: Would it be possible to change the default N of images (Coarray Fortran) to 1, instead of the number of available threads?<br /><br />A: Yes. This can be specified as an option (-coarray-num-images=1 on linux or /Qcoarray-num-images:1 for Windows) when compiling the main program or, before the program is run, by setting the environment variable FOR_COARRAY_NUM_IMAGES to be the number of images you want. This can be more or fewer than the number of available threads.<br /><br /><br /><br />Q: Will there be extensions to Intel Fortran to permit programming GPUs using Fortran?<br /><br />A: Intel will be extending its Fortran and C++ compilers to encompass Intel's future "Many Integrated Core" products. We do not have plans at this time to support GPUs from other vendors.<br /><br /><br /><br />Q: What is the relationship between OpenMP and Coarrays?<br />Q: How did you implement coarrays? Does it use OpenMP?<br /><br />A: We use Intel® MPI Library as the underlying support for coarrays, both for shared memory and distributed memory configurations. Intel MPI Library is a highly optimized implementation of MPI that supports a wide variety of interconnect types.<br /><br />At present, we do not support the use of other parallel methods such as OpenMP or direct MPI calls in an application that uses coarrays. We recognize that customers may want to use multiple technologies and will be testing this in the future. You are welcome to try it yourself, but we don't promise it will work.<br /><br /><br /><br />Q: Is it possible to have Intel Visual Fortran in Windows without Microsoft Visual Studio*?<br /><br />A: Intel Visual Fortran relies on tools and libraries that come from Microsoft* Visual Studio*. If a system does not have a supported version of Visual Studio installed (2005, 2008 or 2010), we will install an environment based on Visual Studio 2008 Shell which supports Fortran development. You do not need to use the Visual Studio graphical development environment – you can still use the command line to build applications – but the only debugging environment supported is Visual Studio's.<br /><br /><br /><br />Q: Is this compatible with the Intel® Cluster Studio XE?<br /><br />A: Intel Cluster Studio XE 2011 includes Intel [Visual] Fortran Composer XE with full capabilities, including support for distributed memory coarrays.<br /><br /><br /><br />Q: Can we expect improvements to the debugging experience when moving to VS2010 and Intel Visual Fortran Composer XE?<br /><br />A: The debugging experience is improved continually, and we have resolved some known issues in Intel Visual Fortran Composer XE. A move to Visual Studio 2010, on its own, has no specific benefits here.<br /><br /><br /><br />Q: Does Intel® Parallel Studio support Intel Visual Fortran?<br /><br />A: Intel Parallel Studio is a C++ product, and its analysis tools do not support Fortran. Intel Parallel Studio XE includes both Intel C++ and Intel Fortran, as well as analysis tools that support both languages.<br /><br /><br /><br />Q: I have found polymorphic entities are not very useful w/o sourced allocation. Any idea when it might come out.?<br /><br />A: We can't say at this time when this feature will be added, but we are working on it.<br /><br /><br /><br />Q: Is there any possibility of getting the documentation in pdf files?<br />A: Not at this time.<br /><br /><br /><br />Q: Is Intel Visual Fortran compatible with Visual Studio 2005*?<br />A: Yes.<br /><br /><br /><br />Q: Who besides Intel is involved in developing the Fortran standards?<br /><br />A: You can view the membership of the US Fortran Standards committee at <a href="http://www.j3-fortran.org/">http://www.j3-fortran.org/</a>. Vendors who are members of this committee are Cray, IBM, Intel and Oracle (Sun). A representative from NAG is a committee member, but not formally representing NAG. A member of the gfortran development team regularly attends meetings as well.<br /><br /><br /><br />Q: Are there any plans to support Intellisense features in Fortran Composer XE?<br /><br />A: We have had requests for some Intellisense features. It would help us if you would let us know, either in the user forum or an Intel® Premier Support issue, which specific features you are interested in.<br /><br /><br /><br />Q: Are there any specific performance reasons for upgrading from 11.1 to the new version (Performance improvements - speed up execution that is)?<br />Q: Has performance been improved with v12 (assuming the same options are used)?<br /><br />A: Yes, the version 12 compiler (Intel Fortran Composer XE) has numerous optimization improvements, even using the same options. Of course, your specific results may vary. As an example, loops with expressions with mixed data types (single and double precision, for example) are candidates for vectorization in version 12.<br /><br /><br /><br />Q: How long is the Fortran standard going to be extended? Will there be an end to further standards? What is the long term strategy?<br /><br />A: The Fortran standards committee is currently working on interpretations to the newly-approved Fortran 2008 standard. A revision, currently referred to as Fortran 2013, is being planned, but it is unclear what the scope of that will be. A majority of the committee wants it to be a minor update along the lines of Fortran 95.<br /><br /><br /><br />Q: What are the plans for the editor enhancements? This has been asked a lot of times on the forum.<br />Q: Any plans for enhancements in Visual Studio (e.g., type viewer, module viewer), important for large projects<br />Q: Will there be regions so that we can hide program units that are not being developed?<br /><br />A: We are working on enhancements to the Visual Studio environment, but can't comment on specifics.<br /><br /><br /><br />Q: Does the new Intel Fortran Compiler support ubuntu 10.04?<br />A: Yes.<br /><br /><br /><br />Q: Are there any plans for supporting the simple idb -gui debugging tool on OSX. Xcode is nice, but it requires a bit of investment in time to use.<br /><br />A: We don't currently have plans for extending the idb debugger with a GUI interface at this time. There is a workaround to use the graphfical DDD front-end with Intel® Debugger. This workaround is documented in this forum post: <a href="http://software.intel.com/en-us/forums/showthread.php?t=60060">http://software.intel.com/en-us/forums/showthread.php?t=60060</a>.<br /><br /><br /><br />Q: When will the IMSL libraries be included<br />A: Expect to see these available in late January or perhaps early February.<br /><br /><br /><br />Q: When will defined type IO be added. I currently use namelists of temporary defined types.<br />A: We can't comment on a timeframe for this, but it will be there eventually.<br /><br /><br /><br />Q: What about coarrays for Mac OS X*?<br />A: We have no plans for that at this time.<br /><br /><br /><br />Q: Are there plans to revive Array Visualizer?<br />A: This is still being considered.<br /><br /><br /><br />Q: How many multithreading methodologies does Intel Fortran Composer XE have? and What are they?<br />A: In the product itself, the compiler supports:<br />• Automatic parallelization (/Qparallel or –parallel), along with Guided Auto Parallelization to help tune the application for parallelism.<br />• OpenMP<br /> • Coarrays<br />• DO CONCURRENT regions along with –parallel compiler option<br />Using external libraries, you can also use MPI or the operating system's threading calls.<br /><br /><br /><br />Q: Any support for the old source browser option?<br />A: Work is being done in this area, but we can't comment further at this time.<br /><br /><br /><br />Q: What is the difference between /fp:precise switch and the new improved switch? <br /><br />A: As explained in the presentation, the /fp (-fp-model) switch is very different from the new option to select among alternate math libraries. The new options allow you to choose a variant of the math library that is faster but less precise, or one that delivers the same results on all processor types. The fp-model can affect how expressions are evaluated, and can disable/enable certain optimizations. The new libraries merely replace the default libimf library which contains intrinsics such as exp, sin, cos, etc. So these new libraries should be considered for use along with the –fp-model settings. For example, for very strict numeric results that you'd like to replicate on multiple cpu architectures: -fp-model exact –fimf-arch-consistency=true could be used together to insure the best possible results and consistency across many cpu generations. See the –fimf-* options. This could be a topic we revisit in a separate dedicated webinar next year.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/whats-new-with-intel-fortran-composer-xe-2011/</link>
      <pubDate>Tue, 14 Dec 2010 00:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/whats-new-with-intel-fortran-composer-xe-2011/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/whats-new-with-intel-fortran-composer-xe-2011/</guid>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Mac OS X* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
  </channel></rss>
