<?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 how to identify dependency between statements automatically in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/how-to-identify-dependency-between-statements-automatically/m-p/834616#M1592</link>
    <description>Let's ignore for the moment the issue of when I=0 and you have negative indexing.&lt;BR /&gt;&lt;BR /&gt; B(2) = A(-1) + C(-1)&lt;BR /&gt;&lt;BR /&gt;Which may or may not be a problem&lt;BR /&gt;&lt;BR /&gt;The parallelization tool (i.e. compiler) generally parallelizes the loop by slicing the iteration space.&lt;BR /&gt;&lt;BR /&gt;The compiler can test for dependencies by determining if one slice modifies a different slices data. If so then it generally will not parallize the loop unless directed otherwise.&lt;BR /&gt;&lt;BR /&gt;In this situation, as you have pointed out, you have a temporal issue accross the junctures of the slices.&lt;BR /&gt;Not only for the backwards reference of A but also for the forward reference of B.&lt;BR /&gt;&lt;BR /&gt;Your example has a forward look on B at B(2*I +3) with backwards reference (from B(2*I+3)) being modified. Also, the 3rd statement can be boosted out of the loop and written only once. I know that your example is a dummied up piece of code.&lt;BR /&gt;&lt;BR /&gt;Jim Dempsey</description>
    <pubDate>Wed, 25 Aug 2010 15:37:51 GMT</pubDate>
    <dc:creator>jimdempseyatthecove</dc:creator>
    <dc:date>2010-08-25T15:37:51Z</dc:date>
    <item>
      <title>how to identify dependency between statements automatically</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/how-to-identify-dependency-between-statements-automatically/m-p/834615#M1591</link>
      <description>suppose if there are two statements in a for loop&lt;BR /&gt;
for(i=0;i&lt;N&gt;&lt;/N&gt;
{&lt;BR /&gt; &lt;BR /&gt;
A(I) = B ( I ) + C(I)&lt;BR /&gt;
 B(I + 2) = A(I - 1) + C(I -1)&lt;BR /&gt;
A(I + 1) = B(2*I + 3) + 1&lt;BR /&gt;
}&lt;BR /&gt;
suppose if we run these for I values  like 1,2,3&lt;BR /&gt; &lt;BR /&gt;
 FOR I value 1&lt;BR /&gt;
S(2) :A(2) = B(2) + C(2)&lt;BR /&gt;
T(2) :B(4) = A(1) + C(1)&lt;BR /&gt;
U(2) :A(3) = B(7) + 1&lt;BR /&gt;
FOR I value 2&lt;BR /&gt;
S(3) :A(3) = B(3) + C(3)&lt;BR /&gt;
T(3) :B(5) = A(2) + C(2)&lt;BR /&gt;
U(3) :A(4) = B(9) + 1&lt;BR /&gt; &lt;BR /&gt;
here in B(5) has to be wait for A(2).in sequential programming is 
concerned it is ok.suppose if it is parallel program it will create 
ambiguity.&lt;BR /&gt; &lt;BR /&gt;
how to identify this types of loop automatically in a program</description>
      <pubDate>Tue, 24 Aug 2010 20:41:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/how-to-identify-dependency-between-statements-automatically/m-p/834615#M1591</guid>
      <dc:creator>sabbinenisunil</dc:creator>
      <dc:date>2010-08-24T20:41:54Z</dc:date>
    </item>
    <item>
      <title>how to identify dependency between statements automatically</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/how-to-identify-dependency-between-statements-automatically/m-p/834616#M1592</link>
      <description>Let's ignore for the moment the issue of when I=0 and you have negative indexing.&lt;BR /&gt;&lt;BR /&gt; B(2) = A(-1) + C(-1)&lt;BR /&gt;&lt;BR /&gt;Which may or may not be a problem&lt;BR /&gt;&lt;BR /&gt;The parallelization tool (i.e. compiler) generally parallelizes the loop by slicing the iteration space.&lt;BR /&gt;&lt;BR /&gt;The compiler can test for dependencies by determining if one slice modifies a different slices data. If so then it generally will not parallize the loop unless directed otherwise.&lt;BR /&gt;&lt;BR /&gt;In this situation, as you have pointed out, you have a temporal issue accross the junctures of the slices.&lt;BR /&gt;Not only for the backwards reference of A but also for the forward reference of B.&lt;BR /&gt;&lt;BR /&gt;Your example has a forward look on B at B(2*I +3) with backwards reference (from B(2*I+3)) being modified. Also, the 3rd statement can be boosted out of the loop and written only once. I know that your example is a dummied up piece of code.&lt;BR /&gt;&lt;BR /&gt;Jim Dempsey</description>
      <pubDate>Wed, 25 Aug 2010 15:37:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/how-to-identify-dependency-between-statements-automatically/m-p/834616#M1592</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2010-08-25T15:37:51Z</dc:date>
    </item>
  </channel>
</rss>

