<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Fri, 10 Feb 2012 05:25:20 -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-visual-fortran-compiler-for-windows-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-visual-fortran-compiler-for-windows-kb/type/compatibility/</link>
    <description></description>
    <language>en-us</language>
    <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>Resolving link errors after installing Microsoft Visual Basic 2010 Express on a system where Intel(R) Visual Fortran Composer XE is installed</title>
      <description><![CDATA[ <br />
<div id="art_pre_template"><b>Problem : </b>I have been using Visual Fortran Composer XE for several weeks without problems. Recently, I installed Microsoft Visual Basic 2010 Express (free download), and now I get the LNK1104 error for uuid.lib. If I uninstall Visual Basic 2010 Express I do not get the link error. <br /><br /><br /><b>Environment : </b>Windows 7, Intel(R)64, Visual Studio 2008<br /><br /><br /><b>Root Cause : </b>Visual Basic 2010 Express will install a new Windows SDK 7.0 probably at c:\Program Files(x86)\Microsoft SDKs\Windows\v7.0A. This Windows SDK is incomplete, not containing the lib folder. It also updated registration key of HKEY_LOCAL_MACHINE-&gt;Microsoft-&gt;Microsoft SDKs-&gt;Windows-&gt;"CurrentInstallFolder" to reference to this new Windows SDK folder. The Visual Studio development environment will use this registration key to set "WindowsSdkDir" which is used in Visual Fortran library list.<br /><br /><br /><b>Resolution : </b>There are two possible solutions:<br />1.Download and install the complete <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b">Microsoft Windows SDK</a> manually.<br /><br />2. Add your original SDK path to the Fortran project library path list:<br />E.g., my original SDK path before I install Visual Studio express can be got by opening a Fortran Composer XE command prompt, and run:<br />&gt; echo %WindowsSDKDir<br />C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\PlatformSDK<br /><br />In Visual Studio, select Tools &gt; Options &gt; Intel Visual Fortran &gt; Compilers.<br />- For IA32, add "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\PlatformSDK\Lib" to library list.<br />- For Intel 64, add "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\PlatformSDK\Lib\AMD64" to the library list.<br /></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/lnk1104-cannot-open-file-uuidlib/</link>
      <pubDate>Fri, 04 Mar 2011 09:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/lnk1104-cannot-open-file-uuidlib/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/lnk1104-cannot-open-file-uuidlib/</guid>
      <category>Intel Software Network communities</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
      <category>Intel Software Network communities</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>Intel® Fortran Compiler for Windows* - Supported compiler versions</title>
      <description><![CDATA[  ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-fortran-compiler-for-windows-supported-compiler-versions/</link>
      <pubDate>Tue, 23 Feb 2010 18:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-fortran-compiler-for-windows-supported-compiler-versions/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-fortran-compiler-for-windows-supported-compiler-versions/</guid>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Migrating from Compaq* Visual Fortran</title>
      <description><![CDATA[ <!--page break-->
<hr />
<div class="sectionHeading">Introduction</div>
<p>Intel® Visual Fortran Composer XE 2011 for Windows* (Intel® Visual Fortran) integrates with Microsoft developer tools with the goal of providing outstanding application performance on Intel processors as well as with compatible processors from other manufacturers. Intel Visual Fortran is a full-language Fortran 95 compiler with a majority of Fortran 2003 features plus a wide range of popular industry extensions.</p>
<p>Intel Visual Fortran is the successor to Compaq* Visual Fortran (CVF) and comes from the same development team. Intel Visual Fortran is highly compatible with CVF andm for most customers. migrating is easy.  This article will lead you through the process.</p>
<p>In most cases, you can rebuild existing CVF applications with the new compilers without source changes, but some applications may need minor coding changes, and build methods may need minor adjustments. This article describes the key differences you are likely to encounter. For additional details, refer to the appropriate compiler release notes and the compiler documentation.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Product Compatibility</div>
<p>If you already have installed Microsoft Visual Studio 2010*, Visual Studio 2008*, or Microsoft Visual Studio 2005*, Intel Visual Fortran will integrate into that Visual Studio development environment allowing you to create, build and debug Fortran and mixed-language applications. If you do not have a supported version of Microsoft Visual Studio installed, Intel Visual Fortran will install Microsoft Visual Studio 2010 Shell to provide a rich development environment for Fortran programming on IA-32 and Intel® 64 systems. (Note that some license types of Intel Visual Fortran do not provide Microsoft Visual Studio 2010 Shell. Please read the compiler's System Requirements for details.)</p>
<p>The Intel Visual Fortran product can coexist on a system with CVF, and you can continue using the older product if you wish. However, Intel Visual Fortran does not integrate with Microsoft Visual Studio 6 environment used by CVF, whereas CVF does not integrate with the newer versions of Microsoft Visual Studio. The Intel and Compaq products install into separate folder trees and use separate registry variables.</p>
<p>All Fortran sources must be recompiled with Intel Visual Fortran; you cannot use CVF-compiled objects, modules, or static libraries with Intel Visual Fortran. You can, however, use CVF-built dynamic link libraries (DLLs) with applications compiled with the Intel Visual Fortran Compiler, as long as you do not try to share input/ output units across the two environments. Note also that third-party libraries built for use with CVF may not work with Intel Visual Fortran . Contact the library supplier for more information.</p>
<p><b>Common Features</b></p>
<p>Intel Visual Fortran supports all of the CVF language syntax, including extensions from Digital Equipment Corporation (DEC) Fortran and Microsoft Fortran PowerStation* 4. All CVF library routines are supported, including those from the QuickWin and Portability libraries, as are all of the system-interface modules. In most cases, a simple rebuild of the application with the Intel compiler is all that is needed. Source changes that you may need to make are described below.</p>
<p><b>Features Not Supported</b></p>
<p>Intel Visual Fortran supports all of the language syntax supported by CVF. However, some of the CVF product features are not supported by Intel Visual Fortran. These include the following:</p>
<ul>
<li>Compaq Extended Math Library. The Intel® Math Kernel Library or third-party libraries such as IMSL* and NAG* may be suitable alternatives. (Intel Math Kernel Library is provided with Intel Visual Fortran Compiler Professional Edition and the IMSL library is provided with Intel Visual Fortran Compiler Professional Edition with IMSL. Other products must be obtained separately.)</li>
<li>Format editor tool. </li>
<li>Save Fortran Environment tool. </li>
</ul>
<p>If you have existing applications that were created by the CVF COM Server Wizard, you may be able to rebuild them with Intel Visual Fortran. If you need to make changes to the interfaces, you can do so in CVF if you have left it installed. CVF COM Server Wizard projects cannot be converted to Intel® COM Server Wizard projects.</p>
<p>Although Intel Visual Fortran supports all CVF language syntax, incorrect programs which were compilable with CVF may result in error messages when compiled with Intel Visual Fortran. If you encounter unexpected error messages and need assistance resolving them, please see <a href="http://software.intel.com#GettingHelp">Getting Help</a></p>
<p><b>Behavior Differences</b></p>
<p>Some applications may be affected by changes in defaults:</p>
<ul>
<li>Unlike CVF, the Intel Fortran compiler can check for mismatches in argument lists across multiple source files, unlike CVF which did this only within a single source file.  You may see more error messages when the program is built with Intel Fortran due to this enhanced checking.  If you need help understanding a particular error message, search for it on the Intel Software Network web site or ask for help in the <a href="http://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/">user forum</a>. As a last resort, you can disable this enhanced checking by disabling the options <b>/gen-interface</b> (Fortran &gt; Diagnostics &gt; Generate Interface Blocks) and <b>/warn:interface</b> (Fortran &gt; Diagnostics &gt; Check Routine Interfaces).</li>
<li>In CVF, the default for local variables in procedures was that SAVE semantics were assumed.  This caused the compiler to allocate local variables in static storage, which had the side-effect of these variables usually having an initial value of zero, though this was not guaranteed.  The Intel Fortran compiler defaults to /auto-scalar, which means that scalar variables are allocated on the stack by default, while arrays and derived types are still allocated statically.  If your program assumed that a local variable was preserved across calls or that it was initially zero, this can cause incorrect run-time behavior.  The solution is to add a SAVE declaration for variables that should be preserved, and/or to add initialization where required.  To revert to the CVF semantics, add the option <b>/Qsave</b> (in Visual Studio, this is property Fortran &gt; Data &gt; Local Variable Storage &gt; All variables SAVE.  As of version 11, projects converted from CVF projects have <b>/Qsave</b> added by default.</li>
<li>In CVF, floating point arithmetic was always done using the "X87" instructions, which could lead to inconsistent values of expressions depending on optimizer choices.  As of version 11, Intel Fortran uses the SSE2 instructions by default, which is faster and more consistent, but may give different results for some computations.  If you see this issue, try setting the option <b>/fp:source</b> (Fortran &gt; Floating Point &gt; Floating Point Moel &gt; Source).  If that does not resolve the issue, specify that the X87 instructions are to be used by specifying <b>/arch:ia32</b> (Fortran &gt; Code Generation &gt; Enable Enhanced Instruction Set &gt; No enhanced instruction sets)</li>
</ul>
<!--page break-->
<hr />
<div class="sectionHeading">Microsoft Visual Studio 2010 Shell*</div>
<p>If you are using Microsoft Visual Studio 2010 Shell, the following limitations apply:</p>
<ul>
<li>No Microsoft language processors such as Visual C++* or Visual BASIC* are supplied.</li>
<li>CVF projects cannot be converted to Intel Visual Fortran projects. Instead, create a new Intel Visual Fortran project and add your sources to it.</li>
<li>The Microsoft Visual C++ Resource Editor, used to create and edit dialog boxes, icons and version resources, is not provided due to licensing restrictions. A freeware alternative is ResEdit from <a target="_blank" href="http://www.resedit.net/">www.resedit.net</a>. If you have existing resource files, they can be used</li>
<li>The Intel® C++ Compiler cannot be used in this environment. </li>
</ul>
<p>These limitations do not apply when using a retail edition of Microsoft Visual Studio.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Converting CVF Projects</div>
<p>Intel Visual Fortran includes project-conversion wizards to make it easy to migrate from CVF. Note that the project conversion wizards are not available if you are using Microsoft Visual Studio Premier Partner Edition. The steps and illustrations below assume use of Visual Studio 2008. The process using other versions of Visual Studio is similar.</p>
<p>Conversion is a two-step process:</p>
<p>1. Open the CVF workspace in Visual Studio by right-clicking on the workspace's .DSW file and selecting Open With... Microsoft Visual Studio 2008. You will see a message similar to the following:</p>
<p><img src="http://software.intel.com/file/7573" alt="Initial Project Conversion Dialog" title="Initial Project Conversion Dialog" /></p>
<p>Figure 1. Initial Project Conversion Dialog</p>
<p>Click Yes To All to convert each project to a Visual C++ project in a "solution" (similar to a workspace).</p>
<p>2. In the right or left pane, you will see the Solution Explorer with the project(s) present. If you do not see the Solution Explorer pane, select View&gt;Solution Explorer. At this point, the conversion to Fortran project(s) is not yet complete. For each project, right-click the project name and select Extract Compaq Visual Fortran Project Items.</p>
<p><img src="http://software.intel.com/file/7996" alt="Extract%20Fortran%20Project%20Items%20Dialog" title="figure002.png" /></p>
<p>Figure 2. Extract Fortran Project Items Dialog</p>
<p>The project will now be converted.</p>
<p><img src="http://software.intel.com/file/7998" alt="Converted%20Project" title="figure003.png" /></p>
<p>Figure 3. Converted Project</p>
<p>If the CVF project contains both Fortran and C sources, it must be converted into two single-language projects under a solution - one builds a static library and the other links to that library - because Microsoft Visual Studio does not allow multiple languages in a single project. The project conversion wizard asks you which language has the main (linkable) project, Fortran or C, and makes the appropriate adjustments. Figure 4 is an example of converting a mixed-language project.</p>
<p><img src="http://software.intel.com/file/7569" alt="Mixed Language Project" title="Mixed Language Project" /></p>
<p>Figure 4. Mixed Language Project Dialog Box</p>
<p>In this example, the main (executable) program is in C, so we select "The Visual C++ Project".</p>
<p>After conversion, the mixed-language project looks like Figure 5.</p>
<p><img src="http://software.intel.com/file/8000" alt="Converted%20Mixed-Language%20Project" title="figure005.gif" /></p>
<p>Figure 5. Converted Mixed Language Project</p>
<p>In the prior example, the CVF NODLL project was split into a C++ executable project named NODLL and an Intel Fortran static library project NODLL_lib. The conversion wizard automatically makes NODLL_lib a dependent of NODLL, so that the library is built first and then is linked into the C code.</p>
<p>If you convert a CVF project, the conversion wizard will change project settings from the default to enhance compatibility with CVF. An important change is the default calling convention: if it was "Default" in CVF, the conversion wizard changes it to "CVF." (The following section provides more information on calling conventions.) Unless you had a mixed-language application that depended on CVF-specific calling conventions, you should set the default calling convention back to the default, in most cases.</p>
<p>If your mixed-language project was a static library project, two static library projects will be created, one a dependent of the other. Visual Studio will automatically combine the child library with the parent when the solution is built.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Getting Used to the Microsoft Visual Studio IDE</div>
<p>The Microsoft Visual Studio Integrated Development Environment (IDE) is somewhat different from the one shared by CVF and some users may at first find it difficult to perform common tasks. This paper covers some of the major changes, but it is not comprehensive. For more information on using the IDE, see the MSDN Library* documentation that accompanies Microsoft Visual Studio. (If you are using Microsoft Visual Studio 2010 Shell, you can access the MSDN Library at <a href="http://msdn2.microsoft.com/en-us/library">http://msdn2.microsoft.com/en-us/library</a>)</p>
<p><b>Projects and Solutions</b></p>
<p>In CVF (and Visual C++ 6.0), "projects" were placed in "workspaces." A CVF workspace was little more than a container for one or more projects and was not involved in the build process. A project built something (an EXE, LIB or DLL file in most cases), and it could contain both Fortran and C code. One project was always designated as "active."</p>
<p>In Visual Studio, projects are substantially the same, but a project can be associated with only one language. For example, if you add C files to a Fortran project, the C files will be ignored. A solution holds multiple projects, but it is different from a workspace because you can build a solution, which builds all of the contained projects in a specified, user-configurable order.</p>
<p>When you have a mixed Fortran and C application, you must put the Fortran code into a Fortran project and the C code into a C (or C++) project. The projects get built separately and then, if appropriate, they are linked together. If the old project was a static library, two static library projects are created, with the objects going into a combined .LIB file. In this case, it does not matter which project you select as being the "main" project.</p>
<p><b>Changing Settings</b></p>
<p>Changing settings in the new Visual Studio environment is different as well. Instead of a tabbed dialog box for Settings, there is a tree-view set of "Property Pages." Figure 6 shows a set of property pages for an example project.</p>
<p><img src="http://software.intel.com/file/7566" alt="Property Pages" title="Property Pages" /></p>
<p>Figure 6. Property Pages</p>
<p>In this example, the Fortran General Property Page is displayed. Current property values that are the defaults are shown bolded, and a brief description of the highlighted property is displayed at the bottom of the pane.</p>
<ol>
<li>
<p>To change a property value that has specific options, click on the value. An arrow icon displays to the right of the value.<br /><br /><img src="http://software.intel.com/file/7565" alt="Changing a Property" title="Changing a Property" /></p>
<p>Figure 7. Changing a Property</p>
</li>
<li>
<p>Click on the arrow to display the options and select the desired option. Properties that offer a list of items, such as Additional Include Directories in the example above, display a list icon (three dots).</p>
</li>
<li>
<p>3. Click the icon to open a separate dialog box, where you can enter the values. If you have only one value, type it directly on the Property page. You can directly type properties that are a single text string. In some cases, an arrow icon is available to allow you to select "Inherit from project defaults."</p>
</li>
</ol>
<p> </p>
<!--page break-->
<hr />
<div class="sectionHeading">Debugging</div>
<p>Debugging with Intel Visual Fortran is similar to using CVF, but some of the controls are in different places.</p>
<ol>
<li>To set a breakpoint, click in the left margin next to a statement; the red Stop icon displays. As with CVF, you must set at least one breakpoint, otherwise the program will run to completion when debugging starts. </li>
<li>To execute under the debugger, click the green triangle "Play" icon next to the configuration name. </li>
</ol>
<p>Unlike in CVF, there is not a default button on the toolbar for "Start Without Debugging". You can access this function by selecting it under the Debug menu or by pressing Ctrl+F5. If you want to add the button, select Tools&gt;Customize. In the Commands tab, select Debug under Categories and drag the Start Without Debugging button to the toolbar.</p>
<p><img src="http://software.intel.com/file/7999" alt="Setting%20a%20Breakpoint" title="figure008.png" /></p>
<p>Figure 8. Setting a Breakpoint</p>
<!--page break-->
<hr />
<div class="sectionHeading">Source Changes</div>
<p>While Intel has taken great care to avoid the need for source changes to permit "rebuild and go," a number of implementation differences between the Intel and Compaq compilers necessitate making changes for selected applications. For the latest information on changes, please refer to the Intel Visual Fortran Compiler Release Notes.</p>
<p>While the part of the compiler that handles Fortran syntax and semantics, often referred to as the "front end," is derived from CVF, improvements have been made in detecting incorrect usage, and you may find that the new compiler issues diagnostic messages</p>
<p>for certain usages where the older compiler did not. For example, the compiler now gives an error for a source that makes a call to a non-pure intrinsic such as RANDOM_NUMBER from inside a pure procedure. In such cases, you will need to correct the coding errors. If you believe a diagnostic is inappropriate, please see <a href="http://software.intel.com#GettingHelp">Getting Help</a>.</p>
<p><b>Default Calling Conventions Have Changed</b></p>
<p>In CVF, the default calling mechanism was STDCALL, and routine names were ‘decorated ' by adding @n to the end, where n was the number of bytes of argument list. Intel Visual Fortran Compiler adopts the more common C calling mechanism used by versions 7.1 and earlier of the Intel Fortran Compiler. Routine names are still converted to uppercase by default, and a leading underscore is added, but there is no @n suffix.</p>
<p>Another change is the manner in which CHARACTER argument lengths are passed. In CVF, these were passed immediately following the address of the CHARACTER item, but in Intel Visual Fortran, all the lengths are passed at the end of the argument list. In other words, the default has changed from /iface: mixed_str_len_arg to /iface:nomixed_str_len_arg.</p>
<p>If you have a Fortran-only application, this change may not be important to you. If, on the other hand, you have a mixed-language application, you need to be aware of the impact of the change in compiler default. You can tell the compiler to use the CVF default on the External Procedures property page, or with the /iface:cvf command-line switch.</p>
<p>A special case where the convention change matters is if your application uses "callback procedures". This is where you pass a routine name from your program as an argument to a library routine. Some kinds of library routines which use callbacks are Win_2 API and IMSL libraries, the QSORT routine from the Intel Fortran Portability Library, and also the USEROPEN keyword of the Fortran OPEN statement. Callback routines assume a specific calling convention and if there is a mismatch it can cause stack corruption and unpredictable results.</p>
<p>The Windows API always uses the STDCALL convention, so if you are passing Fortran routines to Windows API routines, be sure to add the directive</p>
<p>!DEC$ ATTRIBUTES STDCALL,REFERENCE :: routine-name</p>
<p>to the callback routine. Most other uses of callbacks, including the IMSL library, assume the compiler 's default conventions. If you encounter unexpected run-time errors, try setting the calling convention to "Default" to see if that resolves the issue.</p>
<p><b>GETARG, IARGC and NARGS Are Now Intrinsic</b></p>
<p>The command-line inquiry routines GETARG, IARGC and NARGS are now recognized as intrinsic procedures by the compiler. If your application source declares any of these names as EXTERNAL or provides an explicit procedure interface for them, you must remove those declarations to prevent link-time errors.</p>
<p><b>New Module Names for System and Library Declarations</b></p>
<p>Compaq Visual Fortran provided modules with definitions of Windows* API routines and symbols, as well as modules for Fortran library routines. These modules had names such as DFWIN, DFLIB, etc. Intel Visual Fortran provides compatible modules with the same names, but these are wrappers around modules with new names. You do not need to change your sources, but you should begin using the new names in new development. In DFLIB, symbols have been relocated into one of three new modules: IFCORE, IFPORT and IFQWIN.</p>
<p>You may find it useful to select the specific module containing the symbols you are interested in.</p>
<table width="80%" border="0">
<tbody>
<tr bgcolor="#006699">
<th align="center" scope="col" width="20%"><span >Old Name </span></th><th align="center" scope="col" width="20%"><span >New Name </span></th><th align="center" scope="col"><span >Description</span></th>
</tr>
<tr>
<td align="center" width="20%">DFAUTO</td>
<td align="center" width="20%">IFAUTO</td>
<td align="center">Automation</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFCOM</td>
<td align="center" width="20%">IFCOM</td>
<td align="center">COM and OLE</td>
</tr>
<tr>
<td align="center" width="20%">DFCOMTY</td>
<td align="center" width="20%">IFCOMTY</td>
<td align="center">Obsolete, use IFWINTY</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFLIB</td>
<td align="center" width="20%">IFCORE, IFPORT, IFQWIN</td>
<td align="center">General library, Portability library, QuickWin</td>
</tr>
<tr>
<td align="center" width="20%">DFLOGM, DFLOGMT</td>
<td align="center" width="20%">IFLOGM, IFLOGMT</td>
<td align="center">Dialogs</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFMT</td>
<td align="center" width="20%">IFMT</td>
<td align="center">Multithread routines (obsolete)</td>
</tr>
<tr>
<td align="center" width="20%">DFNLS</td>
<td align="center" width="20%">IFNLS</td>
<td align="center">National language support</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFOPNGL, DFOPNGLT</td>
<td align="center" width="20%">IFOPNGL, IFOPNGLT</td>
<td align="center">OpenGL*</td>
</tr>
<tr>
<td align="center" width="20%">DFPORT</td>
<td align="center" width="20%">IFPORT</td>
<td align="center">Portability routines</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFWBASE</td>
<td align="center" width="20%">IFWBASE</td>
<td align="center">Deprecated WIN16 routines (not supported on 64-bit architectures</td>
</tr>
<tr>
<td align="center" width="20%">DFWIN</td>
<td align="center" width="20%">IFWIN</td>
<td align="center">Win32 APIs (use of individual modules such as KERNEL32 is recommended instead)</td>
</tr>
<tr bgcolor="#cccccc">
<td align="center" width="20%">DFWINA</td>
<td align="center" width="20%">IFWINA</td>
<td align="center">Renamed Win32 routines that conflict with QuickWin names</td>
</tr>
<tr>
<td align="center" width="20%">DFWINTY</td>
<td align="center" width="20%">IFWINTY</td>
<td align="center">Win32 API types and constants</td>
</tr>
</tbody>
</table>
<p> </p>
<p>The individual Windows API modules such as KERNEL32 have the same names as in CVF. Note that new Win32 modules, such as PSAPI, have been added.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Build Changes</div>
<p>In most cases, you will not need to make changes in your build procedures. However, to provide for compatibility with future versions of Intel Fortran compilers, some changes are recommended. This section describes differences that affect building applications.</p>
<p><b>Compile Command is Now ifort</b></p>
<p>Under CVF, four command names were provided for invoking the compiler: df, f90, f77 and fl32. df and f90 were equivalent, f77 added options for compatibility with Compaq Fortran 77,and fl32 added options for compatibility with Microsoft Fortran PowerStation. In Intel Visual Fortran, ifort is the command name to invoke the compiler.</p>
<p>If you leave CVF installed on your system, it coexists with Intel Visual Fortran. When using the command line, be sure to use the appropriate shortcut in the Start menu to start your command session. For CVF, use "Fortran Command Prompt." For Intel Visual Fortran , use one of the selections under Intel Parallel Studio XE &gt; Command Prompt. Each of these will establish the proper environment for the selected compiler. The IDEs are separate and do not interfere with each other.</p>
<!--page break-->
<hr />
<div class="sectionHeading">Using the IMSL* Fortran Libraries from Visual Numerics</div>
<p>Intel Visual Fortran Composer XE 2011 with IMSL 6.0*, includes the IMSL Fortran Numeric Library* 6.0 from Visual Numerics, Inc. In addition to many new and updated routines, the new version adds the following features not included in Compaq Visual Fortran Professional Edition:</p>
<ol>
<li>Multithreaded libraries for improved performance on multi-core and multiprocessor systems.. </li>
<li>DLL form of the libraries. </li>
<li>Support for the Intel® 64 architecture </li>
<li>New, unified interface modules making use of Fortran 95 generic interfaces and optional arguments. </li>
</ol>
<p>The IMSL libraries are installed separarely from the compiler.  Please be sure to install the compiler first.</p>
<p>An existing application that uses the IMSL libraries will need few or no changes, unless you want to take advantage of the new features. You will need to make a change in how the application is built to reference the proper libraries. Below is an overview of this change. See the Intel Visual Fortran Compiler on-disk documentation under Building Applications, Using Libraries for additional details.</p>
<p>A change that may be needed is if your calls to the IMSL library pass callback routines. These are often used to evaluate user functions in "solver" routines. You must make sure that your callback routines use the default calling convention and not CVF 's STDCALL. See the above section on the change in calling conventions for more information.</p>
<p><b>Locating and Referencing the IMSL Libraries</b></p>
<p>In Compaq Visual Fortran, there was just one set of IMSL libraries: static and non-threaded. In Intel Visual Fortran Composer XE 2011 with IMSL, there are four sets of libraries with different names. Rather than explicitly list the libraries, as was commonly done with CVF, you should instead specify the path to the folder containing the libraries and use one of the supplied INCLUDE files to create a reference to the specific libraries required.</p>
For details on how to specify the IMSL libraries, please see <a href="http://software.intel.com/en-us/articles/installing-and-using-the-imsl-libraries/">Installing and using the IMSL* Libraries</a><br /><br />
<p>For additional options and details, please refer to the Building Applications manual on-disk documentation section on using the IMSL libraries (Building Applications &gt; Using Libraries &gt; Using the IMSL* Mathematical and Statistical Libraries).</p>
<!--page break-->
<hr />
<div class="sectionHeading">Product Features</div>
<p>Intel Visual Fortran Composer XE 2011 provides a rich feature set:</p>
<ul>
<li>Full support of Intel multi-core processors and 64-bit architectures </li>
<li>Fortran 2003 and Fortran 2008 language features </li>
<li>Quadruple-precision floating point REAL(16) and COMPLEX(32) </li>
<li>Automatic parallelization </li>
<li>OpenMP* support </li>
<li>Advanced optimization for new Intel processors </li>
</ul>
<p>For more information on these and other features, see the compiler <a target="_blank" href="http://software.intel.com/en-us/articles/intel-fortran-composer-xe-2011-release-notes/">Release Notes</a>.</p>
<p><a name="GettingHelp"></a></p>
<!--page break-->
<hr />
<div class="sectionHeading">Getting Help</div>
If you have questions about using Intel Visual Fortran, please ask in our <a href="http://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/">User Forum</a>. <br /><br />
<table cellpadding="5" cellspacing="0" rules="none" border="1">
<tbody>
<tr>
<th align="left" valign="middle" >Optimization Notice</th>
</tr>
<tr bgcolor="#ccecff">
<td>
<p>Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.</p>
<p align="right">Notice revision #20110804</p>
</td>
</tr>
</tbody>
</table>
<!--page break--> ]]></description>
      <link>http://software.intel.com/en-us/articles/migrating-from-compaq-visual-fortran/</link>
      <pubDate>Sun, 21 Feb 2010 00:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/migrating-from-compaq-visual-fortran/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/migrating-from-compaq-visual-fortran/</guid>
      <category>Intel® Visual Fortran Compiler for Windows* 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>
    <item>
      <title>Intel Fortran Compiler 11.1 Release Notes</title>
      <description><![CDATA[ <p>This is an old version.  For the current version, see <a href="http://software.intel.com/en-us/articles/intel-fortran-composer-xe-2011-release-notes/">Intel® Fortran Composer XE 2011 Release Notes</a></p>
<p>This page provides the current Installation Guide and Release Notes for the Intel® Fortran Compiler 11.1 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>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> </p>
<p>11.1 Update 9, July 2011 (IA-64 compiler update only)<br />Intel® Fortran Compiler Professional Edition for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/37804">English</a></li>
</ul>
<p>Intel® Fortran Compiler Professional Edition for Mac OS X*</p>
<ul>
<li>Not updated for Update 9</li>
</ul>
<p>Intel® Visual Fortran Compiler Professional Edition for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/37805">English</a></li>
</ul>
<p> </p>
<p>11.1 Update 8, December 2010<br />Intel® Fortran Compiler Professional Edition for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/32679">English</a></li>
</ul>
<p>Intel® Fortran Compiler Professional Edition for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/32681">English</a></li>
</ul>
<p>Intel® Visual Fortran Compiler Professional Edition for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/32682">English</a></li>
</ul>
<p> </p>
<p>11.1 Update 7, August 2010<br />Intel® Fortran Compiler Professional Edition for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/30030">English</a></li>
</ul>
<p>Intel® Fortran Compiler Professional Edition for Mac OS X*</p>
<ul>
<li><a href="http://software.intel.com/file/30031">English</a></li>
</ul>
<p>Intel® Visual Fortran Compiler Professional Edition for Windows*</p>
<ul>
<li><a href="http://software.intel.com/file/30032">English</a></li>
</ul>
<p><br />11.1 Update 6, April 2010<br /><br />Intel® Fortran Compiler Professional Edition for Linux*</p>
<ul>
<li><a href="http://software.intel.com/file/26562">English</a></li>
<li><a href="http://software.intel.com/file/26561">Japanese</a></li>
</ul>
Intel® Fortran Compiler Professional Edition for Mac OS X*<br /> 
<ul>
<li><a href="http://software.intel.com/file/26558">English</a></li>
</ul>
Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/26554">English</a></li>
<li><a href="http://software.intel.com/file/26555">Japanese</a></li>
</ul>
<br /><br />11.1 Update 5, February 2010<br /><br />Intel® Fortran Compiler Professional Edition for Linux*<br /> 
<ul>
<li><a href="http://software.intel.com/file/25225">English</a></li>
</ul>
Intel® Fortran Compiler Professional Edition for Mac OS X*<br /> 
<ul>
<li><a href="http://software.intel.com/file/25226">English</a></li>
</ul>
Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/25227">English</a></li>
</ul>
<br />11.1 Update 4, December 2009<br /><br />Intel® Fortran Compiler Professional Edition for Linux*<br /> 
<ul>
<li><a href="http://software.intel.com/file/24085">English</a></li>
<li><a href="http://software.intel.com/file/24092">Japanese</a></li>
</ul>
Intel® Fortran Compiler Professional Edition for Mac OS X*<br /> 
<ul>
<li><a href="http://software.intel.com/file/24087">English</a></li>
</ul>
Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/24089">English</a></li>
<li><a href="http://software.intel.com/file/24094">Japanese</a></li>
</ul>
<br />11.1 Update 3, October 2009<br /><br />Intel® Fortran Compiler Professional Edition for Linux*<br /> 
<ul>
<li><a href="http://software.intel.com/file/23254">English</a></li>
</ul>
Intel® Fortran Compiler Professional Edition for Mac OS X*<br /> 
<ul>
<li><a href="http://software.intel.com/file/23255">English</a></li>
</ul>
Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/23257">English</a></li>
</ul>
<br />11.1 Update 2 (Revised), October 2009<br /><br />Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/22885">English</a> </li>
</ul>
<br />11.1 Update 2, September 2009<br /><br />Intel® Fortran Compiler Professional Edition for Linux*<br /> 
<ul>
<li><a href="http://software.intel.com/file/22125">English</a></li>
<li><a href="http://software.intel.com/file/22126">Japanese</a></li>
</ul>
Intel® Fortran Compiler Professional Edition for Mac OS X*<br /> 
<ul>
<li><a href="http://software.intel.com/file/22128">English</a></li>
</ul>
Intel® Visual Fortran Compiler Professional Edition for Windows*<br /> 
<ul>
<li><a href="http://software.intel.com/file/22131">English</a></li>
<li><a href="http://software.intel.com/file/22132">Japanese</a></li>
</ul>
<a target="_blank" href="http://software.intel.com/sites/support/"></a> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-fortran-compiler-111-release-notes/</link>
      <pubDate>Wed, 10 Feb 2010 21:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-fortran-compiler-111-release-notes/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-fortran-compiler-111-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>Intel® Fortran Compiler - Supported compiler versions</title>
      <description><![CDATA[ <p>The following compiler versions are supported:</p>
<li>Intel® Fortran Composer XE 2011 for Linux* (Compiler version 12.0)</li>
<li>Intel® Fortran Compiler 11.1 for Linux*</li>
<li>Intel® Fortran Composer XE 2011 for Mac OS* X (Compiler version 12.0)</li>
<li>Intel® Fortran Compiler 11.1 for Mac OS* X</li>
<li>Intel® Visual Fortran Composer XE 2011 for Windows* (Compiler version 12.0)</li>
<li>Intel® Visual Fortran Compiler 11.1 for Windows*</li>
<br />Interactive support via <a href="https://premier.intel.com">Intel® Premier Support</a> is provided for the two most recent compiler releases. Older compiler versions are not supported.<br /><br />If you have any questions about this policy, contact <a href="https://premier.intel.com">Intel® Premier Support</a>.
<p> </p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-fortran-compiler-supported-compiler-versions/</link>
      <pubDate>Mon, 09 Nov 2009 18:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-fortran-compiler-supported-compiler-versions/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-fortran-compiler-supported-compiler-versions/</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>How to Build Intel® MKL Application in Intel Visual Fortran (MSVC*2005)</title>
      <description><![CDATA[ <p>This document describe the steps to build Intel® MKL application in Intel Visual FORTRAN Compiler, which integrated in Microsoft Visual Studio* 2005 or 2008.</p>
<p><b>Software Requirement:</b> <br />1. Intel® Visual FORTRAN Compiler Professional for Windows.  <br />The compiler was required to be installed and properly integrated to Microsoft VC 2005 or VC 2008.</p>
<p align="left">2. Intel® MKL for windows<br />You can install the Stand alone MKL separately or the integrated MKL which comes along with Intel Fortran Compiler Professional version. <br /><br />3. Microsoft* Visual Studio 2005 or 2008. (MSVC*)<br />For who'd like to build x64 bit application, please install the MSVC* package which supports X64 development. <br /><br /><b>Step1 : Which kind of application: ia32, em64t or ia64 application you need to build?</b><br />Which target machine you need your application run on? <br />ia32: 32 bit application. <br />EM64t: Intel® 64 bit application<br />IA64:  Intel® Itanium 64bit application.</p>
<p align="left">Some more information what ia32 and intel64 Intel® architecture mean,  please see <a href="http://software.intel.com/en-us/articles/ia-32-intelr-64-ia-64-architecture-mean/">this article</a>.<br /><br />When build ia32 or em64t application on Intel®  XEON machine with windows*, in MSVC* environment, please check the project configuration manager=&gt; active platform.  They should be  "ia32" or "X64" (which is corresponding to em64t). <br /><br /><b>Step 2 : Which MKL library you need link against?</b> <br /><b>2.1)</b> please check the on-line KB article <a href="http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/" title="http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/"><b>Intel® Math Kernel Library Link Line Advisor</b></a> After choose it, you can get which libraries you need to list.  <br /><br />For example, <br />"mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib" is enough for a ia32 windows application generally.<br />"mkl_intel_lp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib" is ok for a X64 windows application <br /><br /><b>Step 3: How to link MKL in your project manually?</b><b><br /></b><b>3.1)</b> Please follow the steps in <a href="http://software.intel.com/en-us/articles/integrating-a-microsoft-visual-studio-ide-project-with-intel-mkl/"><b>how to use MKL in MSVC</b></a> to add the include path, library path and mkl library as the article show. <br /><br />For example, add include path manually<br /><b></b><br /><strong><img height="461" width="753" src="http://software.intel.com/file/23743" alt="fortran_include.JPG" title="fortran_include.JPG" /></strong><br /><br />please take care of about library path,  you need enter right directory:<br />&lt;MKL install dir&gt;\ia32,  for ia32 application<br />&lt;MKL install dir&gt;\em64t, for X64 application<br />&lt;MKL install dir&gt;\ia64, for IA64 application<br />they can't be mixed. <br /><br /><br /><strong>Step 4: How to link MKL in your project automatically - One Button Support  (optional)<br /></strong>The recent MKL version have provided one "build" menu in MSVC environment. Click <strong>one button</strong>, all of environment setting and required libraries are ready in your project. <br /><strong>* This step can replace the step3 in most of cases.   <br />Or if the button is not show, please try step3, set the paths and library manually. <br /><br />4.1)</strong> See below screenshot in MSVC 2005, click the version you need<br /><img height="348" width="576" src="http://software.intel.com/file/20711" /><br />Then the required library will be added in your project automatically. <br /><img height="348" width="576" src="http://software.intel.com/file/20712" /><br /><br /><strong>4.2) In Visual Fortran compiler,</strong> it is a little different,<strong> to integrate MKL, </strong>please click the compiler option as below, change the "No" to value like /Qmkl:parallel or /Qmkl:sequential<br /><strong><img src="http://software.intel.com/file/21492" alt="OneButton_IVF.jpg" title="OneButton_IVF.jpg" /><br /></strong></p>
<p><br />Please note: some interface libraries (i.e. mkl_lapack95.lib mkl_blas95.lib fftw3xc_ms) are not MKL standard library, so the "one button" integration don't support it.  You may add them manually if you need to use them. <br /><strong><br />Step 5: About Compaq*Visual Fortran support and porting from 32bit to 64bit</strong> <strong>(Optional for who have used CVF)<br /></strong>CVF and Intel Fortran compiler use different call convention by default:<br />CVF: stdcall <br />Intel Fortran, C Compiler: cdecl (default interface of the Microsoft Visual C* application) <br /><br /><strong>5.1)</strong> MKL support both of them on ia32 platform, but if you are porting from CVF to intel Fortran, you may take care of the required library: mkl_intel_s or mkl_intel_c.lib</p>
<ul>
<li>Using the CVF compiler<br />The CVF compiler will link with mkl_intel_s[_dll].lib if routines are compiled with the default interface. However, if you compile with the option /iface=(cref,nomixed_str_len_arg), the compiler will link with mkl_intel_c[_dll].lib . </li>
<li>Using the Intel® Fortran compiler<br />The Intel Fortran compiler will link with mkl_intel_c[_dll].lib by default. But if the /Gm option is used, call mkl_intel_s  [_dll].lib (/Gm enables CVF and Powerstation calling convention compatibility, so does /iface:cvf).</li>
</ul>
<p><strong>5.2)</strong> MKL don't provide em64t and IA64 CVF interface support.  So if you are porting CVF 32bit application to X64 or IA64 platform with Intel Fortran compiler and MKL. Please note, you must to link "mkl_intel_lp64|ilp64, mkl_intel_thread, mkl_core.lib" and remove the compiler option /Gm or /iface:cvf.<br /><br />Here is a MSVC 2005 project (Intel® Fortran 11.0.0.074 IA32 application) for your reference. <a href="http://software.intel.comjavascript:void(0)" onclick="ndownload('http://software.intel.com/file/21493')"><strong>DFT_VF_sample.zip</strong></a><br /><br /><strong>Troubleshooting<br /></strong>When build the project, <br />1. <strong>fatal error LNK1104: cannot open file 'mkl_xxx.lib'<br /></strong>please make sure the library is in the library path and the path you marked in step 3 or step 4 is right<br /><br />2. <strong>"error #7002: Error opening the compiled module file.  Check INCLUDE paths. [MKL_DFTI]."<br /></strong>Please add the header file mkl_dfti.f90 in your code, for example, <br /><br />! Include to build module MKL_DFTI<br />INCLUDE 'mkl_dfti.f90'<br />before  the code line<br />USE MKL_DFTI<br /><br />Or copy the mkl_dfti.f90 file to the source directory of your project and include it in your Project.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/how-to-build-mkl-application-in-intel-visual-fotran-msvc2005/</link>
      <pubDate>Thu, 05 Nov 2009 08:00:00 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/how-to-build-mkl-application-in-intel-visual-fotran-msvc2005/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/how-to-build-mkl-application-in-intel-visual-fotran-msvc2005/</guid>
      <category>Intel® Math Kernel Library Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Using Intel® MKL in your Python program</title>
      <description><![CDATA[ <b>Introduction</b><br /><br />This article describes how to use the Intel® Math Kernel Library (Intel® MKL) from a Python program. There's more than one way to write Python programs to interface with native libraries. I've simply chosen one so that I can emphasize what might be less commonly known: how to build a custom shared library from Intel MKL so that you can call it from your script. <br /><br />I'll run through the basics steps of accessing Intel MKL from Python 2.6 on a 64-bit Linux OS. The example program calls the CBLAS interface to the DGEMM function which performs a multiplication (and optional add) on general, double precision matrices. Much more about these functions can be found in the Intel® MKL reference manual (<a href="http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/">available online here</a>). <br /><br /><i>Update</i>: With Intel MKL 10.3 there is a new dynamic library which removes the need to create your own custom library. So if you're a 10.3 user you don't need to do step 1 below. To make some changes in the behavior of this library you can look up these routines in the reference manual: mkl_set_interface_layer, mkl_set_threading_layer, mkl_set_xerbla, and mkl_set_progress.<br /><br /><ol>
<li><b>Build a custom library (<i>now unnecessary with Intel MKL 10.3</i>):</b> To interface with Intel MKL from Python we recommend you use the custom library builder in the tools/builder sub-directory of the Intel MKL package. The Intel® MKL User's Guide has documentation on this tool (<a href="http://software.intel.com/en-us/articles/intel-math-kernel-library-documentation/">docs online</a>). Here briefly are the steps I took to do this: <br /><br /><ol>
<li>Set up your environment to use the desired version of Intel MKL:<br /><code>source /<i>&lt;MKLpath&gt;</i>/tools/environment/mklvarsem64t.sh</code></li>
<li>Build the DLL:<br /><code>cd /<i>&lt;MKLpath&gt;</i>/tools/builder</code><br /><code>make em64t name=~/libmkl4py export=cblas_list</code> </li>
</ol></li>
<br />
<li><b>Add library paths to LD_LIBRARY_PATH: </b>All the Intel MKL libraries needed must be in directories contained in the LD_LIBRARY_PATH environment variable. The library as built above will depend on the OpenMP* threading runtime library used by Intel MKL (libiomp5.so) so you should make sure that both libraries, libmkl4py.so and libiomp5.so, are in a directory specified in the LD_LIBRARY_PATH environment variable. If you're using Intel MKL 10.3 you need to add the directories for both libmkl_rt.so and libiomp5.so (if you want it to run on multiple cores). </li>
<br />
<li><b>Call Intel MKL in your Python script:</b> The following is a simple script (also available <a href="http://software.intel.com/file/22334">here</a>) that loads the shared library just created and calls the matrix function. <br />
<ul>
<code></code>
<pre name="code" class="python">from ctypes import *<br /><br /># Load the share library<br />mkl = cdll.LoadLibrary("./libmkl_rt.so")<br /># For Intel MKL prior to version 10.3 us the created .so as below<br /># mkl = dll.LoadLibrary("./libmkl4py.so")<br />cblas_dgemm = mkl.cblas_dgemm<br />
<br />def print_mat(mat, m, n):<br />  for i in xrange(0,m):<br />    print " ",<br />    for j in xrange(0,n):<br />      print mat[i*n+j],<br />    print <br /><br /># Initialize scalar data<br />Order = 101  # 101 for row-major, 102 for column major data structures<br />TransA = 111 # 111 for no transpose, 112 for transpose, and 113 for conjugate transpose<br />TransB = 111<br />m = 2<br />n = 4<br />k = 3<br />lda = k<br />ldb = n<br />ldc = n<br />alpha = 1.0<br />beta = -1.0<br /><br /># Create contiguous space for the double precision array<br />amat = c_double * 6      <br />bmat = c_double * 12<br />cmat = c_double * 8<br /><br /># Initialize the data arrays<br />a = amat(1,2,3, 4,5,6)<br />b = bmat(0,1,0,1, 1,0,0,1, 1,0,1,0)<br />c = cmat(5,1,3,3, 11,4,6,9)<br /><br />print "\nMatrix A ="<br />print_mat(a,2,3) <br />print "\nMatrix B ="<br />print_mat(b,3,4)<br />print "\nMatrix C ="<br />print_mat(c,2,4)<br /><br />print "\nCompute", alpha, "* A * B + ", beta, "* C"<br /><br /># Call Intel MKL by casting scalar parameters and passing arrays by reference<br />cblas_dgemm( c_int(Order), c_int(TransA), c_int(TransB), \<br />             c_int(m), c_int(n), c_int(k), c_double(alpha), byref(a), c_int(lda), \<br />             byref(b), c_int(ldb), c_double(beta), byref(c), c_int(ldc))<br /><br />print_mat(c,2,4)<br />print</pre>
</ul>
</li>
<li>A few notes: 
<ul>
<li>Matrices in the BLAS and LAPACK parts of Intel MKL are stored in one dimensional arrays and integers are used to specify their geometry. </li>
<li>I've actually loaded here CBLAS interface to the general matrix multiply function which allows you to choose how the matrix is specified. In my script I've listed the matrix by rows (row-major ordering). If you do not use the cblas interface to the BLAS or if you use LAPACK you should keep in mind that these functions assume the Fortran method of listing matrices by columns (column-major ordering).</li>
</ul>
</li>
</ol>Here is the Python code I created that implements the steps above: <a href="http://software.intel.com/file/22334">matmult.py</a><br /><br /><strong>Examples code:</strong><br /><br />
<p>We extended the list of examples demonstrate how possible to call different ( not only widespread example like dgemm ) from the Python program:</p>
<p>See the list of 3 different examples attached:<br />dft.zip  - shows the Python program calls 1D DFTI API<br />spblas.zip - shows how to call  matrix-matrix multiplication routine for a sparse matrix stored in the block compressed format (BSR)<br />vsl.zip - shows how to call vdRngGaussian routine ( generates normally distributed random numbers)  from VSL domain.</p>
<p><strong>Notes:<br /></strong>Each zip file contains  *.res and *_list files mean input file and file for custom library building correspondingly</p>
<div></div> ]]></description>
      <link>http://software.intel.com/en-us/articles/using-intel-mkl-in-your-python-programs/</link>
      <pubDate>Mon, 21 Sep 2009 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/using-intel-mkl-in-your-python-programs/#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/using-intel-mkl-in-your-python-programs/</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® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
  </channel></rss>
