Ticket #8685 (closed: fixed)

Opened 7 years ago

Last modified 5 years ago

Use matrix workspace to store splitters for fast frequency log

Reported by: Wenduo Zhou Owned by: Wenduo Zhou
Priority: major Milestone: Release 3.2
Component: Framework Keywords:
Cc: petersonpf@… Blocked By:
Blocking: #9244, #9326 Tester: Andrei Savici

Description (last modified by Wenduo Zhou) (diff)

The current way to generate event filter and then filter events does not fit for high-frequency log. Generating and parsing a SplitterWorkspace (i.e., a TableWorkspace) containing near million rows is very costly.

Therefore, an alternative way is to record the splitters in a matrix workspace, and filter events from this workspace.

Enable GenerateEventFilter to output either SplitterWorkspace (as usual) or MatrixWorkspace (new) by user's choice.

Attachments

verify7789b.py (951 bytes) - added by Wenduo Zhou 7 years ago.
verify7789a.py (849 bytes) - added by Wenduo Zhou 6 years ago.

Change History

comment:1 Changed 7 years ago by Wenduo Zhou

  • Cc petersonpf@… added
  • Description modified (diff)

comment:2 Changed 7 years ago by Wenduo Zhou

  • Status changed from new to inprogress

Refactored code. Refs #8685.

Changeset: e4511983d4c55f1218a914662b1bc68afb02c021

comment:3 Changed 7 years ago by Wenduo Zhou

Implemented matrix workspace output. Refs #8685.

Also added several unit tests for the new feature.

Changeset: e003fdc698650e73c18c27d170d524e9111b1150

comment:4 Changed 7 years ago by Wenduo Zhou

Enabled to split events by vector splitter. Refs #8685.

Changeset: a6bd39122ed0e56722891c183425496888fba70c

comment:5 Changed 7 years ago by Wenduo Zhou

Enabled to split events using splitter matrix workspace. Refs #8685.

Changeset: c774e4c9def3252796c74963b6bfa9e06d14d877

comment:6 Changed 7 years ago by Wenduo Zhou

Added method to split events. Refs #8685.

Added and tested a method to filter/split events with spliters instored in vectors.

Changeset: e3487731d0c138192eca2afde97fb5c3e2f8c8b6

comment:7 Changed 7 years ago by Wenduo Zhou

  • Blocking 6999 added

comment:8 Changed 7 years ago by Nick Draper

  • Milestone changed from Release 3.1 to Backlog

Moved to backlog at the end of Release 3.1

comment:9 Changed 7 years ago by Wenduo Zhou

Enabled to generate filters in matrix workspace. Refs #8685.

  1. Enabled to generate filters and output them in MatrixWorkspace;
  2. Enabled to generate filters in parallel (not finished yet).

Changeset: 565927f0d59e7c36678efcd009998642ef54f229

comment:10 Changed 7 years ago by Wenduo Zhou

Enabled to return with debug message. Refs #8685.

Changeset: d3d6754bcb700389fc2974b5aaaeacccdb3010ac

comment:11 Changed 7 years ago by Wenduo Zhou

Added new unit test for returning matrix workspace. Refs #8685.

Changeset: 365eae123aef01041b7f0dae187fc398fcc7dd71

comment:12 Changed 7 years ago by Wenduo Zhou

Add debug output. Refs #8685.

  1. Enabled to output more detailed debug information;
  2. Code refactored for parallelization by OpenMP.

Changeset: afa81763e95e6d572e787ef2b376c0cb72af35db

comment:13 Changed 7 years ago by Wenduo Zhou

Resolved conflict. Refs #8685.

Changeset: 703e658fc92a5e468fcc535b81c784765c0bc566

comment:14 Changed 7 years ago by Wenduo Zhou

Adapted to new FilterEvents splitter workspace property. Refs #8685.

Changeset: 37d033c5fe5ee3719362a9730dcdf3ef4d6e9231

comment:15 Changed 7 years ago by Wenduo Zhou

Parallelized with OpenMP. Refs #8685.

Changeset: f256fdbad0eba00941ae868588b511c856eba479

comment:16 Changed 7 years ago by Martyn Gigg

There is a cppcheck warning in GenerateEventsFilter

comment:17 Changed 7 years ago by Wenduo Zhou

  • Milestone changed from Backlog to Release 3.2

comment:18 Changed 7 years ago by Wenduo Zhou

  • Blocked By 9244 added

comment:19 Changed 7 years ago by Wenduo Zhou

Improved performance on speed. Refs #8685.

  1. Removed log in debug level in loop.
  2. Reduced access to a huge vector.
  3. Refactored the operation on DateAndTime and time_duration for speed.

Changeset: da57667c8e7d913cfcd650027795b0b31a0ef6d7

comment:20 Changed 7 years ago by Martyn Gigg

There is a compiler warning about an unused variable

comment:21 Changed 7 years ago by Wenduo Zhou

Cleaned up code for logging and multithread. Refs #8685.

Changeset: 2b81df764254340bdab37e11546973f0553d8094

comment:22 Changed 7 years ago by Wenduo Zhou

Cleaned the codes. Refs #8685.

Changeset: 156debd74588bd9f568e15c8092a1a369cc14de8

comment:23 Changed 7 years ago by Wenduo Zhou

Fixed a compiler warning. Refs #8685.

Changeset: f1b865f9397969b8f544ae1f4e4500c6a28244d9

comment:24 Changed 7 years ago by Wenduo Zhou

Refactored filtering by multiple log values. Refs #8685.

Changeset: 6dba5722f2d5c62f95a193a623d1f57f5381738a

comment:25 Changed 7 years ago by Wenduo Zhou

Refactored algorithm to adding new splitter. Refs #8685.

Changeset: aa9ebbb978640601bb0755de754cc9273c98062c

comment:26 Changed 7 years ago by Wenduo Zhou

Edit wiki and cleaned the codes. Refs #8685.

Changeset: 4c3523ae86ffbd5941142d1630eb5c4572b6e6aa

comment:27 Changed 7 years ago by Wenduo Zhou

For tester

  1. Get access of VULCAN run 20002 and/or 20006;
  2. Download script verify8685a.py;
  3. Before merging the change from this ticket, run script by choosing run number as 20002 or 20006. You will find it takes very long time to generate event filters and even longer time to filter events;
  4. Download script verify8685b.py. Compare it to verify8685a.py to see the difference; Be noticed that the option 'GenerateTOFCorrection' in FilterEvents is a new functionality.
  5. Merge the change from this ticket and build Mantid;
  6. Run verify8685b.py and compare the speed.
Last edited 6 years ago by Wenduo Zhou (previous) (diff)

comment:28 Changed 7 years ago by Martyn Gigg

There are still some cppcheck warnings that need to be addressed in GenerateEventsFilter & FilterEventsByLogValuePreNexus

comment:29 Changed 7 years ago by Wenduo Zhou

Suppressed a cppcheck error. Refs #8685.

Changeset: 2ba0d4bad9b23c55b4af374fd270258e2c479656

comment:30 Changed 7 years ago by Wenduo Zhou

Fixed a Windows compilter error. Refs #8685.

Changeset: 2eceef66b04d5e4941e7f4dbf21c5cd8b2edae9a

comment:31 Changed 7 years ago by Wenduo Zhou

Turned on parallel and cleaned code. Refs #8685.

Changeset: 569f2e738e86249dcdefc31139bd7499c30cdcf3

comment:32 Changed 7 years ago by Wenduo Zhou

  • Blocked By 9244 removed

Changed 7 years ago by Wenduo Zhou

comment:34 Changed 7 years ago by Wenduo Zhou

  • Blocking 9244 added

comment:35 Changed 7 years ago by Wenduo Zhou

  • Blocking 9244 removed

comment:36 Changed 7 years ago by Wenduo Zhou

  • Blocking 6999 removed

comment:37 Changed 7 years ago by Wenduo Zhou

  • Blocking 9244 added

comment:37 Changed 7 years ago by Wenduo Zhou

Fixed a doxygen warning. Refs #8685.

Changeset: 26483167ac04c4ddf37a2abee9c9a4dbddd6acc4

comment:38 Changed 7 years ago by Wenduo Zhou

Corrected some doxygen warnings. Refs #8685.

Changeset: 282bcc80c9dd68bb1b1392b1fe9e8086754414ee

comment:39 Changed 7 years ago by Wenduo Zhou

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

comment:40 Changed 6 years ago by Russell Taylor

  • Status changed from verify to reopened
  • Resolution fixed deleted

There are a bunch of new memory leaks in EventListTest (spotted because I've been squashing the older ones). I can show you where they are.

comment:41 Changed 6 years ago by Wenduo Zhou

  • Status changed from reopened to inprogress

Removed progress bar in openmp loop. Refs #8685.

Changeset: 8360cba88c28d109eec79f0463e8eb48d5914d76

comment:42 Changed 6 years ago by Wenduo Zhou

Fixed some memory leaks. Refs #8685.

Changeset: 66ddc8fe9dbe57f71128f5cca03fa29462df978f

comment:43 Changed 6 years ago by Wenduo Zhou

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

comment:44 Changed 6 years ago by Russell Taylor

  • Status changed from verify to reopened
  • Resolution fixed deleted

Best not to close things until the builds have passed....

comment:45 Changed 6 years ago by Wenduo Zhou

  • Status changed from reopened to inprogress

Modified an error message. Refs #8685.

Changeset: 39f169c6dc6f98d553042989864352ab305eb840

comment:46 Changed 6 years ago by Wenduo Zhou

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

comment:47 Changed 6 years ago by Andrei Savici

  • Status changed from verify to verifying
  • Tester set to Andrei Savici
  • Summary changed from Use matrix workspac to store splitters for fast frequency log to Use matrix workspace to store splitters for fast frequency log

comment:48 Changed 6 years ago by Andrei Savici

  • Status changed from verifying to reopened
  • Resolution fixed deleted

Could not run the python scripts in the before case. No FastLog and no UseParallelProcessing. Please update testing procedure

Changed 6 years ago by Wenduo Zhou

comment:49 Changed 6 years ago by Wenduo Zhou

Test script is corrected.

comment:50 Changed 6 years ago by Wenduo Zhou

  • Status changed from reopened to inprogress

comment:51 Changed 6 years ago by Wenduo Zhou

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

comment:52 Changed 6 years ago by Wenduo Zhou

  • Blocking 9326 added

comment:53 Changed 6 years ago by Andrei Savici

verify7789a.py​ still has a problem in FilterEvents. There is no SplitSampleLogs keyword

comment:54 Changed 6 years ago by Andrei Savici

  • Status changed from verify to verifying

comment:55 Changed 6 years ago by Wenduo Zhou

Removed an unnecessary warning log. Refs #8685.

Changeset: 46e9acd2dabb0db97145f16ff5fe50b1a14d3000

comment:56 Changed 6 years ago by Wenduo Zhou

Removed a progress update within OpenMP loop. Refs #8685.

Changeset: 4f5809aa0f3f550f763ba9137d5b33268c2d6b87

comment:57 Changed 6 years ago by Andrei Savici

Refs #8685. Merge 'origin/feature/8685_matrixws_filter'

Conflicts:

Code/Mantid/Framework/Algorithms/src/GenerateEventsFilter.cpp

Changeset: a0e7b5ee47f2e854e5b5c771cd9f0ccba8a8335c

comment:58 Changed 6 years ago by Andrei Savici

  • Status changed from verifying to closed

comment:59 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 9529

Note: See TracTickets for help on using tickets.