<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Wed, 25 Nov 2009 14:28:45 -0800 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/en-us/articles/dpd-general/type/compatibility/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network articles feed</title>
    <link>http://software.intel.com/en-us/articles/dpd-general/compatibility/</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Intel Architecture Platform Terminology for Development Tools</title>
      <description><![CDATA[ <p>Intel® compilers and libraries support three platforms: general combinations of processor architecture and operating system type. This section explains the terms that Intel uses to describe the platforms in its documentation, installation procedures and support site.  <strong>Note:</strong> not all Intel software development tools support all three platforms.</p>
<p><strong>IA-32 Architecture</strong> refers to systems based on 32-bit processors generally compatible with the Intel Pentium® II processor, (for example, Intel® Pentium® 4 processor or Intel® Xeon® processor), or processors from other manufacturers supporting the same instruction set, running a 32-bit operating system.</p>
<p><strong>Intel® 64 Architecture</strong> (formerly Intel® EM64T)refers to systems based on IA-32 architecture processors which have 64-bit architectural extensions, (for example, Intel® Core™2 processor family), running a 64-bit operating system such as Microsoft Windows Vista* x64 or a Linux* "x86_64" variant. If the system is running a 32-bit  operating system, then IA-32 architecture applies instead. Systems based on AMD* processors running a 64-bit operating system are also supported by Intel compilers for Intel® 64 architecture applications.</p>
<p>64-bit computing on Intel architecture requires a computer system with a processor, chipset, BIOS, operating system, device drivers and applications enabled for Intel® 64 architecture. Performance will vary depending on your hardware and software configurations. Consult with your system vendor for more information.</p>
<p><strong>IA-64 Architecture</strong> refers to systems based on the Intel® Itanium® processor running a 64-bit operating system.</p> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology</link>
      <pubDate>Thu, 12 Feb 2009 07:48:07 -0800</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-architecture-platform-terminology#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-architecture-platform-terminology</guid>
      <category>Software Products General</category>
      <category>Intel® Parallel Advisor</category>
      <category>Intel® C++ Compiler for Linux* Knowledge Base</category>
      <category>Intel® C++ Compiler for Windows* Knowledge Base</category>
      <category>Intel® Software Development Tool Suites for Intel® Atom™ Processor 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>
      <category>Intel® Parallel Amplifier Knowledge Base</category>
      <category>Intel® Parallel Composer Knowledge Base</category>
      <category>Intel® Parallel Inspector Knowledge Base</category>
      <category>Intel® Thread Checker for Windows* Knowledge Base</category>
      <category>Intel® Thread Profiler for Windows* Knowledge Base</category>
      <category>Intel® Threading Building Blocks Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Linux* Knowledge Base</category>
      <category>Intel® Trace Analyzer and Collector for Windows* Knowledge Base</category>
      <category>Intel® Visual Fortran Compiler for Windows* Knowledge Base</category>
    </item>
    <item>
      <title>Intel® C++ Compiler for Linux* - Are the libraries thread safe?</title>
      <description><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<table border="0" cellspacing="15" cellpadding="0"><tr><td class="bodycopy"><p>The Intel provided C++ libraries are thread safe.
<br><br>For mixed C/C++ and Fortran applications, note that the Intel provided Fortran libraries, libifcore is not thread safe. Due to performance reasons, a thread-safe and non-thread-safe version of the library is provided. libifcoremt is the thread-safe versions of the library. Consult the Intel&reg; Fortran documentation for additional details.
<br><br></p></td></tr></table>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td><img src="http://software.intel.com/file/6324" width="388" height="5"></td></tr>
<tr><td height="10"></td></tr>
</table>
</body></html>
 ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-c-compiler-for-linux-are-the-libraries-thread-safe</link>
      <pubDate>Fri, 19 Sep 2008 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-c-compiler-for-linux-are-the-libraries-thread-safe#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-c-compiler-for-linux-are-the-libraries-thread-safe</guid>
      <category>Software Products General</category>
    </item>
    <item>
      <title>Intel® Math Kernel Library (Intel® MKL) - BLAS, CBLAS and LAPACK Compiling/Linking Functions &amp;Fortran and C/C++ Calls</title>
      <description><![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<table border="0" cellspacing="15" cellpadding="0"><tr><td class="bodycopy">
<p><strong>Page Contents:</strong></p>
<ul>
<li><a href="#1">Intel® Math Kernel Library use with C and Fortran languages. Calling LAPACK, BLAS, and CBLAS routines from C language environments.</a></li>
<li><a href="#3">How to Call BLAS Functions that Return the Complex Values in C/C++ Code</a></li>
<li><a href="#4">Example 1: Calling a Complex BLAS Level 1 Function from C</a></li>
<li><a href="#5">Example 2: Calling a Complex BLAS Level 1 Function from C++</a></li>
<li><a href="#6">Example 3: Using the CBLAS Interface Instead of Calling BLAS Directly from C Programs</a></li>
</ul>
<br><a name="1"></a><strong>Intel® Math Kernel Library use with C and Fortran languages. Calling LAPACK, BLAS, and CBLAS routines from C language environments.</strong><br>The Intel Math Kernel Library is provided in C and Fortran environments. Not all of the Intel® MKL sub-libraries support both environments. In order to use these sub-libraries in both environments some "rules" need to be observed.
<br><br><table cellspacing="0" cellpadding="5" width="552" border="0">
<tr>
<td class="bodycopy" valign="top" align="left" bgcolor="#EFEFEF"><strong>LAPACK</strong></td>
<td class="bodycopy" valign="top" align="left" bgcolor="#EFEFEF">When calling LAPACK routines from C-language programs, make sure that you follow Fortran rules: Pass variables by 'address' as opposed to pass by 'value'. Be sure to store your data Fortran-style, i.e. data stored column-major rather than row-major order.</td>
</tr>
<tr>
<td class="bodycopy" valign="top" align="left"><strong>BLAS</strong></td>
<td class="bodycopy" valign="top" align="left">BLAS routines are Fortran-style routines. If you call BLAS routines from a C-language program you must follow the Fortran-style calling conventions: Pass variables by address as opposed to passing by value. Be sure to store data Fortran-style, i.e. data stored column-major rather than row-major order. An alternative to calling BLAS routines from a C-language program is to use the CBLAS interface.</td>
</tr>
<tr>
<td class="bodycopy" valign="top" align="left" bgcolor="#EFEFEF"><strong>CBLAS</strong></td>
<td class="bodycopy" valign="top" align="left" bgcolor="#EFEFEF">CBLAS routines are provided as the C-style interface to the BLAS routines. Call CBLAS routines using regular C-style calls. When using the CBLAS interface, the header file mkl.h will simplify the programmer's development as it specifies enumerated values as well as prototypes of all the functions. The header determines if the program is being compiled with a C++ compiler, and if it is, the included file will be correct for use with C++ compilation.</td>
</tr>
<tr>
<td class="bodycopy" valign="top" align="left"><strong>MKL.H</strong></td>
<td class="bodycopy" valign="top" align="left">When using the CBLAS interface, the header file mkl.h will simplif
y the program development since it specifies enumerated values as well as prototypes of all the functions. The header determines if the program is being compiled with a C++ compiler, and if it is, the included file will be correct for use with C++ compilation.</td>
</tr>
</table>
<br><br><br><a name="2"></a><strong>How to Call BLAS Functions that Return the Complex Values in C/C++ Code</strong><br>Calling complex BLAS function which return complex values from C must be handled carefully. The problem arises because these are Fortran functions, and the return values are handled quite differently for the two languages (C and Fortran) for complex values. Because Fortran lets you call functions as though they were subroutines, however, there is a mechanism for returning the complex value correctly when the function is called from a C program. When a Fortran function is called as a subroutine, the return value shows up as the first parameter in the calling sequence - a feature that can be exploited by the C programmer.
<br><br>The following example, for cdotc(), shows how this works. The function from Fortran is called as:
<blockquote>result = cdotc( n, x, 1, y, 1 )</blockquote>But as a subroutine it can be called as: call cdotc( result, n, x, 1, y, 1) From C this would look like: cdotc( &amp;result, &amp;n, x, &amp;one, y, &amp;one ) where the hidden parameter is exposed.
<br><br><strong>Note:</strong> Intel® MKL has both upper case and lower case entry points in the BLAS so either all upper case or all lower case names are acceptable.
<br><br>Using this form the several level 1 BLAS functions that return complex values can be called from C, and thus, from C++. However, it is still easier to use the cblas interface. For instance, to call the same function using the cblas interface, the user would use:
<blockquote>cblas_cdotu( n, x, 1, y, 1, &amp;result )</blockquote>
<strong>Note:</strong> The complex value comes back expressly in this case.
<br><br><br><a name="4"></a><strong>Example 1: Calling a Complex BLAS Level 1 Function from C</strong><br>/* The following example illustrates a call from a C program to the complex BLAS Level 1 function zdotc(). This function computes the dot product of two double-precision complex vectors.
<br><br>In this example, the complex dot product is returned in the structure c.
<br>*/
<br>#include "mkl.h"
<br>#define N 5
<br>void main()
<br>{
<br>int n, inca = 1, incb = 1, i;
<br>typedef struct{ double re; double im; } complex16;
<br>complex16 a[N], b[N], c;
<br>void zdotc();
<br>n = N;
<br>for( i = 0; i &lt; n; i++ ){
<br>a[i].re = (double)i; a[i].im = (double)i * 2.0;
<br>b[i].re = (double)(n - i); b[i].im = (double)i * 2.0;
<br>}
<br>zdotc( &amp;c, &amp;n, a, &amp;inca, b, &amp;incb );
<br>printf( "The complex dot product is: ( %6.2f, %6.2f)
", c.re, c.im );
<br>}
<br><br><br><a name="5"></a><strong>Example 2: Calling a Complex BLAS Level 1 Function from C++</strong><br>#include "mkl.h"
<br>typedef struct{ double re; double im; } complex16;
<br>extern "C" void zdotc (complex16*, int *, complex16 *, int *, complex16 *, int *);
<br><br>#define N 5
<br><br>void main()
<br>{
<br>int n, inca = 1, incb = 1, i;
<br><br>complex16 a[N], b[N], c;
<br><br>n = N;
<br>for( i = 0; i &lt; n; i++ ){
<br>a[i].re = (double)i; a[i].im = (double)i * 2.0;
<br>b[i].re = (double)(n - i); b[i].im = (double)i * 2.0;
<br>}
<br>zdo
tc(&amp;c, &amp;n, a, &amp;inca, b, &amp;incb );
<br>printf( "The complex dot product is: ( %6.2f, %6.2f)
", c.re, c.im );
<br>}
<br><br><br><a name="6"></a><strong>Example 3: Using the CBLAS Interface Instead of Calling BLAS Directly from C Programs</strong><br>#include "mkl.h"
<br>typedef struct{ double re; double im; } complex16;
<br><br>extern "C" void cblas_zdotc_sub ( const int , const complex16 *,
<br>    const int , const complex16 *, const int, const complex16*);
<br><br>#define N 5
<br><br>void main()
<br>{
<br><br>int n, inca = 1, incb = 1, i;
<br><br>complex16 a[N], b[N], c;
<br>n = N;
<br>for( i = 0; i &lt; n; i++ ){
<br>a[i].re = (double)i; a[i].im = (double)i * 2.0;
<br>b[i].re = (double)(n - i); b[i].im = (double)i * 2.0;
<br>}
<br>cblas_zdotc_sub(n, a, inca, b, incb,&amp;c );
<br>printf( "The complex dot product is: ( %6.2f, %6.2f)
", c.re, c.im );
<br>}
</td></tr></table>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td><img src="http://software.intel.com/file/6324" width="388" height="5"></td></tr>
<tr><td height="10"></td></tr>
</table>
</body></html>
 ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-blas-cblas-and-lapack-compilinglinking-functions-fortran-and-cc-calls</link>
      <pubDate>Fri, 19 Sep 2008 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-blas-cblas-and-lapack-compilinglinking-functions-fortran-and-cc-calls#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-blas-cblas-and-lapack-compilinglinking-functions-fortran-and-cc-calls</guid>
      <category>Software Products General</category>
    </item>
    <item>
      <title>Processor and Compiler Compatibility</title>
      <description><![CDATA[ <!--CTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dt-->
<table border="0" cellspacing="15" cellpadding="0">
<tbody>
<tr>
<td class="bodycopy">
<p><strong>Processor Compatibility</strong><br /><br /><strong>Using the Intel® Math Kernel Library (Intel® MKL) on Intel Processors</strong><br />Intel MKL is optimized for the latest features and capabilities of the Intel® Pentium® 4 processor, the 64-bit Intel® Xeon™ processor, and the Intel® Itanium® 2 processor. The library selects the correct processor-optimized code at run time for best performance on Intel processors. Please refer to the <a href="http://www.intel.com/software/products/mkl/">product information</a> page for more information. <br /><br /><strong>Using the Intel® Math Kernel Library (Intel® MKL) on non-Intel Processors</strong><br />Intel MKL will run code that provides good performance on AMD* processors using a variety of techniques which may include use of Streaming SIMD Extensions (SSE), SSE-2, and SSE-3 instruction sets and other architecture features. Intel MKL performance will be comparable to that of alternative libraries on AMD. <br /><br /><a name="2"></a><strong>Compiler Compatibility</strong><br /><br />Intel® MKL has parts that have Fortran interfaces and are Fortran in their data structures. Intel MKL also has parts that have C interfaces and have C data structures. For a complete list of supported compilers see the release notes available with the product and on the <a href="http://www.intel.com/software/products/mkl/">product information</a> page.</p>
</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><img src="http://software.intel.com/file/6324" alt="" width="388" height="5" /></td>
</tr>
<tr>
<td height="10"> </td>
</tr>
</tbody>
</table> ]]></description>
      <link>http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-processor-and-compiler-compatibility</link>
      <pubDate>Fri, 19 Sep 2008 00:00:00 -0700</pubDate>
      <comments>http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-processor-and-compiler-compatibility#comments</comments>
      <guid isPermaLink="true">http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-processor-and-compiler-compatibility</guid>
      <category>Software Products General</category>
      <category>Intel® Math Kernel Library Knowledge Base</category>
    </item>
  </channel></rss>