** Description changed:

- After glibc maintainers changed "math-vector-fortran.h" install
- directory, gfortran can no longer use it.
+ After ubuntu-glibc maintainers changed "math-vector-fortran.h" install
+ directory (LP#1861353), gfortran can no longer use it.
  
  This the old behavior Ubuntu 19.10 gcc-9.2.1 glibc 2.30
  $ gfortran -O3 -mavx2 vect_test.f90 -o test.x
  $ nm ./test.x | grep sin
-     U _ZGVdN4v_sin@@GLIBC_2.22
-     U _ZGVdN8v_sinf@@GLIBC_2.22
+     U _ZGVdN4v_sin@@GLIBC_2.22
+     U _ZGVdN8v_sinf@@GLIBC_2.22
  
  After that change : Ubuntu 20.04 gcc-9.3.0 glibc 2.31
  $ gfortran -O3 -mavx2 vect_test.f90 -o test.x
- $ nm ./test.x | grep sinn                                                     
                                            
-     U sin@@GLIBC_2.2.5
-     U sinf@@GLIBC_2.2.5
+ $ nm ./test.x | grep sinn
+     U sin@@GLIBC_2.2.5
+     U sinf@@GLIBC_2.2.5
  
  $ cat vect_test.f90
  program test_vect
-   implicit none
-   integer, parameter :: n = 64*1024**2
-   integer :: i
-   integer(8) :: t1, t2, t0
-   real(8) :: tic
-   !
-   real, allocatable :: a32(:), b32(:)
-   real(8), allocatable :: a64(:), b64(:)
-   !
-   allocate( a32(n), a64(n))
-   allocate( b32(n), b64(n))
-   !
-   call random_number(a32 )
-   call random_number(a64 )
-   !
-   call system_clock(t0, tic)
-   !
-   do i = 1, n
-     b32(i) = sin(a32(i))
-   end do
-   !
-   call system_clock(t1)
-   print*, (t1-t0)/tic
-   !
-   do i = 1, n
-     b64(i) = sin(a64(i))
-   end do
-   !
-   call system_clock(t2)
-   print*, (t2-t1)/tic
-   !
+   implicit none
+   integer, parameter :: n = 64*1024**2
+   integer :: i
+   integer(8) :: t1, t2, t0
+   real(8) :: tic
+   !
+   real, allocatable :: a32(:), b32(:)
+   real(8), allocatable :: a64(:), b64(:)
+   !
+   allocate( a32(n), a64(n))
+   allocate( b32(n), b64(n))
+   !
+   call random_number(a32 )
+   call random_number(a64 )
+   !
+   call system_clock(t0, tic)
+   !
+   do i = 1, n
+     b32(i) = sin(a32(i))
+   end do
+   !
+   call system_clock(t1)
+   print*, (t1-t0)/tic
+   !
+   do i = 1, n
+     b64(i) = sin(a64(i))
+   end do
+   !
+   call system_clock(t2)
+   print*, (t2-t1)/tic
+   !
  end program test_vect
  
  Verbose:
  
  Ubuntu 19.10
  $ gfortran -O3 -mavx2 -v vect_test.f90 -o test.x
  ...
  /usr/lib/gcc/x86_64-linux-gnu/9/f951 vect_test.f90 -quiet -dumpbase 
vect_test.f90 -mavx2 -mtune=generic -march=x86-64 -auxbase vect_test -O3 
-version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/9/finclude 
-fpre-include=/usr/include/finclude/math-vector-fortran.h -o /tmp/cc2E2K8s.s
  ...
  
  Ubuntu 20.04
  $ gfortran -O3 -mavx2 -v vect_test.f90 -o test.x
  ...
  /usr/lib/gcc/x86_64-linux-gnu/9/f951 vect_test.f90 -quiet -dumpbase 
vect_test.f90 -mavx2 -mtune=generic -march=x86-64 -auxbase vect_test -O3 
-version -fintrinsic-modules-path /usr/lib/gcc/x86_64-linux-gnu/9/finclude -o 
/tmp/cc4swJwz.s
  ...
  
  As you can see gfortran is not preincluding "math-vector-fortran.h" file on 
Ubuntu 20.04.
  A workaround is to copy "math-vector-fortran.h" to /usr/include/finclude 
(which is empty!).

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1879092

Title:
  gfortran can't use vectorized functions.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1879092/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to