<?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 Cryptic error msg: offload error: cannot offload to MIC - device is not available in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968660#M23441</link>
    <description>&lt;P&gt;Cryptic error msg: offload error: cannot offload to MIC - device is not available "offload error: cannot offload to MIC - device is not available" Could anyone please help me understand what this error message means? Code attempts to offload execution using "pragma offload": Sample code posted by Naik Sumedh in the thread below. &lt;A href="http://software.intel.com/en-us/forums/topic/369458" target="_blank"&gt;http://software.intel.com/en-us/forums/topic/369458&lt;/A&gt; Compilation succeeds: $ source ${path_to_icc}/compilervars.sh intel64 $ icc test1.cpp -o test1 KNC card is up and running: $ /usr/sbin/micctrl -w mic0: online SSH to MIC works alright. I can run native code on the KNC card. Yet, when I attempt to run the executable with offload pragmas on the host I get: $ ./test1 offload error: cannot offload to MIC - device is not available Any ideas why the device appears to be unavailable? Thanks, Nick&lt;/P&gt;</description>
    <pubDate>Tue, 12 Mar 2013 05:57:00 GMT</pubDate>
    <dc:creator>Mikalai_K_Intel</dc:creator>
    <dc:date>2013-03-12T05:57:00Z</dc:date>
    <item>
      <title>Cryptic error msg: offload error: cannot offload to MIC - device is not available</title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968660#M23441</link>
      <description>&lt;P&gt;Cryptic error msg: offload error: cannot offload to MIC - device is not available "offload error: cannot offload to MIC - device is not available" Could anyone please help me understand what this error message means? Code attempts to offload execution using "pragma offload": Sample code posted by Naik Sumedh in the thread below. &lt;A href="http://software.intel.com/en-us/forums/topic/369458" target="_blank"&gt;http://software.intel.com/en-us/forums/topic/369458&lt;/A&gt; Compilation succeeds: $ source ${path_to_icc}/compilervars.sh intel64 $ icc test1.cpp -o test1 KNC card is up and running: $ /usr/sbin/micctrl -w mic0: online SSH to MIC works alright. I can run native code on the KNC card. Yet, when I attempt to run the executable with offload pragmas on the host I get: $ ./test1 offload error: cannot offload to MIC - device is not available Any ideas why the device appears to be unavailable? Thanks, Nick&lt;/P&gt;</description>
      <pubDate>Tue, 12 Mar 2013 05:57:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968660#M23441</guid>
      <dc:creator>Mikalai_K_Intel</dc:creator>
      <dc:date>2013-03-12T05:57:00Z</dc:date>
    </item>
    <item>
      <title>The test case includes the</title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968661#M23442</link>
      <description>&lt;P&gt;The test case includes the explicit card expression "mic:0" so if the card is unavailable that will produce the error. The error indicates the offload run-time received indication the card is not available. Can you show what version of the compiler you have with &lt;STRONG&gt;icc -V&lt;/STRONG&gt; ?&lt;/P&gt;
&lt;P&gt;Can you set the environment variable using&amp;nbsp;&lt;STRONG&gt;export OFFLOAD_REPORT=3&lt;/STRONG&gt; and run test1 and post any output? If you have version 2013.1.117 you may not receive output. The latest 2013.2.146 (Update 2) may be needed to see OFFLOAD_REPORT output that shows details other than timing info.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Mar 2013 13:06:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968661#M23442</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2013-03-12T13:06:43Z</dc:date>
    </item>
    <item>
      <title>Hi Mikalai, </title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968662#M23443</link>
      <description>&lt;P&gt;Hi Mikalai,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code works for me. I used icc version 13.1.0 (Composer_xe_2013.2.146). Just as Kevin suggested, OFFLOAD_REPORT=3 would give you a better idea of what's going on.&amp;nbsp;You could also try restarting the MPSS to see if that makes the problem go away.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-Sumedh&lt;/P&gt;</description>
      <pubDate>Tue, 12 Mar 2013 15:42:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968662#M23443</guid>
      <dc:creator>Sumedh_N_Intel</dc:creator>
      <dc:date>2013-03-12T15:42:03Z</dc:date>
    </item>
    <item>
      <title>Kevin and Sumedh,</title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968663#M23444</link>
      <description>&lt;P&gt;Kevin and Sumedh,&lt;BR /&gt;&lt;BR /&gt;I appreciate your help!&lt;BR /&gt;&lt;BR /&gt;The compiler I used yesterday was an older version that doesn't support OFFLOAD_REPORT:&lt;BR /&gt;$ icc -V&lt;BR /&gt;Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0.0.079 Build 20120731&lt;BR /&gt;Copyright (C) 1985-2012 Intel Corporation.&amp;nbsp; All rights reserved.&lt;BR /&gt;&lt;BR /&gt;That said, I'm not sure if it's really the compiler or the card that was misbehaving.&lt;BR /&gt;Today I have moved to another server that has a newer compiler installed:&lt;BR /&gt;&lt;BR /&gt;&amp;gt; icc -V&lt;BR /&gt;Intel(R) C Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.0.146 Build 20130121&lt;BR /&gt;Copyright (C) 1985-2013 Intel Corporation.&amp;nbsp; All rights reserved.&lt;BR /&gt;&lt;BR /&gt;With this compiler and another KNC card Sumedh's offload example seems to work alright:&lt;BR /&gt;&lt;BR /&gt;&amp;gt; ./test3 &lt;BR /&gt;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 &lt;BR /&gt;0 0 0 0 0 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 &lt;BR /&gt;&lt;BR /&gt;I will investigate the KNC card differences later since I have to share servers with other developers who also need to work. For now, I would appreciate if you could explain to me what [5:5] syntax means in the following pragma from that example:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; #pragma offload target(mic:0) \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; in(my_array[5:5] : into(my_array[5:5]) \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alloc_if(0) free_if(0))&lt;BR /&gt;&lt;BR /&gt;Since I need to update 5th through 9th value in the array, isn't it supposed to be this?&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; #pragma offload target(mic:0) \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; in(my_array[5:9] : into(my_array[5:9]) \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; alloc_if(0) free_if(0))&lt;/P&gt;
&lt;P&gt;Is there any reference documentation that documents all these useful pragmas, their meaning, and the underlying COI library? For example, I would like to find out answers to the following questions:&lt;/P&gt;
&lt;P&gt;+ How much overhead do I introduce by using "#pragma offload" compared to using COI library calls.&lt;/P&gt;
&lt;P&gt;+ Is there any documentation for COI API? I've found documentation for the SKIF interface but it is too low-level. I don't think that application developers want to explicitly deal with cache lines and memory layouts. It's like programming assembly. My understanding is that COI interface simplifies it quite a bit. Am I right on this?&lt;/P&gt;
&lt;P&gt;+ If my array needs only 5% of random entries to be updated and I start updating them one-by-one using syntax like my_array[5:5], am I going to be swamped by some overheads? My application area is the large-scale circuit simulation where the array stores a huge sparse 2D matrix. Only a small percentage of entries change from one simulation step to the next. But the location of changes is dependent on circuit activity and therefore unpredictable in advance. Would one-by-one pragma's suffice for such a data transfer or should I program in COI or in SKIF?&lt;/P&gt;
&lt;P&gt;I really appreciate your expert advice on this.&lt;BR /&gt;Thank you!&lt;BR /&gt;Nick&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Mar 2013 06:47:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968663#M23444</guid>
      <dc:creator>Mikalai_K_Intel</dc:creator>
      <dc:date>2013-03-13T06:47:09Z</dc:date>
    </item>
    <item>
      <title>I cannot speak with any</title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968664#M23445</link>
      <description>&lt;P&gt;I cannot speak with any authority about COI/SCIF. That’s always been invisible from my compiler/offload perspective.&lt;/P&gt;
&lt;P&gt;The syntax you cited is using an &lt;I&gt;array-slice&lt;/I&gt; that is discussed in the UG under the offload pragma. The syntax of the array-slice is: &lt;STRONG&gt;&lt;I&gt;variable-name &lt;/I&gt;&lt;/STRONG&gt;[ &amp;lt;starting element&amp;gt; :&amp;nbsp; &amp;lt;element count&amp;gt; ]&lt;/P&gt;
&lt;P&gt;To update the 5th to 9th values in the array, you would use: my_array[4:5]. (Starting at 4 since my_array[0] is the 1&lt;SUP&gt;st&lt;/SUP&gt; value)&lt;/P&gt;
&lt;P&gt;I do not know whether the partial transfers would be swamped w/overhead. Retaining memory and only updating values I believe reduces some associated allocation/deallocation overhead. I can inquire w/development about this.&lt;/P&gt;
&lt;P&gt;Is it possible to move the code updating the 5% into the offload execution also so you might only need to upload the full array once at the beginning and perhaps download once at the end?&lt;/P&gt;</description>
      <pubDate>Wed, 13 Mar 2013 11:36:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968664#M23445</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2013-03-13T11:36:00Z</dc:date>
    </item>
    <item>
      <title>Here are the compiler</title>
      <link>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968665#M23446</link>
      <description>&lt;P&gt;Here are the compiler Developer's comments that I received:&lt;/P&gt;
&lt;P&gt;The example shows alloc_if(0)/free_if(0) so no new memory is allocated, so no overhead. Only the “length” amount of data is transferred.&lt;/P&gt;
&lt;P&gt;There won’t be a significant difference in data transfer time between [the] compiler and COI.&lt;/P&gt;
&lt;P&gt;Transferring small amounts of data, especially single elements, will give poor performance results overall.&lt;/P&gt;
&lt;P&gt;(In reply my asking whether the virtual shared model might be better suited) Yes, he might be better off using &lt;B&gt;_Cilk_shared&lt;/B&gt;, if the program is written in C. Fortran is not supported at all, and C++ can lead to complications with separating the shared and non-shared data.&lt;/P&gt;</description>
      <pubDate>Thu, 14 Mar 2013 07:33:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Cryptic-error-msg-offload-error-cannot-offload-to-MIC-device-is/m-p/968665#M23446</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2013-03-14T07:33:30Z</dc:date>
    </item>
  </channel>
</rss>

