Quantcast
Channel: Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 1616

update 3 breaks BUILD_DATE use in omp simd reduction max

$
0
0

I was using

#if  __INTEL_COMPILER_BUILD_DATE >= 20140318

#pragma omp simd reduction(max: x)

#endif

and

#if  __INTEL_COMPILER_BUILD_DATE >= 20140318

#pragma omp simd lastprivate(index) reduction(max: x)

#endif

to enable building with various versions of ICL.  gcc seems not to benefit from these pragmas, although they are accepted.  14.0 update 3 evidently breaks this scheme with its more recent build date but lack of full omp simd support.   The erroneous use of #pragma omp simd without the required lastprivate and reduction (rejected by 14.0) clauses worked on some targets for 13.1 and 14.0.2 but not others.  According to my understanding, "correct" usage for 14.0 is to avoid simd pragmas entirely in cases where there is a max or min reduction, but it seems there should be a way short of disabling the pragma for all intel compilers.

I haven't been able to see a method with the predefined macros to select the different variations of #pragma omp according to whether Intel 14.0 or some other compiler is in use.

It's difficult enough that  Intel and gcc chose different interpretations of #pragma omp simd and that Intel has made several changes.

 

Another annoyance with 14.0.3 is the tendency to install the new front end hooked up to the previously active back end. The repair option doesn't fix this; it's necessary to uninstall and repeat install from the downloaded files until it gets done right.  On-line install appears totally unsatisfactory due to its tendency to quit in the middle with an undefined state.


Viewing all articles
Browse latest Browse all 1616

Trending Articles