Skip to Main content Skip to Navigation
Poster communications

go-hist: a multi-threaded Go package for histogramming

Abstract : Current HENP libraries and frameworks were written before multicore systems became widely deployed and used. From this environment, a 'single-thread' processing model naturally emerged but the implicit assumptions it encouraged are greatly impairing our abilities to scale in a multicore/manycore world. Thanks to C++11, C++ is finally slowly catching up with regard to concurrency constructs, at the price of further complicating the language and its standard library. Instead, the approach of the Go language is to provide simple concurrency enabling building blocks, readily integrated into the language, in the hope that these goroutines and channels will help to design, write and maintain concurrent applications. To further investigate whether Go is a suitable C++ and python replacement language for HENP, we developed go-hist, a multi-threaded Go package for histogramming. We will first present the overall design of the go-hist package and the various building blocks (goroutines, channels and wait-groups) provided by the Go language which are then leveraged by this library. A special emphasis will be put on the current SIMD support available in Go and thus how vectorization can be leveraged in histogramming code: a cornerstone for automatic performance scalability on the ever-wider-registers architectures the future has in store. Then, I/O considerations, such as read/write performances, ease of serialization and disk sizes will be discussed, for each of the currently implemented backends (protobuf, gob and json.) Finally, comparisons with ROOT, Java ROOT and inlib/exlib (an AIDA implementation in C++) performances will be presented.
Document type :
Poster communications
Complete list of metadatas

http://hal.in2p3.fr/in2p3-00872849
Contributor : Sabine Starita <>
Submitted on : Monday, October 14, 2013 - 2:59:51 PM
Last modification on : Wednesday, September 16, 2020 - 4:24:40 PM

Identifiers

  • HAL Id : in2p3-00872849, version 1

Collections

IN2P3 | LAL | CNRS

Citation

S. Binet. go-hist: a multi-threaded Go package for histogramming. 20th International Conference on Computing in High Energy and Nuclear Physics (CHEP), Oct 2013, Amsterdam, Netherlands. ⟨in2p3-00872849⟩

Share

Metrics

Record views

99