Quantcast
Channel: Intel® Software - Intel® Fortran Compiler for Linux* and macOS*
Viewing all articles
Browse latest Browse all 2746

Wrong code when using OpenMP collapse

$
0
0

Hello,

 i encountered a behavior I believe is a bug in ifort 14.0.2 which took me quite a lot of time to find.

  implicit integer(a-z)
  nx = 10
  ny = 10
  nz = 10
  tnx = 2
  tny = 2
  tnz = 2


  !$omp parallel do collapse(3)
  do bk = 1, nz, tnz
   do bj = 1, ny, tny
    do bi = 1, nx, tnx
     do k = bk, min(bk+tnz-1,nz)
      do j = bj, min(bj+tny-1,ny)
       do i = bi, min(bi+tnx-1,nx)
        if (i==1.and.j==1.and.k==1) print *,"*"
       end do
      end do
     end do
    end do
   end do
  end do
  !$omp end parallel do
end

This should print just one "*", but prints more of them

lada@meop37:~/f/testy/errors> ifort -openmp collapse.f90
lada@meop37:~/f/testy/errors> ./a.out
 *
 *
 *
 *
 *
lada@meop37:~/f/testy/errors> OMP_NUM_THREADS=1 ./a.out
 *
 *
 *
 *
 *
lada@meop37:~/f/testy/errors> OMP_NUM_THREADS=10 ./a.out
 *
 *
 *
 *
 *
lada@meop37:~/f/testy/errors> f90 -openmp collapse.f90
f90: Warning: Optimizer level changed from 0 to 3 to support parallelized code.
lada@meop37:~/f/testy/errors> ./a.out
 *

 

 

 

 

 


Viewing all articles
Browse latest Browse all 2746

Latest Images

Trending Articles



Latest Images

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