<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><br>
</p>
<div class="moz-cite-prefix">On 07/02/2017 03:47 AM, hameeza ahmed
wrote:<br>
</div>
<blockquote
cite="mid:CAFMPKebgbxs9v=w22fibzqKdTa22wRSEG9KS46S0fCXB=uC3LA@mail.gmail.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div dir="ltr">but now it works fine with mentioned code.</div>
</blockquote>
<br>
If adding "restrict" causes us to stop vectorizing, that's a bug.<br>
<br>
Also, bugs should be filed for desired enhancements.<br>
<br>
-Hal<br>
<br>
<blockquote
cite="mid:CAFMPKebgbxs9v=w22fibzqKdTa22wRSEG9KS46S0fCXB=uC3LA@mail.gmail.com"
type="cite">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Sun, Jul 2, 2017 at 1:28 PM, Hal
Finkel <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="">
<p><br>
</p>
<div class="m_-3859656921803285309moz-cite-prefix">On
07/01/2017 05:33 PM, hameeza ahmed wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">I am able to vectorize it with the
following code;
<div><br>
</div>
<div>
<div>#include <stdio.h></div>
<div>#define N 100351</div>
<div> </div>
<div>// This function computes 2D-5 point Jacobi
stencil </div>
<div>void stencil(int a[][N], int b[][N])</div>
<div>{</div>
<div> int i, j, k;</div>
<div> for (k = 0; k < N; k++) {</div>
<div> for (i = 1; i <= N-2; i++)</div>
<div> for (j = 1; j <= N-2; j++)</div>
<div> <span style="white-space:pre-wrap"> </span>
b[i][j] = 0.25 * (a[i][j] + a[i-1][j] +
a[i+1][j] + a[i][j-1] + a[i][j+1]);</div>
<div><br>
</div>
<div>for (i = 1; i <= N-2; i++)</div>
<div><span style="white-space:pre-wrap"> </span>for
(j = 1; j <= N-2; j++)</div>
<div><span style="white-space:pre-wrap"> </span>
a[i][j] = b[i][j];</div>
<div> </div>
<div>}</div>
<div>}</div>
</div>
<div><br>
</div>
<div>I removed restrict over here.</div>
</div>
</blockquote>
<br>
</span> That seems odd. Can you please file a bug report?<br>
<br>
-Hal
<div>
<div class="h5"><br>
<br>
<blockquote type="cite">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Sun, Jul 2, 2017 at
3:11 AM, hameeza ahmed <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:hahmed2305@gmail.com"
target="_blank">hahmed2305@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">further i modified the code to
the following;
<div><br>
</div>
<div><span>
<div>#include <stdio.h></div>
<div>#define N 100351</div>
<div> </div>
<div>// This function computes 2D-5
point Jacobi stencil </div>
</span>
<div>void stencil(int a[restrict][N], int
b[restrict][N])</div>
<div>{</div>
<div> int i, j, k;</div>
<div> for (k = 0; k < N; k++) {</div>
<span>
<div> for (i = 1; i <= N-2;
i++)</div>
<div> for (j = 1; j <= N-2;
j++)</div>
</span>
<div> <span style="white-space:pre-wrap"> </span>
b[i][j] = 0.25 * (a[i][j] + a[i-1][j] +
a[i+1][j] + a[i][j-1] + a[i][j+1]);</div>
<span>
<div><br>
</div>
<div>for (i = 1; i <= N-2; i++)</div>
<div><span style="white-space:pre-wrap"> </span>for
(j = 1; j <= N-2; j++)</div>
</span>
<div><span style="white-space:pre-wrap"> </span>
a[i][j] = b[i][j];</div>
<div> </div>
<div>}</div>
<div>}</div>
<div><br>
</div>
<div> but still no vectorization in IR.
Also, when I set vector width explicitly
to 64, it gives the following error:</div>
</div>
<div><br>
</div>
<div>
<div>remark: <unknown>:0:0: loop not
vectorized: call instruction cannot be
vectorized</div>
<div>remark: <unknown>:0:0: loop not
vectorized: value that could not be
identified as reduction is used outside
the loop</div>
</div>
<div><br>
</div>
<div>I need serious help on this. Please
guide me.</div>
</div>
<div class="m_-3859656921803285309HOEnZb">
<div class="m_-3859656921803285309h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Sun, Jul 2,
2017 at 1:54 AM, hameeza ahmed <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:hahmed2305@gmail.com"
target="_blank">hahmed2305@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="auto">Does it happen due
to loop carried dependence? if yes
what is the solution to vectorize
such codes?
<div dir="auto"><br>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">please reply. i m
waiting.</div>
</div>
<div
class="m_-3859656921803285309m_111627299988929908HOEnZb">
<div
class="m_-3859656921803285309m_111627299988929908h5">
<div class="gmail_extra"><br>
<div class="gmail_quote">On
Jul 1, 2017 12:30 PM,
"hameeza ahmed" <<a
moz-do-not-send="true"
href="mailto:hahmed2305@gmail.com"
target="_blank">hahmed2305@gmail.com</a>>
wrote:<br type="attribution">
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">I even
tried polly but still my
llvm IR does not contain
vector instructions. i
used the following
command;
<div><br>
</div>
<div>
<div>clang -S
-emit-llvm stencil.c
-march=knl -O3
-mllvm -polly -mllvm
-polly-vectorizer=stripmine -o stencil_poly.ll</div>
</div>
<div><br>
</div>
<div>Please specify what
is wrong with my code?</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On
Sat, Jul 1, 2017 at
4:08 PM, hameeza ahmed
<span dir="ltr"><<a
moz-do-not-send="true" href="mailto:hahmed2305@gmail.com"
target="_blank">hahmed2305@gmail.com</a>></span>
wrote:<br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div dir="ltr">Hello,
<div><br>
</div>
<div>I am trying
to vectorize
following
stencil code;</div>
<div><br>
</div>
<div>
<div>#include
<stdio.h></div>
<div>#define N
100351</div>
<div> </div>
<div>// This
function
computes 2D-5
point Jacobi
stencil </div>
<div>void
stencil(int
a[restrict][N])</div>
<div>{</div>
<div> int i,
j, k;</div>
<div> for (k =
0; k < 100;
k++)</div>
<div> { for
(i = 1; i
<= N-2;
i++)</div>
<div> {
for (j = 1; j
<= N-2;
j++)</div>
<div> <span style="white-space:pre-wrap"> </span>{
a[i][j] = 0.25
* (a[i][j] +
a[i-1][j] +
a[i+1][j] +
a[i][j-1] +
a[i][j+1]);</div>
<div>
}</div>
<div>}</div>
<div>}}</div>
</div>
<div><br>
</div>
<div>I have used
the following
commands</div>
<div><br>
</div>
<div>clang -S
-emit-llvm
stencil.c
-march=knl -O3
-mllvm
-disable-llvm-optzns
-o stencil.ll<br>
</div>
<div><br>
</div>
<div>opt -S -O3
stencil.ll -o
stencil_o3.ll<br>
</div>
<div><br>
</div>
<div>llc
-x86-asm-syntax=intel
stencil_o3.ll -o
stencil.s<br>
</div>
<div><br>
</div>
<div>But the code
is not
vectorized. It
still uses the
scalar
instructions;</div>
<div><br>
</div>
<div>Please
correct me.</div>
<div><br>
</div>
<div>Thank You</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</div>
<span class="HOEnZb"><font color="#888888">
<pre class="m_-3859656921803285309moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</font></span></div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>