https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121818

--- Comment #1 from Benjamin Schulz <schulz.benjamin at googlemail dot com> ---
Created attachment 62321
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=62321&action=edit
arraylibrary.tar.gz

sourcecode of the arraylibrary. again, if you remove

the reduction(+:tmp)

in line 1610 of mathfunctions_mpi.h 
before the loop


   T tmp=0,temp4=0;
            #pragma omp target parallel for simd reduction(+:tmp)
device(policy.devicenum)
            for (size_t k = 0; k < c; ++k)
            {
                const T tmp3=tL(c,k);
                tmp+= tmp3 * tmp3;
            } 

then the results come out correctly, but that should not be, that it computes
correctly if i remove the reduciton, as this clearly is a a simple reduction. 

Originally, i had a teams distribute statement before, Then the behavior is the
same. I removed that because I did not know whether it can reduce over the
entire teams, but it does not matter apparently, the problem is there if i
reduce even with parallel for simd, which supports the reduction statement in
any case on target....

Reply via email to