Ticket #2276 (closed: fixed)

Opened 10 years ago

Last modified 5 years ago

Improve the performance of Geometry

Reported by: Nick Draper Owned by: Nick Draper
Priority: major Milestone: Iteration 27
Component: Mantid Keywords:
Cc: Blocked By:
Blocking: Tester: Owen Arnold

Description

Specifically getPos

Change History

comment:1 Changed 10 years ago by Nick Draper

(In [8908]) re #2276 Removed the instantiation of the parent Component class when it is not needed. Improved the performance of a GetPos & getRotation of every detector in WISH from 2.10 seconds to 1.25s.

There are more possible improvements that could be made. Specifically I still have to instantiate a shared pointer that I don't want, and there is some locking in cache.h around gathering statistics that are never used.

comment:2 Changed 10 years ago by Nick Draper

similar improvements should be able in getRotation

comment:3 Changed 10 years ago by Martyn Gigg

(In [8926]) As a follow on to [8908], remove instantiation of parent class from getRotation call as well. The m_base pointer is now stored as a Component rather than IComponent so that the parent can be accessed directly without going through a dynamic_cast. Also a couple of minor cleanups around creating vectors and added a compiler directive for using the statistics within the Cache class. the hit/miss counts are now only accumulated if USE_CACHE_STATS is defined. Re #2276

comment:4 Changed 10 years ago by Russell Taylor

(In [8940]) Revert a change from some time back regarding how grouped detector positions are calculated in Absorption corrections routines. Small change in numerical result (for the better), big change in speed. Also a small refactoring in detector code that was less small in its impact on tests. Re #2276.

comment:5 Changed 10 years ago by Russell Taylor

(In [8948]) Replace system test reference result following change in absorption correction algorithm. Difference is 0.025% or less. Re #2276.

comment:6 Changed 10 years ago by Martyn Gigg

(In [8972]) Add methods to the ParameterMap to access parameters via a const char * rather than a std::string. It would appear that, on Linux at least, creating temporary std::string when retrieving a parameter causes slowdown in multi-threaded loops. My guess is due to dynamic allocation of memory for the new temporary string. This removes the part of the bottleneck on tight multi-threaded loops calling getDetector a lot. More to come regarding parameterized Component allocations. Re #2276

comment:7 Changed 10 years ago by Martyn Gigg

(In [8998]) Fix for the windows build. Re #2276

comment:8 Changed 10 years ago by Martyn Gigg

(In [8999]) So it turns out the templated function was to blame. Re #2276

comment:9 Changed 10 years ago by Martyn Gigg

(In [9045]) Created a pool for parametrized detector objects to avoid excessive calls to the new operator in multi-threaded loops. If a cached object already exists and is unique then it's memory is reused rather than reallocating another object. This alleviates some of the locking within threaded loops that was impeding the scaling with the number of cores. There is still something to done with instruments but an issue remains with plottable components. Re #2276

comment:10 Changed 10 years ago by Martyn Gigg

(In [9046]) Checked in some changes accidentally, reverting them. Re #2276

comment:11 Changed 10 years ago by Martyn Gigg

(In [9047]) Fix for the Mac. Re #2276

comment:12 Changed 10 years ago by Martyn Gigg

(In [9048]) pooling isn't cooperating as well on the build servers as on my machine where everything ran fine./MantidPlot/ Re #2276

comment:13 Changed 10 years ago by Nick Draper

  • Milestone changed from Iteration 27 to Iteration 28

Bulk move of tickets at the end of iteration 27

comment:14 Changed 10 years ago by Nick Draper

  • Status changed from new to accepted
  • Milestone changed from Iteration 28 to Iteration 27

comment:15 Changed 10 years ago by Nick Draper

  • Status changed from accepted to verify
  • Resolution set to fixed

comment:16 Changed 10 years ago by Owen Arnold

  • Status changed from verify to verifying
  • Tester set to Owen Arnold

comment:17 Changed 10 years ago by Owen Arnold

  • Status changed from verifying to closed

Verified.

comment:18 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 3123

Note: See TracTickets for help on using tickets.