<?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 OpenMP question: Should I use critical construct in my code? in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911322#M4636</link>
    <description>Any implementation insights? The last level cache is inclusive: if a cache line lives in L1 or L2 on one of the cores, it will also have a place in the L3and yes, it helps to reduce snoop traffic. But not eliminate it--still need snoops from L3 if you've got multiple sockets. But, we are getting far afield from the topic of this thread. If you want to continue with these questions,I think you should start a thread with a more appropriate title.</description>
    <pubDate>Mon, 22 Feb 2010 08:21:52 GMT</pubDate>
    <dc:creator>robert-reed</dc:creator>
    <dc:date>2010-02-22T08:21:52Z</dc:date>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911310#M4624</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;I write some code with OpenMP. I use the critical construct in my code, so that a specific storage location will not be simultaneously updated by more than one thread.&lt;/P&gt;
&lt;P&gt;I run my code on Supermicro X7QC3 ServerBoard, with 4 quad core intel xeon E7320 processors. The OS is linux. The compiler is gcc 4.3.0.&lt;/P&gt;
&lt;P&gt;The main part of my code is following:&lt;/P&gt;
&lt;P&gt;#pragma omp parallel for private(j, k, s, e)&lt;BR /&gt;for ( i = 0; i &amp;lt; N; i++)&lt;BR /&gt;{&lt;BR /&gt; ...&lt;BR /&gt; for ( k = s ; k &amp;lt; e; k++)&lt;BR /&gt; {&lt;BR /&gt; j = n&lt;K&gt;;&lt;BR /&gt; ...&lt;BR /&gt; ...&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt; #pragma omp critical&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/STRONG&gt; {&lt;BR /&gt; m&lt;I&gt; += ... ;&lt;BR /&gt; m&lt;J&gt; += ... ;&lt;BR /&gt;}&lt;BR /&gt; }&lt;/J&gt;&lt;/I&gt;&lt;/K&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;But one of my friends says : "In Intel platforms, hardware maintains the memory coherence. It does not need atomic or critical in the code."&lt;/P&gt;
&lt;P&gt;So I have this question that should I use critical construct for reduction on the array(m[]) in the code.&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 06:08:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911310#M4624</guid>
      <dc:creator>zhouyi1999</dc:creator>
      <dc:date>2010-01-19T06:08:56Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911311#M4625</link>
      <description>&lt;P&gt;I make my code only with compiler option ( -O3 ).&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 06:26:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911311#M4625</guid>
      <dc:creator>zhouyi1999</dc:creator>
      <dc:date>2010-01-19T06:26:40Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911312#M4626</link>
      <description>&lt;P&gt;There's a difference between memory coherence and data races. Intel processors do have a cache coherence protocol that assures predictable updates of memory, but they can't protect programmers from their owncoding errors.&lt;/P&gt;
&lt;P&gt;In the example you provided the omp parallel for will partition its workerthreadsacross the span of &lt;EM&gt;i&lt;/EM&gt; so in the innermost block you could probably get away without the critical section for the references to m&lt;I&gt;: each worker thread would operate on its own chunk of m[] and while there may be a little cache flipping where the thread partition boundaries don't line up with the cache line boundaries, there should be little problem.&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;However, the critical section also modifies m&lt;J&gt; and all this code reveals about the value of &lt;EM&gt;j&lt;/EM&gt; is that it is derived from n[]. If &lt;EM&gt;j&lt;/EM&gt; never is in the range 0..N and the values of &lt;EM&gt;j&lt;/EM&gt; pulled from n[] never repeat, you might not need it to be in the critical section either, but that's doubtful. More likely the &lt;EM&gt;j&lt;/EM&gt;s repeat or even cross over the range of the &lt;EM&gt;i&lt;/EM&gt;s, which would then require the critical section to avoid having the threads interfere with each other. It would be better if you could restructure the algorithm to avoid the need for the critical section since it serializes code execution and could have a severe impact on performance scaling.&lt;/J&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 06:59:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911312#M4626</guid>
      <dc:creator>robert-reed</dc:creator>
      <dc:date>2010-01-19T06:59:43Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911313#M4627</link>
      <description>&lt;P&gt;Hi,Robert Reed (Intel), Thank you very much!&lt;/P&gt;
&lt;P&gt;There are morethan onethreads that will update the same m&lt;J&gt;. So I think that I should use critical or atomic.&lt;BR /&gt;&lt;BR /&gt;But, Idoes not really understandcache coherence protocal, I only know that Intel use MESI protocol which can maintain the cache coherence. Ifone datahave been updated by core A, then the data on Core B will be notified. &lt;BR /&gt;Is that MESI can't do work formultiple sockets?&lt;/J&gt;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 08:02:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911313#M4627</guid>
      <dc:creator>zhouyi1999</dc:creator>
      <dc:date>2010-01-19T08:02:37Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911314#M4628</link>
      <description>&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=461590" class="basic" href="https://community.intel.com/en-us/profile/461590/"&gt;zhouyi1999&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="border: 1px inset; padding: 5px; background-color: #e5e5e5; margin-left: 2px; margin-right: 2px;"&gt;&lt;I&gt;
&lt;P&gt;Hi,Robert Reed (Intel), Thank you very much!&lt;/P&gt;
&lt;P&gt;There are morethan onethreads that will update the same m&lt;J&gt;. So I think that I should use critical or atomic.&lt;BR /&gt;&lt;BR /&gt;But, Idoes not really understandcache coherence protocal, I only know that Intel use MESI protocol which can maintain the cache coherence. Ifone datahave been updated by core A, then the data on Core B will be notified. &lt;BR /&gt;Is that MESI can't do work formultiple sockets?&lt;/J&gt;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;/I&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;If you are sure that multiple threads will access the same memory location through m&lt;J&gt; then it is appropiate to place a &lt;B&gt;critical &lt;/B&gt;or &lt;B&gt;atomic &lt;/B&gt;construct around it. As the operation is a simple add on m&lt;J&gt;, you could use &lt;B&gt;atomic &lt;/B&gt;which will have a better performance.&lt;BR /&gt;&lt;BR /&gt;While both can be used for mutual exclusion, there are key differences:&lt;/J&gt;&lt;/J&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt; The &lt;B&gt;critical &lt;/B&gt;construct can protect any sequence of code enclosed by curly braces. Internally, it takes a lock and ensures that only one thread enters the protected code sequence.&lt;/LI&gt;
&lt;LI&gt;The &lt;B&gt;atomic &lt;/B&gt;construct can only protect simple updates of memory locations (e.g. read, add, write). If two threads access a different memory location through m&lt;J&gt; both may run without synchronizing. Only if two threads access the same memory location (read access m&lt;J&gt; with the same value for j), &lt;B&gt;atomic &lt;/B&gt;will ensure mutual exclusion.&lt;/J&gt;&lt;/J&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;So, my advice would be to use &lt;B&gt;atomic &lt;/B&gt;instead of &lt;B&gt;critical&lt;/B&gt;.&lt;BR /&gt;&lt;BR /&gt;Cheers&lt;BR /&gt;-michael&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 10:32:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911314#M4628</guid>
      <dc:creator>Michael_K_Intel2</dc:creator>
      <dc:date>2010-01-19T10:32:09Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911315#M4629</link>
      <description>&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1263922023023="82" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=461590" href="https://community.intel.com/en-us/profile/461590/" class="basic"&gt;zhouyi1999&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-left: 2px; margin-right: 2px; background-color: #e5e5e5; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;
&lt;P&gt;But, Idoes not really understandcache coherence protocal, I only know that Intel use MESI protocol which can maintain the cache coherence. Ifone datahave been updated by core A, then the data on Core B will be notified. &lt;BR /&gt;Is that MESI can't do work formultiple sockets?&lt;/P&gt;
&lt;/I&gt;&lt;/DIV&gt;
&lt;P&gt;MESI is designed to handle multiple memory masters, but rather than me regurgitating details on MESI, I recommend you read &lt;A href="http://en.wikipedia.org/wiki/MESI_protocol"&gt;the Wikipedia article&lt;/A&gt;. Michael has given you good advice on &lt;STRONG&gt;critical&lt;/STRONG&gt; versus &lt;STRONG&gt;atomic&lt;/STRONG&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jan 2010 17:31:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911315#M4629</guid>
      <dc:creator>robert-reed</dc:creator>
      <dc:date>2010-01-19T17:31:44Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911316#M4630</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;Consider changing&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;EM&gt; #pragma omp critical&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/STRONG&gt; {&lt;BR /&gt; m&lt;J&gt; += ... ;&lt;BR /&gt;}&lt;/J&gt;&lt;/P&gt;
&lt;P&gt;To:&lt;/P&gt;
&lt;P&gt; m&lt;I&gt; += ... ;&lt;BR /&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;EM&gt; #pragma ompatomic&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/STRONG&gt; m&lt;J&gt; += ... ;&lt;/J&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;or something like this:&lt;/P&gt;
&lt;P&gt;#pragma omp parallel private(j, k, s, e)&lt;BR /&gt;{&lt;BR /&gt; mType* _m = (mType*)_alloca(sizeof(mType)*sizeFor_m); // must fit on stack&lt;BR /&gt; for(int q = 0; q &amp;lt; sizeFor_m; ++q)&lt;BR /&gt; _m&lt;Q&gt; = 0;&lt;BR /&gt; #pragma omp for &lt;BR /&gt; for ( i = 0; i &amp;lt; N; i++)&lt;BR /&gt; {&lt;BR /&gt; ...&lt;BR /&gt; for ( k = s ; k &amp;lt; e; k++)&lt;BR /&gt; {&lt;BR /&gt; j = n&lt;K&gt;;&lt;BR /&gt; ...&lt;BR /&gt; ...&lt;BR /&gt; m&lt;I&gt; += ... ;&lt;BR /&gt;_m&lt;J&gt; += ... ;&lt;BR /&gt; }&lt;BR /&gt; #pragma omp critical&lt;BR /&gt; {&lt;BR /&gt; for(int q = 0; q &amp;lt; sizeFor_m; ++q)&lt;BR /&gt; m&lt;Q&gt; += _m&lt;Q&gt;;&lt;BR /&gt; }&lt;BR /&gt;}&lt;/Q&gt;&lt;/Q&gt;&lt;/J&gt;&lt;/I&gt;&lt;/K&gt;&lt;/Q&gt;&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jan 2010 12:53:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911316#M4630</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2010-01-20T12:53:19Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911317#M4631</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: small; font-family: Times New Roman;"&gt;I know your means. Thank you very much!&lt;/SPAN&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;SPAN style="font-size: small;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jan 2010 15:27:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911317#M4631</guid>
      <dc:creator>zhouyi1999</dc:creator>
      <dc:date>2010-01-20T15:27:48Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911318#M4632</link>
      <description>&lt;P&gt;It's a good idea to use private array.&lt;BR /&gt;Thank you very much!&lt;/P&gt;
&lt;P&gt;zhouyi1999&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jan 2010 15:30:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911318#M4632</guid>
      <dc:creator>zhouyi1999</dc:creator>
      <dc:date>2010-01-20T15:30:04Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911319#M4633</link>
      <description>&lt;P&gt;Hi Robert and Michael,&lt;/P&gt;
&lt;P&gt;Though my question is not related to this post, I thought you guys might be in a good position to help me.&lt;/P&gt;
&lt;P&gt;I am a graduate student at UT, Austin currently working on cache algorithms in multicore architecture. I am in need of a few data points from Intel for my paper. Could you please help me with these questions?&lt;/P&gt;
&lt;P&gt;1. Does Intel ensure inclusion property at L2 and L3 levels of caches in its latest multicore processors?&lt;/P&gt;
&lt;P&gt;2. How does Intel solve the cache coherency problem? I got to learn about using the QuickPath technology. But, not sure how exactly that helps.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Anil.&lt;/P&gt;</description>
      <pubDate>Sun, 21 Feb 2010 20:42:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911319#M4633</guid>
      <dc:creator>anilkatti</dc:creator>
      <dc:date>2010-02-21T20:42:36Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911320#M4634</link>
      <description>&lt;P&gt;The last level cache (L3) in the Intel Core i7 is inclusive, as you might have been able to glean from a quick scan of Part 1 of the System Programming Guide (available &lt;A href="http://www.intel.com/products/processor/manuals/"&gt;here&lt;/A&gt;):&lt;/P&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.intel.com/skins/images/7B13F55A7CE623EF42E69096FA81A3A1/2021_redesign/images/image_not_found.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Intel Architecture uses the &lt;A href="http://en.wikipedia.org/wiki/MESI_protocol"&gt;MESI &lt;/A&gt;protocol to ensure cache coherency, which is true whether you're on one of the older processors that use a common bus to communicate or using the new Intel QuickPath point-to-point interconnection technology. (The SPG also has a section on the MESI protocol as implemented in IA.)&lt;/P&gt;
&lt;P&gt;
&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 21 Feb 2010 23:32:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911320#M4634</guid>
      <dc:creator>robert-reed</dc:creator>
      <dc:date>2010-02-21T23:32:35Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911321#M4635</link>
      <description>&lt;P&gt;Thank you Robert,&lt;/P&gt;
&lt;P&gt;The information you provided was very valuable.&lt;/P&gt;
&lt;P&gt;Do you have any insights on the implementation of inclusion property? Or can you point to to resources which talk about this?&lt;/P&gt;
&lt;P&gt;As I understand block requests which incur cache miss at L1 go as requests to L2 and those which incur miss at L2 go as requests to L3. Is my understand correct w.r.t Intel architectures? (Say, Nehalem)&lt;/P&gt;
&lt;P&gt;L3 is made inclusive in order to prevent L1 and L2 from wasting resources snooping the main memory. Right? When MESIF protocol takes care of coherency, is there any need for snooping at any level of cache?&lt;/P&gt;
&lt;P&gt;If some one writes into a location in main memory, it should be L3 right? In that case, why should L3 snoop?&lt;/P&gt;
&lt;P&gt;Thanks Again Robert!&lt;/P&gt;
&lt;P&gt;- Anil.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Feb 2010 00:37:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911321#M4635</guid>
      <dc:creator>anilkatti</dc:creator>
      <dc:date>2010-02-22T00:37:13Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911322#M4636</link>
      <description>Any implementation insights? The last level cache is inclusive: if a cache line lives in L1 or L2 on one of the cores, it will also have a place in the L3and yes, it helps to reduce snoop traffic. But not eliminate it--still need snoops from L3 if you've got multiple sockets. But, we are getting far afield from the topic of this thread. If you want to continue with these questions,I think you should start a thread with a more appropriate title.</description>
      <pubDate>Mon, 22 Feb 2010 08:21:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911322#M4636</guid>
      <dc:creator>robert-reed</dc:creator>
      <dc:date>2010-02-22T08:21:52Z</dc:date>
    </item>
    <item>
      <title>OpenMP question: Should I use critical construct in my code?</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911323#M4637</link>
      <description>&lt;P&gt;Hi Robert,&lt;/P&gt;
&lt;P&gt;I really appreciate your reponse. I am getting a clear picture now. I had created a new thread for my questions here &lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=72135"&gt;http://software.intel.com/en-us/forums/showthread.php?t=72135&lt;/A&gt; but, I couldn't get any response there. I guessed that you guys would have subscribed to this thread and you guys seemed super resourceful. That made me intrude this thread :)&lt;/P&gt;
&lt;P&gt;Anyways, I'll post my response to your reply at the other location. Please help me out with a few more details.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Anil.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Feb 2010 15:21:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/OpenMP-question-Should-I-use-critical-construct-in-my-code/m-p/911323#M4637</guid>
      <dc:creator>anilkatti</dc:creator>
      <dc:date>2010-02-22T15:21:16Z</dc:date>
    </item>
  </channel>
</rss>

