Quantcast
Channel: Intel® Many Integrated Core Architecture
Viewing all articles
Browse latest Browse all 1347

effect of using array alignment

$
0
0

Hi,

I am trying to figure out the effect of using array alignment in vectorization of MIC code.

Here is a simple piece of offload code from Intel

  #pragma offload target(mic:cardId)
  #pragma omp parallel for private(j,k)
  for (i=0; i<numthreads; i++)
  {
    int offset = i*LOOP_COUNT;
    for (j=0; j<MAXFLOPS_ITERS; j++)
    {
      #pragma vector aligned
      for (k=0; k<LOOP_COUNT; k++)
      {
        fa[k+offset]=a*fa[k+offset]+fb[k+offset];
      }
    }
  }

This program gets ~1900 GFlops, which is very promising. However, if I changed line 8 to be 

#pragma vector unaligned

or

#pragma simd

The performance significantly drops to ~60 GFlops.

From documentations I learnt that"aligned" indicates "compilers to use aligned data movement instructions for all array references when vectorizing". Could you elaborate this explanation a little bit?

Also, i noticed that the change I mentioned above doesn't make too much difference in the program running on host machine. Why is that?

Thanks!


Viewing all articles
Browse latest Browse all 1347

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>