<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sun, 12 Feb 2012 05:27:19 -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/compatibility/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/compatibility/</link>
    <description></description>
    <language>en-us</language>
    <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>Don&amp;#39;t use the OpenMP THREADPRIVATE &amp;#39;compatibility&amp;#39; option when everything is compiled by Intel</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><strong>Introduction :</strong> The Intel C++ and Fortran compilers for Windows* and Linux* provide 'legacy' and 'compatibility' implementations of the OpenMP THREADPRIVATE directive (-Qopenmp-threadprivate:[compat | legacy], -openmp-threadprivate [compat | legacy]).  The 'compat' option should not be used when everything is compiled by Intel compilers. Doing some may result in application crashes or incorrect results. In this case, the 'legacy' option (which is the default) should be used.  The 'compat' option should only be used when some of the objects in an application have been compiled by a compatible Microsoft* or GNU* compiler.<br /><br /><strong>Version :</strong> 11.x, 12.x<br /><br /><br /><strong>Application Notes :</strong> -Qopenmp-threadprivate:legacy (-openmp-threadprivate legacy) is the default when -Qopenmp (-openmp) is specified.  This setting does not provide compatibility with the THREADPRIVATE implementation used by other compilers. -Qopenmp-threadprivate:compat (-openmp-threadprivate compat) can be used when some of the objects in an application have been compiled by a compatible Microsoft* or GNU* compiler.  This setting provides compatibility with the implementation provided by the Microsoft* and GNU* compilers.<br /><br /><br /><strong>Building the Application :</strong> -Qopenmp (-openmp) must be given when using -Qopenmp-threadprivate (-openmp-threadprivate), or the compiler will not recognize the OpenMP THREADPRIVATE directive (warning #161: unrecognized #pragma).<br /><br /><br /><strong>Known Issues or Limitations : </strong>On Mac OS* X systems, 'legacy' is the only type of THREADPRIVATE implementation supported. Option '-openmp-threadprivate' is not recognized by the compiler.<br /><br /><br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/dont-use-the-openmp-threadprivate-compatibility-option-when-everything-is-compiled-by-intel/</link>
      <pubDate>Mon, 22 Aug 2011 23:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/dont-use-the-openmp-threadprivate-compatibility-option-when-everything-is-compiled-by-intel/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/dont-use-the-openmp-threadprivate-compatibility-option-when-everything-is-compiled-by-intel/</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® Visual Fortran Compiler for Windows* 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>Error:  ld: cannot find -lm</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b>compiling with -fast or -static causes a linker error "ld: cannot find -lm"<br /><br /><br /><b>Environment : Redhat Enterprise Linux 6, Fedora Core 11, 12, 13, other linux distros possible</b><br /><br /><br /><b>Root Cause :  RHEL 6, FC12 and 13 do not ship with static versions of glibc.  Thus, there is no static version of libm to link by default</b>.  (the linux community is trying to discourage static linking and move the community to a dynamic linking model.  Thus, recent linux distros are not shipping/installing glibc-static by default.)<br /><br /><br /><b>Resolution : </b><br /><br />If you want to link statically, that is with -static or -fast (which  contains -static), you will need the static versions of glibc.  Keep in  mind that static linking is being discouraged by the larger linux  community.  You may, of course, use -static-intel to statically link the  Intel libraries.  However, if you want to also statically link the  system libraries in glibc you will need the static versions of glibc.<br /><br />Install the static version of glibc.  Research your distribution for the appropriate package to install.  For example, for RHEL 6 and FC12 and FC13:<br /><br />x86_64:<br />yum install glibc-static.x86_64<br /><br />IA32:<br />yum install glibc-static.i686<br /><br />(you may have to research and find a 32bit version of glibc-static.  Use rpmfind or some other web search to find  an appropriate 32bit version of glibc-static that matches the 64bit  version you installed above with yum).<br /><br />Another work-around: avoid static linking - don't use the -static or -fast compiler options.<br /><br /><br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/error-ld-cannot-find-lm/</link>
      <pubDate>Sun, 28 Nov 2010 20:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/error-ld-cannot-find-lm/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/error-ld-cannot-find-lm/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>Using Intel Compilers for Linux Under Redhat Enterprise Linux or CentOS</title>
      <description><![CDATA[ <p><b>Using Intel Composer XE 2011 (Compiler XE 12.0) and Compiler Pro 11.1 for Linux with RHEL 6<br /></b></p>
<p><b><span > </span></b></p>
<h2 ><b><span >Navigation:</span></b></h2>
<b>
<h2 ><span ><span >Linux and Mac OS X Compilers Installation Help Center: <a  href="http://software.intel.com/en-us/articles/intel-compilers-linux-installation-help/">http://software.intel.com/en-us/articles/intel-compilers-linux-installation-help/</a></span></span></h2>
</b>
<p> </p>
<p><b>Introduction:</b></p>
<p>Please see your ReleaseNotes document with your compiler to find the supported Linux distributions and versions.  These instructions are merely to help install the compiler, keep in mind that versions of this distribution NOT in the ReleaseNotes document are NOT tested nor supported.  You are on your own here.</p>
<p>Using Intel® Compilers under RHEL 6 by Ron W. Green.  For older RHEL distributions, skip below to information on those older distros.</p>
<p>In order to use Intel(R) Compilers (C++  or  Fortran) under RHEL 6, you will need the latest 12.0 version or 11.1 version of the Intel compiler(s) in products named "Intel Composer XE 2011", "Intel Parallel Studio XE 2011", "Intel C++ Studio XE 2011", or "Intel Compiler Professional version 11.1".   Do NOT try to install older Intel Compilers such as 11.0, 10.x, 9.x or 8.x under RHEL 6: they will not install easily and probably will not work - and they are NOT supported.  If you need an older Intel Compiler version, please read their ReleaseNotes and obtain an older, supported RHEL distribution.</p>
<p>Also, determine your needs and get the right installation tarball.  Most  linux users are on 64bit systems with x86_64 versions of linux  installed.  Do you need to create older 32bit applications?  If not,  download the Intel 64 ONLY tarball, the *_intel64.tgz file.  Not only  does this save download time, this will eliminate your need to install  32bit libraries on the development system.  If you have active support for your compiler, you can download the latest Intel compiler version from the Intel Registration Center at:</p>
<p><a href="https://registrationcenter.intel.com/">https://registrationcenter.intel.com</a></p>
<p>BEFORE YOU INSTALL the Intel(R) Compiler for Linux on your RHEL 6 installation you will need to disable SELinux OR set SELinux to "Permissive".  As root, edit /etc/sysconfig/selinux and either disable SELinux or set it "Permissive" - then reboot.</p>
<p>Hopefully, during the installation of the OS you selected a profile for a "Software Development" configuration.  This installs the proper gcc/g++/binutils and other necessary development packages.  If not, set it up as a development platform.  You will first need to install several packages that are prerequisites to preparing the system to serve as a development platform:<br /><br />1. Check that GNU gcc and g++ are installed on the system. By default you can simply check by executing the <br />command:<br /><br />gcc --version<br /><br />If for some reason, you do not have gcc installed, then go ahead <br />and install gcc and g++ on your system. You can use the software package manager “yum” to do the install. Refer <br />to http://fedoraproject.org/wiki/Tools/yum to learn more on yum.</p>
<p>As root user, in a terminal window:<br />yum install gcc<br />yum install gcc-c++</p>
<p>If you want to link statically, that is with -static or -fast (which contains -static), you will need the static versions of glibc.  Keep in mind that static linking is being discouraged by the larger linux community.  You may, of course, use -static-intel to statically link the Intel libraries.  However, if you want to also statically link the system libraries in glibc you will need the static versions of glibc.<br /><br />x86_64:<br />yum install glibc-static.x86_64<br /><br />IA32 (only if you want to install the 32bit compiler):<br />yum install glibc-static.i686<br /><br />(if yum cannot find the static 32bit versions of glibc-static you will need to find an rpm source.  Use rpmfind or some other web search to find an appropriate 32bit version of glibc-static that matches the 64bit version you installed above with yum).<br /><br />4. Finally, there is an optional package to consider: The 11.x version of the Intel Compiler for Linux has a graphical <br />debugger, a new graphical interface for the IDB debugger. If you want to use this debugger, please make sure to <br />install the JAVA JRE version 1.5 or higher. <br /><br />check that java JRE is installed:<br />java -version<br />or<br />java --version<br /><br />(note: compilers older than 11.1.064 had issues finding installed java JREs.  Please upgrade to new compiler OR ignore the 'missing java' prerequisite check)<br /><br />If java is missing, you may get the latest JRE from:<br /><br /><a href="http://java.com/en/download/manual.jsp">http://java.com/en/download/manual.jsp</a></p>
<p><b><br /></b></p>
<p><b>For Intel Compiler Professional Edition v11.1 ONLY:</b></p>
<p>In addition to the above, if you have an older v11.1 version of the Intel Compilers for Linux, you need to do the following:</p>
<p>You will need to ensure that the 32-bit version of the standard C++ library, libstdc++.so.5 (typically found <br />in /usr/lib/ directory) is installed on the system. The Intel® C++ and Fortran compilers for Linux installation require <br />the linkage to the 32-bit version of libstdc++.so.5 library on all Linux distributions. Failure to do so will result in <br />installation failure on library dependencies not met. For more details, refer to the article at:</p>
<a href="http://software.intel.com../../articles/performance-tools-for-software-developers-intel-compiler-10x-installation-failure-libstdc-failed-dependencies/">http://software.intel.com/en-us/articles/performance-tools-for-software-developers-intel-compiler-10x-installation-failure-libstdc-failed-dependencies/</a><br /><br />as root user, in a terminal window, install the compatibilty library libstdc++.so.5 for 32bit AND the 32bit glibc-devel libraries<br />yum install compat-libstdc++-33.i686      (note: name in older RHEL, compat-libstdc++-33.i586)<br />yum install glibc-devel.i686                     (note: name in older RHEL, glibc-devel.i586)<br /><br />if you have a 64bit x86_64 RHEL system, you also need to install the 64 bit version of compat-libstdc++ <br />yum install compat-libstdc++-33.x86_64<br /><br />Once installation of above prerequisites is complete, you are ready to start the Intel compiler(s) installation!<br /><br />
<p>If you have problem even after following this guide, DO NOT leave comments - instead, go to our User Forum and submit a problem report:  For Fortran, <a href="http://software.intel.com../../forums/intel-fortran-compiler-for-linux-and-mac-os-x/">http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/</a> and for C++, <a href="http://software.intel.com/en-us/forums/intel-c-compiler/">http://software.intel.com/en-us/forums/intel-c-compiler/</a> .</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-under-redhat-enterprise-linux/</link>
      <pubDate>Thu, 25 Nov 2010 23:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-under-redhat-enterprise-linux/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-intel-compilers-for-linux-under-redhat-enterprise-linux/</guid>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® Fortran Compiler for Linux* Knowledge Base</category>
    </item>
    <item>
      <title>C interface Support for LAPACK</title>
      <description><![CDATA[ <p >Intel® MKL 10.3, we have extended C support and added C language interface to LAPACK rotuines.<br /><br />Please refer the <a href="http://origin-software.intel.com/file/28874" title="C interface to LAPACK">C interface to LAPACK </a>technical paper for more details.</p>
<p>Please follow the <a href="http://software.intel.com/sites/products/documentation/hpc/mkl/lapack/mkl_lapack_examples/index.htm">link</a>, you can find the online documentations and C LAPACK examples.</p>
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/c-interface-for-lapack/</link>
      <pubDate>Sat, 06 Nov 2010 11:30:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/c-interface-for-lapack/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/c-interface-for-lapack/</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>Intel Fortran Composer XE 2011 Release Notes</title>
      <description><![CDATA[ <p>This page provides the current Installation Guide and Release Notes for the Intel® Fortran Composer XE 2011 products. All files are in PDF format - <a target="_blank" href="http://www.adobe.com/go/EN_US-H-GET-READER">Adobe Reader* </a>(or compatible) required.</p>
<p>For version 11.1, please see <a href="http://software.intel.com/en-us/articles/intel-fortran-compiler-111-release-notes/">Intel Fortran Compiler 11.1 Release Notes</a></p>
<p>To get product updates, log in to the <a target="_blank" href="https://registrationcenter.intel.com/">Intel® Software Development Products Registration Center</a>.</p>
<p>For questions or technical support, visit <a target="_blank" href="http://software.intel.com/sites/support/">Intel® Software Developer Support</a></p>
<hr />
<p><b><br /></b></p>
<p><b>Update 8 - December 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/40410">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/40411">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/40409">English</a></li>
</ul>
<p><b>Update 7 - October 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/39195">English</a></li>
<li><a href="http://software.intel.com/file/39196">Japanese</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/39194">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/39192">English</a></li>
<li><a href="http://software.intel.com/file/39193">Japanese</a></li>
</ul>
<p><b>Update 6 - September 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/38270">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/38271">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/38272">English</a></li>
</ul>
<p><b>Update 5 - July 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/37910">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/37911">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/37912">English</a></li>
</ul>
<p><b>Update 4 - May 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/36129">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/36130">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/36131">English</a></li>
</ul>
<p><b>Update 3 - March 2011<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/35033">English</a></li>
<li><a href="http://software.intel.com/file/35034">Japanese</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/35035">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/35036">English</a></li>
<li><a href="http://software.intel.com/file/35037">Japanese</a></li>
</ul>
<p><b>Update 2 - January 2011<br /></b>Intel ® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/33834">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/33835">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/33836">English</a></li>
</ul>
<p><b>Update 1 - December 2010<br /></b>Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/32672">English</a></li>
<li><a href="http://software.intel.com/file/32673">Japanese</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/32674">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/32675">English</a></li>
<li><a href="http://software.intel.com/file/32676">Japanese</a></li>
</ul>
<p><b>Initial Product Release - November 2010</b><br />Intel® Fortran Composer XE 2011 for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/32098">English</a></li>
</ul>
<p>Intel® Fortran Composer XE 2011 for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/31390">English</a></li>
</ul>
<p>Intel® Visual Fortran Composer XE 2011 for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/31391">English</a></li>
</ul> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-fortran-composer-xe-2011-release-notes/</link>
      <pubDate>Thu, 28 Oct 2010 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-fortran-composer-xe-2011-release-notes/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-fortran-composer-xe-2011-release-notes/</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>
    <item>
      <title>Summary of API differences between Intel® MKL PARDISO and University of Basel PARDISO* 4.0.0</title>
      <description><![CDATA[ <p><b>Introduction</b></p>
<p>The release of PARDISO 4.0.0 from the University of Basel is not backward compatible and thus introduces some incompatibilities with the implementation of PARDISO that is available with the Intel® Math Kernel Library. This article outlines those places where the two interfaces have diverged.</p>
PARDISO 4.0.0 introduces the additional routine <i>pardisoinit</i><i> </i>which is to be called before the <i>pardiso</i><i> </i>routine. Intel® MKL PARDISO does not have such a routine. <br /><br />In version 10.2 Update 6, Intel® MKL PARDISO introduces an additional interface function: <i>pardiso_64</i>. This interface is identical to that of <i>pardiso</i> except that it accepts and returns all integer data in the INTEGER*8 type. This new interface is supported only in the 64-bit Intel MKL libraries. PARDISO will return an error code (-12) if a program calling <i>pardiso_64</i> is linked to the 32-bit libraries. <br /><br /><b>Routine arguments differences </b><br /><b></b><br />PARDISO* 4.0.0 has additional argument <i>dparm</i> array of type REAL and length 64 that is used for a multi-recursive iterative linear solver. Intel® MKL PARDISO has no support for this solver and no argument <i>dparm</i> in the API. The two tables below outline the differences in the arguments to the respective PARDISO functions and the differences in interpretation of the IPARM array. A full description of the arguments and IPARM array for Intel MKL can be found in the <a href="http://software.intel.com/en-us/articles/pardiso-parameter-table/">PARDISO Parameter Tables</a>. <br /><br /><b>PARDISO arguments compared</b> 
<table cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="159" valign="top"><br />Argument name</td>
<td width="160" valign="top"><br />Argument type</td>
<td width="160" valign="top"><br />PARDISO* 4.0.0</td>
<td width="160" valign="top"><br />Intel® MKL PARDISO</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>pt(64)</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />Content of array is different (for internal use only)</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>maxfct</i><i></i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>mnum</i><i></i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>mtype</i><i></i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>phase</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td width="160" valign="top"><br />Use iparm(26) to split forward/backward substitutions</td>
<td width="160" valign="top"><br />Stages 331-333 added to perform forward, diagonal, and backward substitution</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>n</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>a</i></td>
<td width="160" valign="top"><br />REAL/COMPLEX</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>ia</i><i>(n+1)</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td width="160" valign="top"><br /></td>
<td width="160" valign="top"><br />Supports 0-based indexing</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>ja</i><i>(*)</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td width="160" valign="top"><br /></td>
<td width="160" valign="top"><br />Supports 0-based indexing</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>perm(n)</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>nrhs</i><i></i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>iparm</i><i>(64)</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td colspan="2" width="319" valign="top"><br />Meaning of array entries is different (see the table below)</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>msglvl</i><i></i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td width="160" valign="top"><br /></td>
<td width="160" valign="top"><br />Cannot print multi-recursive iterative solver statistics (no such solver)</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>b(n,nrhs)</i></td>
<td width="160" valign="top"><br />REAL/COMPLEX</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>x(n,nrhs)</i></td>
<td width="160" valign="top"><br />REAL/COMPLEX</td>
<td colspan="2" width="319"><br />same</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>error</i></td>
<td width="160" valign="top"><br />INTEGER</td>
<td width="160" valign="top"><br />Error code -9 is not used <br />-10 means no license file found <br />-11 means license file expired <br />-12 means wrong username or hostname</td>
<td width="160" valign="top"><br />-9 means not enough memory for OOC <br />-10 means problems with OOC temp files <br />-11 means read/write problems with the OOC data file <br />Error codes -12, -100, -101, -102, -103 are not used</td>
</tr>
<tr>
<td width="159" valign="top"><br /><i>dparm</i><i>(64)</i></td>
<td width="160" valign="top"><br />REAL</td>
<td width="160" valign="top"><br /></td>
<td width="160" valign="top"><br />Not present in the argument list</td>
</tr>
</tbody>
</table>
<br /><br /><b>The IPARM arrays compared</b> 
<table cellpadding="0" cellspacing="0" border="1">
<tbody>
<tr>
<td width="54" valign="top"><br />Id</td>
<td colspan="2" width="293" valign="top"><br />PARDISO* 4.0.0</td>
<td width="291" valign="top"><br />Intel® MKL PARDISO</td>
</tr>
<tr>
<td width="54" valign="top"><br />2</td>
<td colspan="2" width="293" valign="top"><br />Minimum degree and nested dissection algorithm</td>
<td width="291" valign="top"><br />Minimum degree, nested dissection and parallel version of the nested dissection algorithm</td>
</tr>
<tr>
<td width="54" valign="top"><br />3</td>
<td colspan="2" width="293" valign="top"><br />Number of processors</td>
<td width="291" valign="top"><br />Not used (MKL_NUM_THREADS environment variable and functions are used instead)</td>
</tr>
<tr>
<td width="54" valign="top"><br />12</td>
<td colspan="2" width="293" valign="top"><br />Solving the system with transpose matrix</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />24</td>
<td colspan="2" width="293" valign="top"><br />Parallel numerical factorization</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />25</td>
<td colspan="2" width="293" valign="top"><br />Parallel forward/backward solve</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />26</td>
<td colspan="2" width="293" valign="top"><br />Splitting of forward/backward solve</td>
<td width="291" valign="top"><br />Not used (use argument phase instead)</td>
</tr>
<tr>
<td width="54" valign="top"><br />27</td>
<td width="292" valign="top"><br />Not used</td>
<td colspan="2" width="292" valign="top"><br />Matrix checker</td>
</tr>
<tr>
<td width="54" valign="top"><br />28</td>
<td colspan="2" width="293" valign="top"><br />Parallel reordering for METIS</td>
<td width="291" valign="top"><br />Single or double precision of PARDISO (for parallel reordering use iparm(2))</td>
</tr>
<tr>
<td width="54" valign="top"><br />29</td>
<td colspan="2" width="293" valign="top"><br />Switch between 32-bit and 64-bit factorization</td>
<td width="291" valign="top"><br />Not used (use iparm(28) to control accuracy)</td>
</tr>
<tr>
<td width="54" valign="top"><br />30</td>
<td colspan="2" width="293" valign="top"><br />Control the size of the supernodes</td>
<td width="291" valign="top"><br />Zero or negative pivots info</td>
</tr>
<tr>
<td width="54" valign="top"><br />31</td>
<td colspan="2" width="293" valign="top"><br />Partial solve for sparse right-hand side and sparse solution</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />32</td>
<td colspan="2" width="293" valign="top"><br />Use the multi-recursive iterative linear solver</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />33</td>
<td colspan="2" width="293" valign="top"><br />Determinant of a real symmetric indefinite matrix</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" valign="top"><br />34</td>
<td colspan="2" width="293" valign="top"><br />Identical solution independent on the number of processors</td>
<td width="291" valign="top"><br />Not used</td>
</tr>
<tr>
<td width="54" rowspan="2" valign="top"><br />35</td>
<td colspan="2" width="293" rowspan="2" valign="top"><br />Not used</td>
<td width="291" valign="top"><br />MKL 10.2.*: Not used</td>
</tr>
<tr>
<td width="291" valign="top"><br />MKL 10.3.0: C or Fortran style array indexing</td>
</tr>
<tr>
<td width="54" valign="top"><br />60</td>
<td colspan="2" width="293" valign="top"><br />Not used</td>
<td width="291" valign="top"><br />Specifies the PARDISO mode of operation: out-of-core (OOC) or in-core (InCore)</td>
</tr>
<tr>
<td width="54" valign="top"><br />61</td>
<td colspan="2" width="293" valign="top"><br />Not used</td>
<td width="291" valign="top"><br />Total peak memory at analysis and factorization phases</td>
</tr>
<tr>
<td width="54" valign="top"><br />62</td>
<td colspan="2" width="293" valign="top"><br />Not used</td>
<td width="291" valign="top"><br />Total double precision memory consumption at analysis and factorization phases</td>
</tr>
<tr>
<td width="54" valign="top"><br />63</td>
<td colspan="2" width="293" valign="top"><br />Not used</td>
<td width="291" valign="top"><br />Total double precision memory consumption at factorization and solution phases</td>
</tr>
<tr>
<td width="54"></td>
<td width="292"></td>
<td width="1"></td>
<td width="291"></td>
</tr>
</tbody>
</table>
<br /><br />
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/pardiso-api-comparison/</link>
      <pubDate>Thu, 09 Sep 2010 11:30:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/pardiso-api-comparison/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/pardiso-api-comparison/</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>
    </item>
    <item>
      <title>Complex Type Convolution/Correlation are Supported</title>
      <description><![CDATA[ <strong><br />Introduction</strong><br />Linear convolution and correlation operation are widely used in single processing. Intel MKL provides a set of routines intended to perform the transformations in VSL.(Vector Statistic Library). We start to support complex type of transform since MKL 10.1. <br /><br />
<p>The names of routines have the following structure:<br />vsl[datatype]{Conv|Corr}&lt;base name&gt; for C-interface<br />The field [datatype] is optional. If present, the symbol specifies the type of the input and<br />output data and can be <br />s (for single precision real type), <br />d (for double precision real type), <br />c(for single precision complex type), or <br />z (for double precision complex type).</p>
<p>The current implementation provides:</p>
<p>· Fourier algorithms for one-dimensional single and double precision real and complex data<br />· Fourier algorithms for multi-dimensional single and double precision real and complex data<br />· Direct algorithms for one-dimensional single and double precision real and complex data<br />•  Direct algorithms for multi-dimensional single and double precision real and complex data<br /><br /><strong>Sample Code<br /></strong></p>
<p>    printf("EXAMPLE executing a convolution task\n");<br />    rank = 1;<br />    mode = VSL_CONV_MODE_DIRECT;<br />    vslcConvNewTask(&amp;task,mode,rank,&amp;xshape,&amp;yshape,&amp;zshape);<br />    status = vslcConvExec(task,x,&amp;xstride,y,&amp;ystride,z,&amp;zstride);</p>
<p><br />For simple sample c or fortran code, please see <br />${MKL Install Dir}\examples\vslc\source\vslcconvexec.c<br />${MKL Install Dir}\examples\vslf\source\vslcconvexec.f<br /><br /><strong>Compatiblity with IBM* ESSL library</strong><br />One-dimensional algorithms cover the following functions from the IBM* ESSL library:<br />SCONF, SCORF<br />SCOND, SCORD<br />SDCON, SDCOR<br />DDCON, DDCOR<br />SDDCON, SDDCOR.<br />Special wrappers are designed to simulate these ESSL functions. The wrappers are provided<br />as sample sources for FORTRAN and C. To reuse them, use the following directories:<br />${MKL install Dir}/examples/vslc/essl/vsl_wrappers<br />${MKL install Dir}/examples/vslf/essl/vsl_wrappers</p>
<p><strong>Performance issue<br /></strong>One issue is reported in MKL forum <a href="http://software.intel.com/en-us/forums/showthread.php?t=71589">Speed of vslsconv in 10.1</a>. The speed of vslsconv for 1000x1000 and 10x10 is far slower than FFT evaluated.</p>
<p>MKL really seems to have problem with choosing the optimal algorithm in this situation. It erroneously favors the overlap-add method and ends up performing a series of small 2D FFTs.</p>
<p>This issue will be fixed in one of our future releases.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/Complex_type_convolution_correlation_are_supported/</link>
      <pubDate>Sat, 06 Mar 2010 11:30:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/Complex_type_convolution_correlation_are_supported/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/Complex_type_convolution_correlation_are_supported/</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>
    </item>
    <item>
      <title>Cross-Version Compatibility Issues and Information for Intel Fortran</title>
      <description><![CDATA[ <p>As a general rule, code that is compiled by a given version of the Intel Fortran compiler (version 8 or above) can be linked with code compiled by a later version of the same compiler as long as the newer version's language libraries and tools (such as the linker) are used.  The converse is not true - object code compiled by a newer version is not supported for linking with an older version's libraries and tools.</p>
<p>It is also the general rule that an executable or shared library built with one version of the Intel Fortran compiler can run on a system where shared libraries from a newer version have been installed.</p>
<p>While it is Intel's goal to maintain this "upwards compatibility", there are some cases where a recompile is required - usually due to an error in the earlier version.  This article lists and explains the known cross-version compatibility issues for the Intel Fortran compiler.</p>
<p><b>Note:</b> Object code compiled with an Intel Fortran compiler version earlier than 8.0, or with any non-Intel Fortran compiler, cannot be mixed with code compiled with Intel Fortran 8.0 or later.</p>
<p> </p>
<span class="sectionHeading"> Allocating and Deallocating Allocatable or Pointer Arrays Across Versions </span>
<p> </p>
<p>Version where behavior changed: 11.1<br />Operating System: Windows</p>
<p>In a mixed-version application, allocatable or pointer arrays that are allocated in code compiled by pre-11.1 compilers or by 11.1 and later compilers, must be deallocated in code compiled by the same version that allocated the array.  For example, consider the following main program:</p>
<pre name="code" class="plain">program main<br />real(8), allocatable :: array(:)<br /><br />interface<br />subroutine sub (a)<br />real(8), allocatable :: a(:)<br />end subroutine sub<br />end interface<br /><br />allocate (array(100))<br /><br />call sub(array)<br /><br />print *, "Current size of array is ", SIZE(array)<br /><br />deallocate (array)<br /><br />end</pre>
<p>and the following subroutine:</p>
<pre name="code" class="plain">subroutine sub(a)<br />real(8), allocatable :: a(:)<br /><br />if (allocated(a)) deallocate (a)<br /><br />allocate (a(200))<br /><br />a = 0<br /><br />return<br /><br />end subroutine sub</pre>
<p>If the subroutine is compiled with version 11.0 and the main program is compiled with 11.1, when the program is run the result may be one of the following:</p>
<ul>
<li>
<p>An error message "Microsoft Visual C++ Debug Library - Debug Error! The block at [address] was allocated by aligned routines, use _aligned_free()"<br /> <img src="http://software.intel.com/file/24215" title="aligned_free.png" alt="aligned_free.png" vspace="5" /></p>
</li>
<li>
<p>The application exits with no error message</p>
</li>
<li>
<p>No error message is displayed, but the deallocate is ignored</p>
</li>
</ul>
<p>The deallocate does not need to be explicit - it may be performed as part of an array assignment or an assignment of a derived type containing an allocatable array component.</p>
<p>The cause of the issue is a change in version 11.1 that causes all allocated memory to be aligned on 8-byte boundaries; this change is represented in the compiled object code and the alignment information is not attached to the allocated array. Different routines in the Microsoft C++ library are used to do aligned and unaligned allocates and frees and these cannot be mixed.  The explicit error message noted in the first bullet above is shown only when the application is linked with the "debug" libraries.</p>
<p>There is no known workaround for this issue other than recompiling the source so that the allocates and deallocates do not cross the 11.0-11.1 boundary.  This issue will be fixed in a future update to the Intel Fortran Compiler.</p>
<hr />
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/cross-version-compatibility-issues-and-information-intel-fortran/</link>
      <pubDate>Thu, 18 Feb 2010 21:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/cross-version-compatibility-issues-and-information-intel-fortran/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/cross-version-compatibility-issues-and-information-intel-fortran/</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>
