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

--- Comment #16 from Sunil Pandey <skpgkp2 at gmail dot com> ---
(In reply to rguent...@suse.de from comment #15)
> On Thu, 22 Aug 2019, skpgkp2 at gmail dot com wrote:
> 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91512
> > 
> > --- Comment #14 from Sunil Pandey <skpgkp2 at gmail dot com> ---
> > (In reply to Richard Biener from comment #7)
> > > (In reply to Sunil Pandey from comment #4)
> > > > Actually it is spec cpu 2017 521.wrf benchmark getting this problem 
> > > > while
> > > > compiling. Compilation taking forever, you can see while compiling file
> > > > module_first_rk_step_part1.fppized.f90 as a representative.
> > > 
> > > Note this file contains a single function which (besides USEing quite a
> > > number
> > > of modules...) has only function calls involving a lot of parameters
> > > effectively forwarding parameters from the function.  Thus
> > > 
> > > SUBROUTINE foo (psim, ..., ims, ime, jms, jme)
> > >     REAL    ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT)         :: psim
> > >     call sub1 (PSIM=psim, ...)
> > >     call sub2 (PSIM=psim, ...)
> > > END SUBROUTINE
> > > 
> > > with a _lot_ of arrays being passed through.  A simple testcase like
> > > 
> > > SUBROUTINE sub1 (psim, ims, ime, jms, jme)
> > >     REAL    ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT)         :: psim
> > > END SUBROUTINE
> > > SUBROUTINE foo (psim, ims, ime, jms, jme)
> > >     REAL    ,DIMENSION(ims:ime,jms:jme), INTENT(INOUT)         :: psim
> > >     call sub1 (psim, ims, ime, jms, jme)
> > > END SUBROUTINE
> > > 
> > > doesn't show any extra loops generated though, so I'm not sure what to
> > > look after.
> > 
> > It seems very hard to create a small test case which reproduce the long 
> > compile
> > time problem. Unfortunately, I'm not allowed to upload spec source file. 
> > Also
> > it's very big with lots of module dependency. Assuming you have spec 2017
> > sources,
> > 
> > Here is unmodified command line, which show compile time problem.
> > 
> > Spec build dir: 
> > ===============
> > 
> > /local/skpandey/gccwork/specx5/cpu2017/benchspec/CPU/521.wrf_r/build/build_base_gcc-10.0.0-x86-64.0000
> > 
> > Before the commit in question:
> > ==============================
> > 
> > Take 41 second to compile unmodified file with -O2 -march=skylake
> > 
> > $ time
> > /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release.a4ba5c3ec624008e899a8bcb687359db25140c23/usr/gcc-10.0.0-x86-64/bin/gfortran
> >  -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include 
> > -I./inc
> > -fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake 
> > -funroll-loops
> > -fconvert=big-endian module_first_rk_step_part1.fppized.f90
> > 
> > real    0m41.295s
> > user    0m41.031s
> > sys     0m0.204s
> > 
> > After the commit in question:
> > =============================
> > 
> > It take about 12 minute with -O2 -march=skylake
> > 
> > $ time
> > /local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
> >  -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include 
> > -I./inc
> > -fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake 
> > -funroll-loops
> > -fconvert=big-endian module_first_rk_step_part1.fppized.f90
> > 
> > real    11m59.498s
> > user    11m53.304s
> > sys     0m4.835s
> > 
> > 
> > With higher optimization like -O3 or -Ofast, it take even longer and I have 
> > to
> > kill it.
> 
> Does it help to omit -funroll-loops?

Omitting -funroll-loops help a bit but not much.

$ time
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90

real    9m4.806s
user    9m2.180s
sys     0m1.620s
$ time
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90

real    18m7.810s
user    18m4.395s
sys     0m1.498s
$ time
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake -funroll-loops
-fconvert=big-endian module_first_rk_step_part1.fppized.f90

real    25m47.889s
user    25m40.571s
sys     0m4.639s

Reply via email to