Ticket #5710 (closed: fixed)
ConvertToMD performance
Reported by: | Martyn Gigg | Owned by: | Alex Buts |
---|---|---|---|
Priority: | major | Milestone: | Release 2.3 |
Component: | Mantid | Keywords: | PatchCandidate,Released |
Cc: | nick.draper@… | Blocked By: | |
Blocking: | Tester: | Roman Tolchenov |
Description
This relates to #5682 and the comments surrounding the performance of the new ConvertToMD code.
I've attached a script and picture comparing the timings of running ConvertToMDEvents & ConvertToMD on the same input data. In this circumstance the code is faster. Is the performance degradation much more isolated than we think?
Attachments
Change History
comment:1 Changed 8 years ago by Martyn Gigg
Note: The MERLIN test data file is in the system test repository.
comment:2 Changed 8 years ago by Alex Buts
The code degradation was occurring on large files (the real one) when multiple splitting was happening.
comment:4 Changed 8 years ago by Alex Buts
refs #5710 this mainly fixes the issue.
The performance of the new code is not worth and even better (multithreading part) wrt the old code.
Changeset: 71fe48859f0a831713e7c22bf4ceda16ef869cc9
comment:5 Changed 8 years ago by Alex Buts
the script testing performance for different parts of the code is provided
# Note that default conversion to events workspace compresses histogram data to have approximately 10 data-points per event. # The resulting MD workspace build from events contains ~40M events wrt the MD workspace build directly from histogram # containing ~184M events. The code converting from histogram in this example does much more work. # Load(Filename='D:\Data\eclipse\workspaces\iliad\MER12524.raw',OutputWorkspace='MER12524',LoadMonitors=r'Separate') SetUB(Workspace='MER12524',a='2.8700000000000001',b='2.8700000000000001',c='2.8700000000000001') perfomance=1 ConvertToEventWorkspace(InputWorkspace='MER12524',OutputWorkspace='MER12524Ev') ##---------------------------------------------------------------------------------- ## Old TMD Code in New Mantid; Adding to MD WS runs single threaded ConvertToMDEvents(InputWorkspace='MER12524',OutputWorkspace='MER12524MD_old',QDimensions='Q3D',QConversionScales='HKL',dEAnalysisMode='Elastic',MinValues='-50,-50,-50',MaxValues='50,50,50') #Duration 67 seconds; In Mantid 2.1 was 77 sec if perfomance: DeleteWorkspace('MER12524MD_old') ConvertToMDEvents(InputWorkspace='MER12524Ev',OutputWorkspace='MER12524MDEv_old',QDimensions='Q3D',QConversionScales='HKL',dEAnalysisMode='Elastic',MinValues='-50,-50,-50',MaxValues='50,50,50') # Duration 16 seconds; In Mantid 2.1 was 16.79 if perfomance: DeleteWorkspace('MER12524MDEv_old') ##---------------------------------------------------------------------------------- ## Janik's 3D code ConvertToDiffractionMDWorkspace(InputWorkspace='MER12524Ev',OutputWorkspace='CNS_MD',OutputDimensions='HKL') #Duration 17 seconds if perfomance: DeleteWorkspace('CNS_MD') ConvertToDiffractionMDWorkspace(InputWorkspace='MER12524',OutputWorkspace='CNS_MD_HIST',OutputDimensions='HKL') # Duration 56.76 seconds if perfomance: DeleteWorkspace('CNS_MD_HIST') ##---------------------------------------------------------------------------------- ## New MD code; Adding to MD ws runs multithreaded ConvertToMD(InputWorkspace='MER12524',OutputWorkspace='MER12524MD_HistNew',QDimensions='Q3D',QConversionScales='HKL',dEAnalysisMode='Elastic',MinValues='-50,-50,-50',MaxValues='50,50,50') #Duration 49 seconds TMD-- was 76.97 sec if perfomance: DeleteWorkspace('MER12524MD_HistNew') ConvertToMD(InputWorkspace='MER12524Ev',OutputWorkspace='MER12524MD_EvNew',QDimensions='Q3D',QConversionScales='HKL',dEAnalysisMode='Elastic',MinValues='-50,-50,-50',MaxValues='50,50,50') # Duration 13 seconds if perfomance: DeleteWorkspace('MER12524MD_EvNew')
comment:6 Changed 8 years ago by Alex Buts
- Status changed from accepted to verify
- Resolution set to fixed
comment:8 Changed 8 years ago by Alex Buts
refs #5710 this mainly fixes the issue.
The performance of the new code is not worth and even better (multithreading part) wrt the old code.
Changeset: 71fe48859f0a831713e7c22bf4ceda16ef869cc9
comment:9 Changed 8 years ago by Roman Tolchenov
- Status changed from verify to verifying
- Tester set to Roman Tolchenov
comment:10 Changed 8 years ago by Roman Tolchenov
- Status changed from verifying to closed
Ran the script. The times of different algorithms looked comparable.
comment:11 Changed 7 years ago by Nick Draper
- Keywords PatchCandidate,Released added; PatchCandidate removed
comment:12 Changed 5 years ago by Stuart Campbell
This ticket has been transferred to github issue 6556