<?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 Atomicity of load operation on ia64 in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854126#M2000</link>
    <description>Is it guaranteed on ia64 architecture in multi-processor environment that a plain load operation would fetch a 64-bit value atomically? In other words, is it possible that if CPU1 stores some value to a 64-bit memory location and CPU2 fetches the value from the same memory location at the same time, the fetched value would be neither one before nor after store operation?&lt;BR /&gt;Thx, ---Greg</description>
    <pubDate>Fri, 30 Jan 2009 15:58:07 GMT</pubDate>
    <dc:creator>ggalperin</dc:creator>
    <dc:date>2009-01-30T15:58:07Z</dc:date>
    <item>
      <title>Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854126#M2000</link>
      <description>Is it guaranteed on ia64 architecture in multi-processor environment that a plain load operation would fetch a 64-bit value atomically? In other words, is it possible that if CPU1 stores some value to a 64-bit memory location and CPU2 fetches the value from the same memory location at the same time, the fetched value would be neither one before nor after store operation?&lt;BR /&gt;Thx, ---Greg</description>
      <pubDate>Fri, 30 Jan 2009 15:58:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854126#M2000</guid>
      <dc:creator>ggalperin</dc:creator>
      <dc:date>2009-01-30T15:58:07Z</dc:date>
    </item>
    <item>
      <title>Re: Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854127#M2001</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
64-bit int load on 64-bit architectures is definitely an atomic operation, unlike 32-bit x86, where it is done by a pair of 32-bit loads.&lt;BR /&gt;</description>
      <pubDate>Sat, 31 Jan 2009 02:46:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854127#M2001</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2009-01-31T02:46:26Z</dc:date>
    </item>
    <item>
      <title>Re: Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854128#M2002</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/380173"&gt;ggalperin&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Is it guaranteed on ia64 architecture in multi-processor environment that a plain load operation would fetch a 64-bit value atomically? In other words, is it possible that if CPU1 stores some value to a 64-bit memory location and CPU2 fetches the value from the same memory location at the same time, the fetched value would be neither one before nor after store operation?&lt;BR /&gt;Thx, ---Greg&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;8-, 16-, 32-, 64-, 128-bit aligned loads and stores are indeed atomic on IA-64.&lt;BR /&gt;However to get them you probably have to use something like SSE intrinsics or assembly.&lt;BR /&gt;&lt;BR /&gt;For details see:&lt;BR /&gt;Intel Itanium Architecture Software Developer's Manual - Volume 2: System Architecture, Revision 2.2&lt;BR /&gt;&lt;A href="http://www.intel.com/design/itanium/manuals/245318.htm"&gt;http://www.intel.com/design/itanium/manuals/245318.htm&lt;/A&gt;&lt;BR /&gt;(4.5 Memory Datum Alignment and Atomicity)&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Sat, 31 Jan 2009 12:41:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854128#M2002</guid>
      <dc:creator>Dmitry_Vyukov</dc:creator>
      <dc:date>2009-01-31T12:41:36Z</dc:date>
    </item>
    <item>
      <title>Re: Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854129#M2003</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/347331"&gt;Dmitriy Vyukov&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; &lt;BR /&gt;8-, 16-, 32-, 64-, 128-bit aligned loads and stores are indeed atomic on IA-64.&lt;BR /&gt;However to get them you probably have to use something like SSE intrinsics or assembly.&lt;BR /&gt;&lt;BR /&gt;For details see:&lt;BR /&gt;Intel Itanium Architecture Software Developer's Manual - Volume 2: System Architecture, Revision 2.2&lt;BR /&gt;&lt;A href="http://www.intel.com/design/itanium/manuals/245318.htm"&gt;http://www.intel.com/design/itanium/manuals/245318.htm&lt;/A&gt;&lt;BR /&gt;(4.5 Memory Datum Alignment and Atomicity)&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Hmmm... Do you sure that you mean exactly IA-64 (i.e. Itanium)? Probably you mean Intel 64 (i.e. x86-64)...&lt;BR /&gt;However, 8-, 16-, 32-, 64-, 128-bit aligned loads and stores are also atomic on IA-32 (i.e. x86) and on Intel 64 (i.e. x86-64). But don't try to extend this to the C language, for example. In order to get 128-bit atomic load/store you have to emit some particular machine instruction, not just plain access to 128-bit variable in the C source.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Sat, 31 Jan 2009 13:09:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854129#M2003</guid>
      <dc:creator>Dmitry_Vyukov</dc:creator>
      <dc:date>2009-01-31T13:09:54Z</dc:date>
    </item>
    <item>
      <title>Re: Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854130#M2004</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/347331"&gt;Dmitriy Vyukov&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Hmmm... Do you sure that you mean exactly IA-64 (i.e. Itanium)? Probably you mean Intel 64 (i.e. x86-64)...&lt;BR /&gt;However, 8-, 16-, 32-, 64-, 128-bit aligned loads and stores are also atomic on IA-32 (i.e. x86) and on Intel 64 (i.e. x86-64). But don't try to extend this to the C language, for example. In order to get 128-bit atomic load/store you have to emit some particular machine instruction, not just plain access to 128-bit variable in the C source.&lt;BR /&gt;&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
Yes, I meant ia64 (Itanium). Thanks for the details. Will definitely use asm instructions and align data properly.&lt;BR /&gt;Just want to clarify: even if a 64-bit word is only 8-bit aligned, I can still emit a certain atomic load/store instruction on Itanium that will be atomic? Thx.&lt;BR /&gt;</description>
      <pubDate>Sun, 01 Feb 2009 04:04:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854130#M2004</guid>
      <dc:creator>ggalperin</dc:creator>
      <dc:date>2009-02-01T04:04:56Z</dc:date>
    </item>
    <item>
      <title>Re: Atomicity of load operation on ia64</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854131#M2005</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/380173"&gt;ggalperin&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;
&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
even if a 64-bit word is only 8-bit aligned, I can still emit a certain atomic load/store instruction on Itanium that will be atomic?&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
On IA64. 64-bit memory access has to be 64-bit aligned in order to be performed by a single instruction. Unaligned access will abort the application, unless it is done by several smaller width instructions. It makes no difference whether asm is used for the load alone, compilers don't provide for unaligned loads. If you have a BIOS option set to retry unaligned memory access, that is very slow, and not atomic. &lt;BR /&gt;For load-update-store, you have several options, including OpenMP atomic.&lt;BR /&gt;</description>
      <pubDate>Sun, 01 Feb 2009 06:37:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Atomicity-of-load-operation-on-ia64/m-p/854131#M2005</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2009-02-01T06:37:57Z</dc:date>
    </item>
  </channel>
</rss>

