[llvm-dev] Issues with omp simd

Alexey Bataev via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 30 12:11:40 PST 2017


1. Ask developers of gcc
2. I rather doubt that the code is going to be vectorized at O0.

Best regards,
Alexey Bataev

30 дек. 2017 г., в 14:49, hameeza ahmed via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> написал(а):

i changed my code to following;
   #pragma omp simd
        for (int i=0; i<size; ++i)
        {
             a[i]=2; b[i]=3; c[i]=4;
            c[i]= a[i] + b[i];
    printf("c value %f",c[i]);
        }

still no effect of omp simd?

On Sun, Dec 31, 2017 at 12:26 AM, Craig Topper <craig.topper at gmail.com<mailto:craig.topper at gmail.com>> wrote:
The for loop has no effect on the observable behavior of the program. If you run the program there is no way to tell if the numbers were added or not. So the loop doesn’t matter, so the compiler deleted the code. You need to print the contents of c or something so that it matters.



On Sat, Dec 30, 2017 at 11:19 AM hameeza ahmed <hahmed2305 at gmail.com<mailto:hahmed2305 at gmail.com>> wrote:
I even tried following;

int main(int argc, char **argv)
{
    const int size = 1000000;


    float a[size], b[size],c[size];



        #pragma omp simd
        for (int i=0; i<size; ++i)
        {
             a[i]=2; b[i]=3; c[i]=4;
            c[i]= a[i] + b[i];
        }


    return 0;
}
but the output with and without openmp simd is same. why is that so?

On Sun, Dec 31, 2017 at 12:01 AM, Craig Topper <craig.topper at gmail.com<mailto:craig.topper at gmail.com>> wrote:
I didn’t look at the assembly, but you didn’t initialize your arrays. Your program isn’t meaningful.

On Sat, Dec 30, 2017 at 9:08 AM hameeza ahmed <hahmed2305 at gmail.com<mailto:hahmed2305 at gmail.com>> wrote:
hello,

i am trying to optimize omp simd loop as follows

int main(int argc, char **argv)
{
    const int size = 1000000;


    float a[size], b[size],c[size];



        #pragma omp simd
        for (int i=0; i<size; ++i)
        {
            c[i]= a[i] + b[i];
        }


    return 0;
}

i run it using the following command;

g++ -O0 --std=c++14 -fopenmp-simd lab.cpp  -Iinclude -S -o lab.s

when i compared it with code as follows without simd


int main(int argc, char **argv)
{
    const int size = 1000000;


    float a[size], b[size],c[size];



        for (int i=0; i<size; ++i)
        {
            c[i]= a[i] + b[i];
        }


    return 0;
}

using following command

g++ -O0 --std=c++14  lab.cpp -Iinclude -S -o lab.s

I am getting the same assembly. Why is that so? why not omp simd is more efficient?

Please help


--
~Craig

--
~Craig

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171230/5253a901/attachment.html>


More information about the llvm-dev mailing list