Ticket #2528 (closed: fixed)

Opened 10 years ago

Last modified 5 years ago

Minor tidy up for ParComponentFactory pooling

Reported by: Martyn Gigg Owned by: Martyn Gigg
Priority: major Milestone: Iteration 28
Component: Mantid Keywords:
Cc: Blocked By:
Blocking: Tester: Michael Whitty

Description

The ParComponentFactory was not being used everywhere when creating parametrized objects. Tidy this up and implement the pooling of detector objects.

This should help speed up tight multi-threaded loops that call MatrixWorkspace::getDetector as it caches an object rather than creating a new one each time.

For example,

PARALLEL_FOR1(outputWS)
for(int i = 0; i < nhist; ++i)
{
  IDetector_sptr det = outputWS->getDetector(i)
}

this type of loop does not scale for Parameterized objects as new blocks the threading.

Change History

comment:1 Changed 10 years ago by Martyn Gigg

(In [9631]) Implemented parametrized detector pooling to speed up loops around MatrixWorkspace::getDetector. The example loop in the ticket for a dataset with ~300000 histograms now takes ~0.3 seconds on an 8-core machine versus 1.5 previously. Re #2528

comment:2 Changed 10 years ago by Martyn Gigg

  • Status changed from new to accepted

comment:3 Changed 10 years ago by Martyn Gigg

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

comment:4 Changed 9 years ago by Michael Whitty

  • Status changed from verify to verifying
  • Tester set to Michael Whitty

comment:5 Changed 9 years ago by Michael Whitty

  • Status changed from verifying to closed

comment:6 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 3375

Note: See TracTickets for help on using tickets.