<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MKL automatic offload  in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920714#M13348</link>
    <description>&lt;P&gt;I started to play with AO, using an example code&amp;nbsp;dgemm_with_timing.F (attached). With MKL_MIC_ENABLE=1, OFFLOAD_REPORT=2, and matrix size M/N=4000 being large enough for AO, the code should automatically offload and provide the offload info, but I didn't see the report. Isn't&amp;nbsp;OFFLOAD_REPORT=2 supposed to provide the offload profiling&amp;nbsp;report level for any offload, including Intel MKL AO? Or is it possible that the code is not offloaded at all? The timing does not vary much with different&amp;nbsp;MIC_OMP_NUM_THREADS I specified, so it could be. What did I miss?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I compiled with&lt;/P&gt;
&lt;P&gt;ifort -mkl -offload-build -offload-copts="-vec-report3" dgemm_with_timing.F&lt;/P&gt;
&lt;P&gt;and ran with&lt;/P&gt;
&lt;P&gt;setenv MKL_MIC_ENABLE 1&lt;BR /&gt;setenv MIC_ENV_PREFIX MIC&lt;BR /&gt;setenv OFFLOAD_REPORT 2&lt;BR /&gt;setenv HOST_WORKDIVISION 0&lt;BR /&gt;setenv MKL_MIC0_WORKDIVISION 100&lt;BR /&gt;setenv MIC_OMP_NUM_THREADS 236&lt;BR /&gt;a.out&lt;/P&gt;
&lt;P&gt;..........&lt;/P&gt;
&lt;P&gt;Number of Target devices installed: 1&lt;/P&gt;
&lt;P&gt;Intializing matrix data&lt;BR /&gt; &lt;BR /&gt; Making the first run of matrix product using &lt;BR /&gt; Intel(R) MKL DGEMM subroutine to get stable &lt;BR /&gt; run time measurements&lt;BR /&gt; &lt;BR /&gt; Measuring performance of matrix product using &lt;BR /&gt; Intel(R) MKL DGEMM subroutine&lt;BR /&gt; &lt;BR /&gt; == Matrix multiplication using Intel(R) MKL DGEMM ==&lt;BR /&gt; == completed at 27.83520 milliseconds ==&lt;BR /&gt; &lt;BR /&gt; It is highly recommended to set parameter LOOP_COUNT &lt;BR /&gt; for this example on your computer as 36 to have &lt;BR /&gt; total execution time about 1 second for reliability&lt;BR /&gt; of measurements&lt;/P&gt;
&lt;P&gt;Example completed.&lt;/P&gt;
&lt;P&gt;No offload report appear after the run complets. Any idea?&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 04 Apr 2013 17:51:33 GMT</pubDate>
    <dc:creator>D__Pan</dc:creator>
    <dc:date>2013-04-04T17:51:33Z</dc:date>
    <item>
      <title>MKL automatic offload</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920714#M13348</link>
      <description>&lt;P&gt;I started to play with AO, using an example code&amp;nbsp;dgemm_with_timing.F (attached). With MKL_MIC_ENABLE=1, OFFLOAD_REPORT=2, and matrix size M/N=4000 being large enough for AO, the code should automatically offload and provide the offload info, but I didn't see the report. Isn't&amp;nbsp;OFFLOAD_REPORT=2 supposed to provide the offload profiling&amp;nbsp;report level for any offload, including Intel MKL AO? Or is it possible that the code is not offloaded at all? The timing does not vary much with different&amp;nbsp;MIC_OMP_NUM_THREADS I specified, so it could be. What did I miss?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I compiled with&lt;/P&gt;
&lt;P&gt;ifort -mkl -offload-build -offload-copts="-vec-report3" dgemm_with_timing.F&lt;/P&gt;
&lt;P&gt;and ran with&lt;/P&gt;
&lt;P&gt;setenv MKL_MIC_ENABLE 1&lt;BR /&gt;setenv MIC_ENV_PREFIX MIC&lt;BR /&gt;setenv OFFLOAD_REPORT 2&lt;BR /&gt;setenv HOST_WORKDIVISION 0&lt;BR /&gt;setenv MKL_MIC0_WORKDIVISION 100&lt;BR /&gt;setenv MIC_OMP_NUM_THREADS 236&lt;BR /&gt;a.out&lt;/P&gt;
&lt;P&gt;..........&lt;/P&gt;
&lt;P&gt;Number of Target devices installed: 1&lt;/P&gt;
&lt;P&gt;Intializing matrix data&lt;BR /&gt; &lt;BR /&gt; Making the first run of matrix product using &lt;BR /&gt; Intel(R) MKL DGEMM subroutine to get stable &lt;BR /&gt; run time measurements&lt;BR /&gt; &lt;BR /&gt; Measuring performance of matrix product using &lt;BR /&gt; Intel(R) MKL DGEMM subroutine&lt;BR /&gt; &lt;BR /&gt; == Matrix multiplication using Intel(R) MKL DGEMM ==&lt;BR /&gt; == completed at 27.83520 milliseconds ==&lt;BR /&gt; &lt;BR /&gt; It is highly recommended to set parameter LOOP_COUNT &lt;BR /&gt; for this example on your computer as 36 to have &lt;BR /&gt; total execution time about 1 second for reliability&lt;BR /&gt; of measurements&lt;/P&gt;
&lt;P&gt;Example completed.&lt;/P&gt;
&lt;P&gt;No offload report appear after the run complets. Any idea?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Apr 2013 17:51:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920714#M13348</guid>
      <dc:creator>D__Pan</dc:creator>
      <dc:date>2013-04-04T17:51:33Z</dc:date>
    </item>
    <item>
      <title>It seems you are using an</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920715#M13349</link>
      <description>&lt;P&gt;It seems you are using an older version of the compiler and the libraries. The -offload-build and -offload-copts switches have been deprecated. Also the environment variables have changed. Could you please upgrade your compiler and libraries and, check if you still see a problem?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please refer to the following documentation for more information:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Fortran Reference Manual:&amp;nbsp;&lt;A href="http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/fortran-lin/index.htm"&gt;http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/fortran-lin/index.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;MKL reference Manual:&amp;nbsp;&lt;A href="http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/index.htm"&gt;http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/index.htm&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;MKL Environment Variables for Intel MIC architecture:&amp;nbsp;&lt;A href="http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm"&gt;http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Apr 2013 19:48:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920715#M13349</guid>
      <dc:creator>Sumedh_N_Intel</dc:creator>
      <dc:date>2013-04-04T19:48:47Z</dc:date>
    </item>
    <item>
      <title>OFFLOAD_REPORT is a common</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920716#M13350</link>
      <description>&lt;P&gt;OFFLOAD_REPORT is a common setting for Intel MKL and Intel Compilers. It specifies the profiling report level for any offload, including Intel MKL Automatic Offload. But OFFLOAD_REPORT support for AO is only available in very recent MKL versions (starting 11.0.2). Which version of MKL are you using?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 10 Apr 2013 22:29:11 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920716#M13350</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2013-04-10T22:29:11Z</dc:date>
    </item>
    <item>
      <title>Thank you both, Sumedh and</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920717#M13351</link>
      <description>&lt;P&gt;Thank you both, Sumedh and Zhang. I wanted to post a message a couple of days ago, but my message was repeadedly rejected by spam filter. I will try one more time.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes I was using Intel Fortran13.0.1.117 and now I am using 13.1.163 per Sumedh's suggestion. But it turned out that the compiler version is NOT the problem -- the matrix size is.&lt;/P&gt;
&lt;P&gt;According to the Intel article (http://software.intel.com/en-us/articles/types-of-applications-that-benefit-from-mkl-for-xeon-phi), ?GEMM routines enables AO only when M, N &amp;gt; 2048. So given C(M,N)=alpha*A(M,K)*B(K,N), I set matrix sizes of A (4000,200) and B(200,4000), thinking they were large enough for AO. But I was wrong. I found that K has to be at least 300 for the offloading to be triggered. In addition, even with M/N=1600 and K=300, the offload still occurs, which means the article is quite misleading.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Apr 2013 18:47:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920717#M13351</guid>
      <dc:creator>D__Pan</dc:creator>
      <dc:date>2013-04-12T18:47:10Z</dc:date>
    </item>
    <item>
      <title>For ?GEMM routines automatic</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920718#M13352</link>
      <description>&lt;P&gt;For ?GEMM routines automatic offload, K has to be at least 256, both M and N have to be at least 2048. You are right, it's our bad not including the requirement for K in the online article. I'll fix it in the next version.&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 15 Apr 2013 16:40:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920718#M13352</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2013-04-15T16:40:14Z</dc:date>
    </item>
    <item>
      <title>That explains it. When I had</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920719#M13353</link>
      <description>&lt;P&gt;That explains it. When I had replied to this post, I had made it a point to check if the matices met the size requirements. So I figured it must be an older compiler. &amp;nbsp;Thank you Zhang for answering that.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 15 Apr 2013 16:56:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920719#M13353</guid>
      <dc:creator>Sumedh_N_Intel</dc:creator>
      <dc:date>2013-04-15T16:56:58Z</dc:date>
    </item>
    <item>
      <title>I tried the original non</title>
      <link>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920720#M13354</link>
      <description>&lt;P&gt;I tried the original non-automatic offload syntax recently, and it was still working.&amp;nbsp; It allows for the case of making the "C" matrix explicitly out only for the case of pure matrix multitplication (beta==0).&amp;nbsp; Of course, when the automatic offload criteria aren't met, it's no surprise when performance is unsatisfactory.&amp;nbsp; The hand-optimized code on MIC can still be effective for K as small as 32 (compared with open source compiled matrix multiplication), but the data shuffling and the relatively high performance of MKL on multi-core host make off-loading of an individual ?gemm case unproductive.&lt;/P&gt;</description>
      <pubDate>Mon, 15 Apr 2013 19:57:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/MKL-automatic-offload/m-p/920720#M13354</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2013-04-15T19:57:20Z</dc:date>
    </item>
  </channel>
</rss>

