[llvm-dev] LLVM Matrix Multiplication Loop Vectorizer
Tobias Grosser via llvm-dev
llvm-dev at lists.llvm.org
Tue Jun 27 23:11:07 PDT 2017
On Tue, Jun 27, 2017, at 09:54 PM, hameeza ahmed via llvm-dev wrote:
> Hello,
> i am trying to vectorize a simple matrix multiplication in llvm;
> here is my code;
>
> #include <stdio.h>
> #define N 1000
>
> // This function multiplies A[][] and B[][], and stores
> // the result in C[][]
> void multiply(int A[][N], int B[][N], int C[][N])
> {
> int i, j, k;
> for (i = 0; i < N; i++)
> {
> for (j = 0; j < N; j++)
> {
> C[i][j] = 0;
> for (k = 0; k < N; k++)
> C[i][j] += A[i][k]*B[k][j];
> }
> }
> }
>
> here are the commands;
>
>
>
> clang -S -emit-llvm mat.c -march=knl -O3 -mllvm -disable-llvm-optzns -o
> mat.ll
>
> opt -S -O3 mat.ll -o mat_o3.ll
>
> llc -x86-asm-syntax=intel mat_o3.ll -o mat_intel.s
>
>
> with this command i got the below error
> opt -S -O3 -force-vector-width=16 mat.ll -o mat_o3.ll
>
>
> remark: <unknown>:0:0: loop not vectorized: value that could not be
> identified as reduction is used outside the loop
>
>
> it is unable to vectorize the matrix multiplication and in .ll and .s
> files
> i see the scalar instructions.
>
> Why is that so? What is my mistake?? Kindly correct me.
You might also try Polly. We detect and optimize this code into very
high-performance code.
Best,
Tobias
> Looking forward to your reply
>
> Thank You
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
More information about the llvm-dev
mailing list