Ticket #3271 (closed: fixed)

Opened 9 years ago

Last modified 5 years ago

vtkThresholdingHexahedronFactory: parallelize/speed up

Reported by: Janik Zikovsky Owned by: Janik Zikovsky
Priority: major Milestone: Iteration 30
Component: Mantid Keywords:
Cc: Blocked By:
Blocking: Tester: Stuart Campbell

Description

Use multiple cores (if possible) for optimal speed in creating a visualization data set.

Change History

comment:1 Changed 9 years ago by Janik Zikovsky

  • Status changed from new to accepted

comment:2 Changed 9 years ago by Janik Zikovsky

(In [12935]) Corrected Q in MakeDiffractionEventWorkspace (to not have 2*pi and to be q = ki-kf, it was kf-ki). Added a Paraview plugin, PeaksReader, to load .peaks file to visualize them. Needed to add a link to the Crystal library. Refs #3232. Added a vtkPeakMarkerFactory to render single-crystal peaks (as points). Not totally finished. Refs #3232. Made vtkDataSetFactory::initialise() take a Workspace_sptr instead of a IMDWorkspace_sptr. This allowed the visualization of a PeaksWorkspace. Still needs tests. Made the MultiDimensionalDbPresenter::getMesh() method return a vtkDataSet* (instead of vtkUnstructuredGrid*) to be more general. Attempted to speed up/parallelize vtkThresholdingHexahedronFactory without much improvement so far. Refs #3271. Made a MockObjects.hh file to reuse mock objects code in VatesAPITest. Fixes #3291. Sped up setUp of EventListTestPerformance; also InstrumentRayTracerTestPerformance. Refs #3217.

comment:3 Changed 9 years ago by Janik Zikovsky

In [13450]:

Refs #3271: Sped up vtkThresholdingHexahedronFactory by about a factor of 2.

comment:4 Changed 9 years ago by Janik Zikovsky

In [13451]:

Refs #3271: Fix test. The number of voxels created should be equal to binsX*binsY*binsZ, not (binsX-1)*(binsY-1)*(binsZ-1), hence the change in the test.

comment:5 Changed 9 years ago by Janik Zikovsky

In [13483]:

Refs #3316 and refs #3420: Made the MDEW .nxs file format closer to the Design Document specification. Lots of bits (sample/run/instrument) are still missing. Adjusted the PV plugins to find the right kind of loader and fail (gracefully) if given a processedNexus or a SNS event Nexus.

Refs #3271: Sped up vtkThresholdingQuadFactory and vtkThresholdingHexahedronFactory furthere.
Time to create voxels sped up by 40x (19 seconds to 0.45 seconds for 1003 voxels).
Time to check the signal for thresholding of 500
3 voxels dropped from 19 seconds to 3.4 seconds.
Made vtkThresholdingUnstructuredGridFactory subclass vtkThresholdingHexahedronFactory so that they could share their common code.

comment:17 Changed 9 years ago by Owen Arnold

In [13518]:

Refs #3271. Recover functionality that was lost. Need to be able to handle any type of IMDWorkspace. Identify MDHistoWorkspace, and run newer (faster) dataset generation methods, otherwise, rely on generic (slower) dataset generation.

comment:18 Changed 9 years ago by Owen Arnold

In [13519]:

Refs #3271. Kill warnings.

comment:19 Changed 9 years ago by Owen Arnold

In [13520]:

Refs #3271. Kill warnings.

comment:20 Changed 9 years ago by Janik Zikovsky

  • Summary changed from vtkThresholdingHexahedronFactory: parallelize to vtkThresholdingHexahedronFactory: parallelize/speed up

comment:21 Changed 9 years ago by Janik Zikovsky

In [13610]:

Refs #3271: It turns out that the speed up that is specific to MDHistoWorkspace is 2-3% at best! Therefore to simplify the code I've combined the 4 separate functions back into one with a flag for 3D or 4D and they work for all IMDWorkspace-types.

comment:22 Changed 9 years ago by Janik Zikovsky

In [13714]:

Refs #3271: vtkMDEWHexahedronFactory is about twice as fast as before. More can be done.

comment:23 Changed 9 years ago by Janik Zikovsky

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

I think most that can be done within the factory is now done. The larger slow downs are in other parts of paraview.

comment:24 Changed 9 years ago by Stuart Campbell

  • Status changed from verify to verifying
  • Tester set to Stuart Campbell

comment:25 Changed 9 years ago by Stuart Campbell

  • Status changed from verifying to closed

Well trying with CNCS_7860 data set and setting some ridiculous number of bins... it seems quite quick (200x200x200 = 0.028s)

comment:26 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 4118

Note: See TracTickets for help on using tickets.