** Description changed:

  I noticed that a numerical solver I develop runs much slower on 16.04.1
- than on 14.04. See for example this output:
+ than on 14.04.
  
- The counters (top part of each result section) show that the solver does
- the same on both variants. The timings (lower part, beginning with
- FrameworkTimeWriteOutputs) are execution time in seconds. Overall time
- is in the last row (WallClockTime). First column shows results on Ubuntu
- 14.04, second column shows time on 16.04.1.
+ UPDATE:
  
- ../../data/tests/CCMTest/Kirchhoff.d6p
-                                      Reference             New
-   IntegratorErrorTestFails                1026 ==         1026
-   IntegratorFunctionEvals                32474 ==        32474
-   IntegratorLESSetup                      3114 ==         3114
-   IntegratorLESSolve                     32473 ==        32473
-   IntegratorSteps                        25809 ==        25809
-   LESJacEvals                              463 ==          463
-   LESRHSEvals                             3241 ==         3241
-   LESSetups                               3114 ==         3114
-   --
-   FrameworkTimeWriteOutputs               0.00 ~~         0.00
-   IntegratorTimeFunctionEvals             4.96 <>         9.46
-   IntegratorTimeLESSetup                  0.38 ~~         0.58
-   IntegratorTimeLESSolve                  0.36 ~~         0.35
-   LESTimeJacEvals                         0.08 ~~         0.08
-   LESTimeRHSEvals                         0.27 ~~         0.46
-   WallClockTime                           6.13 <>        10.79
+ Test results (on Ubuntu 16.04.1 LTS):
  
- MoistField.d6o
- RHField.d6o
- ../../data/tests/EN15026/Kirchhoff.d6p
-                                      Reference             New
-   IntegratorErrorTestFails                   2 ==            2
-   IntegratorFunctionEvals                17685 ==        17685
-   IntegratorLESSetup                       903 ==          903
-   IntegratorLESSolve                     17684 ==        17684
-   IntegratorSteps                        17635 ==        17635
-   LESJacEvals                              295 ==          295
-   LESRHSEvals                             2065 ==         2065
-   LESSetups                                903 ==          903
-   --
-   FrameworkTimeWriteOutputs               0.03 ~~         0.03
-   IntegratorTimeFunctionEvals            31.04 <>        58.89
-   IntegratorTimeLESSetup                  2.47 ~~         3.76
-   IntegratorTimeLESSolve                  3.05 ~~         2.98
-   LESTimeJacEvals                         0.28 ~~         0.28
-   LESTimeRHSEvals                         2.02 ~~         3.30
-   WallClockTime                          40.39 <>        69.39
+ case 1 - static linking = 6.56 s
+ case 1 - dynamic linking = 8.29 s
  
- Particularly affected is the physics part of the code
- (IntegratorTimeFunctionEvals), which does by far the most memory access
- and uses pow(), sqrt(), exp() functions.
+ case 2 - static linking = 45.8 s
+ case 2 - dynamic linking = 49.4 s
  
- The test code was compiled with GCC 4.8.4 on Ubuntu 14.04 and was run
- unmodified on 16.04 (after upgrade and on a second machine after a fresh
- install).
+ I compiled the solver with GCC 4.8.4 on Ubuntu 14.04. When I run the
+ solver unmodified on 16.04.1 LTS it runs much slower. Tested on an
+ Ubuntu system that was upgraded from 14.04.4 and on a second machine
+ after a fresh install.
  
  When the code is compiled with the new GCC 5.4 on Ubuntu 16.04, the
  execution times are approximately the same as with GCC 4.8.4 on Ubuntu
- 16.04. Therefore I would not think it is a GCC bug.
+ 16.04. Hence, the slowdown does not seem to be related by the code-
+ generation, but rather by the runtime library.
  
- I have a test suite archive for download and test execution prepared:
- 
- http://bauklimatik-dresden.de/downloads/tmp/test_suite.tar.7z
- 
- Run the test suite on 14.04 and on 16.04 and observe the numbers in the
- "New" column, they will differ significantly for most test cases.
- 
- Can you confirm my observation? And if yes, does anyone know how to
- avoid this performance drop?
+ see attached performance test.

** Description changed:

  I noticed that a numerical solver I develop runs much slower on 16.04.1
  than on 14.04.
  
  UPDATE:
  
  Test results (on Ubuntu 16.04.1 LTS):
  
  case 1 - static linking = 6.56 s
  case 1 - dynamic linking = 8.29 s
  
  case 2 - static linking = 45.8 s
  case 2 - dynamic linking = 49.4 s
  
- I compiled the solver with GCC 4.8.4 on Ubuntu 14.04. When I run the
- solver unmodified on 16.04.1 LTS it runs much slower. Tested on an
- Ubuntu system that was upgraded from 14.04.4 and on a second machine
- after a fresh install.
+ case 3 - static linking = 7.02 s
+ case 3 - dynamic linking = 11.2 s
+ 
+ 
+ I compiled the solver with GCC 4.8.4 on Ubuntu 14.04. When I run the solver 
unmodified on 16.04.1 LTS it runs much slower. Tested on an Ubuntu system that 
was upgraded from 14.04.4 and on a second machine after a fresh install.
  
  When the code is compiled with the new GCC 5.4 on Ubuntu 16.04, the
  execution times are approximately the same as with GCC 4.8.4 on Ubuntu
  16.04. Hence, the slowdown does not seem to be related by the code-
  generation, but rather by the runtime library.
  
  see attached performance test.

** Attachment added: "Performance test that illustrates the runtime difference 
(dynamic vs. shared libraries)"
   
https://bugs.launchpad.net/gcc/+bug/1613996/+attachment/4729180/+files/performance_test.tar.7z

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

Title:
  30% slowdown in numerical solver exection on 16.04.1 vs. 14.04 with
  same solver binary

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1613996/+subscriptions

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

Reply via email to