Project
Loading...
Searching...
No Matches
typetraits.h
Go to the documentation of this file.
1// Copyright 2019-2023 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16#ifndef RANS_INTERNAL_COMMON_TYPETRAITS_H_
17#define RANS_INTERNAL_COMMON_TYPETRAITS_H_
18
21
24
25#ifdef RANS_SIMD
27#endif
28
31
32namespace o2::rans
33{
34namespace internal
35{
36
37template <typename T>
39
40template <size_t lowerBound_V>
41struct getCoderTag<CompatEncoderImpl<lowerBound_V>> : public std::integral_constant<CoderTag, CoderTag::Compat> {
42};
43
44#ifdef RANS_SINGLE_STREAM
45template <size_t lowerBound_V>
46struct getCoderTag<SingleStreamEncoderImpl<lowerBound_V>> : public std::integral_constant<CoderTag, CoderTag::SingleStream> {
47};
48#endif /* RANS_SINGLE_STREAM */
49
50#ifdef RANS_SSE
51template <size_t lowerBound_V>
52struct getCoderTag<SSEEncoderImpl<lowerBound_V>> : public std::integral_constant<CoderTag, CoderTag::SSE> {
53};
54#endif /* RANS_SSE */
55
56#ifdef RANS_AVX2
57template <size_t lowerBound_V>
58struct getCoderTag<AVXEncoderImpl<lowerBound_V>> : public std::integral_constant<CoderTag, CoderTag::AVX2> {
59};
60#endif /* RANS_AVX2 */
61
62template <class encoderImpl_T, class symbolTable_T, size_t nStreams_V>
63struct getCoderTag<Encoder<encoderImpl_T, symbolTable_T, nStreams_V>> : public getCoderTag<encoderImpl_T> {
64};
65
66template <typename T>
68
69template <CoderTag tag_V>
71 using type = Symbol;
72};
73
74template <>
78
79template <typename T>
81
82template <size_t lowerBound_V>
83struct getStreamingLowerBound<CompatEncoderImpl<lowerBound_V>> : public std::integral_constant<size_t, lowerBound_V> {
84};
85
86#ifdef RANS_SINGLE_STREAM
87template <size_t lowerBound_V>
88struct getStreamingLowerBound<SingleStreamEncoderImpl<lowerBound_V>> : public std::integral_constant<size_t, lowerBound_V> {
89};
90#endif /* RANS_SINGLE_STREAM */
91
92#ifdef RANS_SSE
93template <size_t lowerBound_V>
94struct getStreamingLowerBound<SSEEncoderImpl<lowerBound_V>> : public std::integral_constant<size_t, lowerBound_V> {
95};
96#endif /* RANS_SSE */
97
98#ifdef RANS_AVX2
99template <size_t lowerBound_V>
100struct getStreamingLowerBound<AVXEncoderImpl<lowerBound_V>> : public std::integral_constant<size_t, lowerBound_V> {
101};
102#endif /* RANS_AVX2 */
103
104template <size_t lowerBound_V>
105struct getStreamingLowerBound<DecoderImpl<lowerBound_V>> : public std::integral_constant<size_t, lowerBound_V> {
106};
107
108template <typename T>
110
111} // namespace internal
112
113namespace utils
114{
117
118} // namespace utils
119} // namespace o2::rans
120
121#endif /* RANS_INTERNAL_COMMON_TYPETRAITS_H_ */
Operations to decode a rANS stream.
configStandalone Light OpenGL display display_light Apply smoothing to points Enable Z buffer Highlight links Highlight seeds Highlight sector tracks Highlight final tracks Show individual Show related Highlight grid Show only individual collision Color clusters belonging to track objects Set line Enable drawing TPC data Enable drawing TOF data Enable drawing magnetic field Set field line step count Invert colors configStandalone Heavy OpenGL display display_heavy Show tracks with ITS contribution Show tracks with TOF contribution Enable propagation of loopers Show clusters at nominal x of pad row for early transformed data Split CE tracks when they cross the central Mark clusters Mark adjacent clusters Hide rejected tracks Apply filter on tracks to be displayed Separate increase X h configStandalone Camera window renderer OpenGL display display_camera Orient the camera such that the y axis is always upwards Full Screen MultiSample Anti Downsampling Anti Enable Vertical Sync Target frame or if the backend cannot limit to the refresh Use OpenGL indirect draws to reduce number of draw calls Display h configStandalone Vulkan display display_vulkan Have uniform buffers in host accessible device memory h internal
rANS encoding operations that encode multiple symbols simultaniously using SIMD. Unified implementati...
rANS encoding operations based on ryg's fast algorithm and a naive rANS implementation for all 64Bit ...
Contains statistical information for one source symbol, required for encoding/decoding.
Decoder - User facing class to decode a rANS encoded stream back into the source data based on the sa...
Encoder - User facing class to perform rANS entropy coding of source symbols onto a rANS state based ...
constexpr CoderTag getCoderTag_v
Definition typetraits.h:67
constexpr size_t getStreamingLowerBound_v
Definition typetraits.h:109
Common utility functions.