What’s New and What’s Next

Slides:



Advertisements
Similar presentations
Part IV: Memory Management
Advertisements

Networked Digital Whiteboard with Handwritten-Symbol Interpreter and Dynamic-Display-Object Creator Atsuhide Kobashi Henry M. Gunn High School Palo Alto,
EPICS V4/areaDetector Integration
1 Slides presented by Hank Childs at the VACET/SDM workshop at the SDM Center All-Hands Meeting. November 26, 2007 Snoqualmie, Wa Work performed under.
EPICS Base R and beyond Andrew Johnson Computer Scientist, AES Controls Group.
AreaDetector: What’s New? Mark Rivers GeoSoilEnviroCARS, Advanced Photon Source University of Chicago.
ONYX RIP Version Technical Training General. Overview General Messaging and What’s New in X10 High Level Print and Cut & Profiling Overviews In Depth.
WSUS Presented by: Nada Abdullah Ahmed.
AreaDetector Data Processing Pipeline In EPICS V4 Dave Hickin Diamond Light Source EPICS Collaboration Meeting Diamond Light Source 01/05/2013.
AreaDetector: A module for EPICS area detector support New developments Mark Rivers GeoSoilEnviroCARS, Advanced Photon Source University of Chicago.
16 - Nov. 2000EPICS Workshop Oak Ridge1 Epics to TINE translator Matthias Clausen, DESY Hamburg Phil Duval, DESY Hamburg Zoltan Kakucs, DESY Hamburg.
Packaging of EPICS-basedControl System Software
AreaDetector and GStreamer Similarities and Differences Tom Cobb.
Client/Server Architectures
Input/Output Controller (IOC) Overview Andrew Johnson Computer Scientist, AES Controls Group.
AreaDetector: Recent Additions and Future Plans Mark Rivers GeoSoilEnviroCARS, Advanced Photon Source University of Chicago.
Capture and Replay Often used for regression test development –Tool used to capture interactions with the system under test. –Inputs must be captured;
Prachi Chitnis.  The CSS feel  SDS – Synoptic Display Studio  ADL Converter  PV table, Probe…
 Overview › Requirements › Proof of Principal › Issues … › First Step – Wrap Altera NIOS2 GNU Tools › Next Step – Build RTEMS/NIOS GNU Tools › Future.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
How to Operate Prosilica GC1380H CCD? Power up & connect Prosilica to PC via Ethernet cable (Cat 5e or better); Use the secondary Ethernet card labeled.
Integrating EPICS and LabVIEW on Windows using DCOM Freddie Akeroyd ISIS Computing Group.
EPICS EPICS Limitations Bob Dalesio Marty Kraimer.
AreaDetector workshop Summary and notes…. Overview iocBuilder File Writer Changes areaDetector driver pattern shared vector Asyn client without an IOC.
Developing Applications with the CSI Framework A General Guide.
High Speed Detectors at Diamond Nick Rees. A few words about HDF5 PSI and Dectris held a workshop in May 2012 which identified issues with HDF5: –HDF5.
FlowLevel Client, server & elements monitoring and controlling system Message Include End Dial Start.
EPICS and LabVIEW Tony Vento, National Instruments
Control System Overview J. Frederick Bartlett Fermilab June 1,1999.
Event Management. EMU Graham Heyes April Overview Background Requirements Solution Status.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
AreaDetector: What’s New? Mark Rivers GeoSoilEnviroCARS, Advanced Photon Source University of Chicago.
Barthélémy von Haller CERN PH/AID For the ALICE Collaboration The ALICE data quality monitoring system.
ORNL is managed by UT-Battelle for the US Department of Energy ADnED Handling V4 Neutron Event Data Matt Pearson SNS ORNL 18 th -22 nd May 2015.
ImageJ2. Who Develops ImageJ2? And anyone who wants to contribute!
ImageJ2. Why ImageJ2? ● Support the next generation of image data ● Interoperate and collaborate with other projects ● Broaden the ImageJ community ●
Chapter 4 – Thread Concepts
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
ControlLogix 5580 Controller
JavaIOC Overview and Update
Current Generation Hypervisor Type 1 Type 2.
GeoSoilEnviroCARS, Advanced Photon Source
Common Object Request Broker Architecture (CORBA)
areaDetector: Recent Developments and Future Ideas
Self Healing and Dynamic Construction Framework:
Open Source distributed document DB for an enterprise
SOFTWARE DESIGN AND ARCHITECTURE
LOCO Extract – Transform - Load
Spark Presentation.
Chapter 4 – Thread Concepts
Sharing Memory: A Kernel Approach AA meeting, March ‘09 High Performance Computing for High Energy Physics Vincenzo Innocente July 20, 2018 V.I. --
CMPE419 Mobile Application Development
TerraForm3D Plasma Works 3D Engine & USGS Terrain Modeler
Chapter 4: Threads.
EPICS areaDetector Architecture
Compiler Back End Panel
Chapter 2: The Linux System Part 1
Control System Studio (CSS)
Compiler Back End Panel
Advanced Photon Source
areaDetector: A module for EPICS area detector support
Prof. Leonardo Mostarda University of Camerino
Advanced Photon Source
PLCs integration into the ICS
Outline System architecture Current work Experiments Next Steps
CMPE419 Mobile Application Development
areaDetector: What’s New? Mark Rivers, Univ. of Chicago
EPICS 7 Matej Sekoranyja, Marty Karimer, Michael Davidsaver, Ralph Lange, Andrew Johnson, Timo Korhonen, Heinz Junkes, Patrick Marschalik, Murali Shankar,
quadEM: New Beam Position Monitor & Electrometer Hardware and Software
Presentation transcript:

What’s New and What’s Next areaDetector What’s New and What’s Next Mark Rivers GeoSoilEnviroCARS, Advanced Photon Source University of Chicago

Outline Last update was September 2016 at Oak Ridge areaDetector and ADCore Releases since then: R2-5, R2-6, R3-0, R3-1 EPICS V4 driver and plugin ImageJ plugins ADSupport repository NDPluginDriver enhancements for multi-threading Roadmap for R4-0 and R5-0

NDPluginPva New plugin that converts NDArrays into the EPICSv4 normative type NTNDArray An embedded EPICSv4 server serves the new NTNDArray structure as an EPICSv4 PV High performance, ~3.2GB/s shown here Can be received by any EPICSv4 client Java, Python, C++ versions of pvAccess CSS has a widget that can display NTNDArrays New ImageJ plugin Can include an NTNDArray receiver in another IOC From Bruno Martins

EPICS_NTNDA_Viewer ImageJ plugin New ImageJ plugin written by Tim Madden and Marty Kraimer Essentially identical to EPICS_AD_Viewer.java except that it displays NTNDArrays from the NDPluginPva plugin, i.e. using pvAccess to transport the images rather than NDPluginStdArrays which uses Channel Access.

EPICS_NTNDA_Viewer Advantages NTNDArray data transmitted "atomically" over the network With Channel Access size and data type of waveform record is fixed at iocInit, cannot be changed at runtime. To view both 8-bit and 64-bit double FFT images waveform record needs to be 64-bit double, 8X network overhead for 8-bit. pvAccess changes the data type of the NTNDArrays dynamically at run-time. Channel Access requires setting EPICS_CA_MAX_ARRAY_BYTES, considerable confusion and frustration for users. NDPluginPva is 5X-10X faster than NDPluginStdArrays ImageJ is 1.5-2X faster with pvAccess than with Channel Access.

Other ImageJ Viewers EPICS_AD_Controller. Allows using the ImageJ ROI tools (rectangle and oval) to graphically define the following: The readout region of the detector/camera The position and size of an ROI (NDPluginROI) The position and size of an overlay (NDPluginOverlay) The plugin chain can include an NDPluginTransform plugin which changes the image orientation and an NDPluginROI plugin that changes the binning, size, and X/Y axes directions. The plugin corrects for these transformations when defining the target object. Chris Roehrig wrote an earlier version of this plugin.

pvAccess Driver New pvAccess driver receives NTNDArrays over the network, converts to NDArrays and calls plugins Can be used to run areaDetector IOC and plugins on another machine or in another process High performance: ~1.2 GB/s shown here with interprocess communication Saturating 10 Gb Ethernet links has been demonstrated From Bruno Martins

NDPluginDriver (R3-0) Multiple Threads per Plugin Added support for multiple threads running the processCallbacks() function in a single plugin. Can improve the performance of the plugin by a large factor. Linear scaling with up to 5 threads (the largest value tested) observed for most of the plugins that now support multiple threads. Maximum number of threads that can be used for the plugin is set in constructor and in IOC startup script. Actual number of threads to use controlled via an EPICS PV at run time, up to the maximum value passed to the constructor. Note that plugins need to be modified to be thread-safe for multiple threads running in a single plugin object.

Multiple Threads per Plugin Sorting of Output NDArrays When plugin uses multiple threads likely that the NDArray output will be slightly out of order, i.e. NDArray::uniqueId fields will not be monotonically increasing. This is because the threads are running asynchronously and at slightly different speeds. A downstream file plugin plugin would write NDArrays to the file in the "wrong" order. Plugins have an option to sort the NDArrays by uniqueId to attempt to output them in the correct order. Sorting enabled by setting SortMode=Sorted

Multiple Threads with NDPluginStats 1 Thread

Multiple Threads with NDPluginStats 5 Threads

Multiple Threads per Plugin Supports multiple threads Comments NDPluginColorConvert Yes Multiple threads supported and tested NDPluginFFT NDPluginOverlay NDPluginROI NDPluginROIStat Multiple threads supported and tested NOTE: time series needs ordering NDPluginStats NDPluginStdArrays Multiple threads supported and tested NOTE: waveform callbacks will be out of order NDPluginTransform

NDPluginScatter Used to distribute (scatter) the processing of NDArrays to multiple downstream plugins Allows multiple instances of a plugin to process NDArrays in parallel, utilizing multiple cores to increase throughput. Designed to be used together with NDPluginGather, which gathers the outputs from multiple plugins back into a single stream. Works differently from other plugins that do callbacks to downstream plugins. Other plugins pass each NDArray that they generate to all downstream plugins that have registered for callbacks. NDPluginScatter does not do this, rather it passes each NDArray to only one downstream plugin. Modified round-robin algorithm for choosing which plugin to pass the next NDArray to More complex to set up than multiple threads in a single plugin, but allows the plugins running in parallel to have different configurations or even be different plugins

NDPluginGather Used to gather NDArrays from multiple upstream plugins and merge them into a single stream. When used together with NDPluginScatter it allows multiple instances of a plugin to process NDArrays in parallel, utilizing multiple cores to increase throughput. Works differently from other plugins that receive callbacks from upstream plugins. Other plugins subscribe to NDArray callbacks from a single upstream plugin or driver. NDPluginGather allows subscribing to callbacks from any number of upstream plugins. Combines the NDArrays it receives into a single stream which it passes to all downstream plugins.

NDPluginScatter + V4 Distribute file writing to multiple IOCs (4096 x 3078 8-bit) IOC #1 IOC #2 IOC #3 IOC #4 ADSimDetector NDPluginScatter NDPluginPva NDPluginPva NDPluginPva pvaDriver pvaDriver pvaDriver NDFileHDF5 NDFileHDF5 NDFileHDF5 # IOCs Files/sec GB/sec 1 101.0 1.19 2 195.2 2.29 3 217.5 2.55

ADSupport New repository ADSupport Source code for all 3rd party libraries used by ADCore. hdf5, jpeg, GraphicsMagick, netCDF, nexus, szip, tiff, xml2, zlib ADBinaries no longer used. Pre-built libraries for Windows too difficult to maintain, now all built from source using EPICS build system ADSupport can be built for Windows (Visual Studio or MinGW, 32/64 bit, static/dynamic), Linux (currently Intel architectures only, 32/64 bit), Darwin vxWorks (currently big-endian 32-bit architectures only). vxWorks previously supported only netCDF file plugin All file saving plugins now supported on vxWorks 6.x (TIFF, JPEG, netCDF, HDF5, Nexus). HDF5 and Nexus are not supported on vxWorks 5.x because the compiler is too old. Could imagine migrating saveData to HDF5 since it now works on all platforms.

Roadmap: ADCore R4-0 Put more functionality into ADDriver base class Derived class would call ADDriver::doPluginCallbacks(), which would handle setting attributes, getting timestamp, calling plugins, etc. Simplify file saving modes (no more Single, Capture, Stream) and eliminate AutoSave Implement NDPluginFile::readFile() for TIFF, perhaps others Add flag to prevent overwriting files

Roadmap: ADCore R5-0 Change NDArray to NTNDArray for passing data to plugins Use PVDatabase “local” provider within IOC “pva” provider between IOCs Smart pointers automatically eliminate all unnecessary copying Eliminates need for NDPluginPva V4 clients can immediately receive data from any point in plugin chain Distribute load to multiple IOCs without pvaDriver Bruno Martins has demonstrated this working for ADSimDetector and NDPluginStats