scalar.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2024, NVIDIA CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #pragma once
17 
18 #include <cudf/column/column.hpp>
19 #include <cudf/table/table.hpp>
20 #include <cudf/types.hpp>
23 
24 #include <rmm/cuda_stream_view.hpp>
25 #include <rmm/device_buffer.hpp>
26 #include <rmm/device_scalar.hpp>
27 #include <rmm/mr/device/per_device_resource.hpp>
28 #include <rmm/resource_ref.hpp>
29 
35 namespace cudf {
49 class scalar {
50  public:
51  virtual ~scalar() = default;
52  scalar& operator=(scalar const& other) = delete;
53  scalar& operator=(scalar&& other) = delete;
54 
60  [[nodiscard]] data_type type() const noexcept;
61 
68  void set_valid_async(bool is_valid, rmm::cuda_stream_view stream = cudf::get_default_stream());
69 
80  [[nodiscard]] bool is_valid(rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
81 
87  bool* validity_data();
88 
94  [[nodiscard]] bool const* validity_data() const;
95 
96  protected:
98  rmm::device_scalar<bool> _is_valid;
99 
100  scalar() = delete;
101 
106  scalar(scalar&& other) = default;
107 
115  scalar(scalar const& other,
116  rmm::cuda_stream_view stream = cudf::get_default_stream(),
117  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
118 
131  bool is_valid = false,
132  rmm::cuda_stream_view stream = cudf::get_default_stream(),
133  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
134 };
135 
136 namespace detail {
142 template <typename T>
143 class fixed_width_scalar : public scalar {
144  static_assert(is_fixed_width<T>(), "Unexpected non-fixed-width type.");
145 
146  public:
147  using value_type = T;
148 
149  ~fixed_width_scalar() override = default;
150 
156 
157  fixed_width_scalar& operator=(fixed_width_scalar const& other) = delete;
158  fixed_width_scalar& operator=(fixed_width_scalar&& other) = delete;
159 
168  rmm::cuda_stream_view stream = cudf::get_default_stream(),
169  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
170 
177  void set_value(T value, rmm::cuda_stream_view stream = cudf::get_default_stream());
178 
182  explicit operator value_type() const;
183 
190  T value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
191 
196  T* data();
197 
202  T const* data() const;
203 
204  protected:
205  rmm::device_scalar<T> _data;
206 
207  fixed_width_scalar() = delete;
208 
218  bool is_valid = true,
219  rmm::cuda_stream_view stream = cudf::get_default_stream(),
220  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
221 
230  fixed_width_scalar(rmm::device_scalar<T>&& data,
231  bool is_valid = true,
232  rmm::cuda_stream_view stream = cudf::get_default_stream(),
233  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
234 };
235 
236 } // namespace detail
237 
243 template <typename T>
245  static_assert(is_numeric<T>(), "Unexpected non-numeric type.");
246 
247  public:
248  numeric_scalar() = delete;
249  ~numeric_scalar() = default;
250 
255  numeric_scalar(numeric_scalar&& other) = default;
256 
257  numeric_scalar& operator=(numeric_scalar const& other) = delete;
258  numeric_scalar& operator=(numeric_scalar&& other) = delete;
259 
268  rmm::cuda_stream_view stream = cudf::get_default_stream(),
269  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
270 
280  bool is_valid = true,
281  rmm::cuda_stream_view stream = cudf::get_default_stream(),
282  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
283 
292  numeric_scalar(rmm::device_scalar<T>&& data,
293  bool is_valid = true,
294  rmm::cuda_stream_view stream = cudf::get_default_stream(),
295  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
296 };
297 
303 template <typename T>
304 class fixed_point_scalar : public scalar {
305  static_assert(is_fixed_point<T>(), "Unexpected non-fixed_point type.");
306 
307  public:
308  using rep_type = typename T::rep;
309  using value_type = T;
310 
311  fixed_point_scalar() = delete;
312  ~fixed_point_scalar() override = default;
313 
319 
320  fixed_point_scalar& operator=(fixed_point_scalar const& other) = delete;
321  fixed_point_scalar& operator=(fixed_point_scalar&& other) = delete;
322 
331  rmm::cuda_stream_view stream = cudf::get_default_stream(),
332  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
333 
344  numeric::scale_type scale,
345  bool is_valid = true,
346  rmm::cuda_stream_view stream = cudf::get_default_stream(),
347  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
348 
358  bool is_valid = true,
359  rmm::cuda_stream_view stream = cudf::get_default_stream(),
360  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
361 
371  bool is_valid = true,
372  rmm::cuda_stream_view stream = cudf::get_default_stream(),
373  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
374 
384  fixed_point_scalar(rmm::device_scalar<rep_type>&& data,
385  numeric::scale_type scale,
386  bool is_valid = true,
387  rmm::cuda_stream_view stream = cudf::get_default_stream(),
388  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
389 
396  rep_type value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
397 
404  T fixed_point_value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
405 
409  explicit operator value_type() const;
410 
416 
421  rep_type const* data() const;
422 
423  protected:
424  rmm::device_scalar<rep_type> _data;
425 };
426 
430 class string_scalar : public scalar {
431  public:
433 
434  string_scalar() = delete;
435  ~string_scalar() override = default;
436 
441  string_scalar(string_scalar&& other) = default;
442 
443  // string_scalar(string_scalar const& other) = delete;
444  string_scalar& operator=(string_scalar const& other) = delete;
445  string_scalar& operator=(string_scalar&& other) = delete;
446 
455  rmm::cuda_stream_view stream = cudf::get_default_stream(),
456  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
457 
468  string_scalar(std::string const& string,
469  bool is_valid = true,
470  rmm::cuda_stream_view stream = cudf::get_default_stream(),
471  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
472 
483  string_scalar(value_type const& source,
484  bool is_valid = true,
485  rmm::cuda_stream_view stream = cudf::get_default_stream(),
486  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
487 
498  string_scalar(rmm::device_scalar<value_type>& data,
499  bool is_valid = true,
500  rmm::cuda_stream_view stream = cudf::get_default_stream(),
501  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
502 
514  string_scalar(rmm::device_buffer&& data,
515  bool is_valid = true,
516  rmm::cuda_stream_view stream = cudf::get_default_stream(),
517  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
518 
522  explicit operator std::string() const;
523 
530  [[nodiscard]] std::string to_string(
531  rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
532 
539  [[nodiscard]] value_type value(rmm::cuda_stream_view stream = cudf::get_default_stream()) const;
540 
545  [[nodiscard]] size_type size() const;
546 
551  [[nodiscard]] char const* data() const;
552 
553  protected:
554  rmm::device_buffer _data{};
555 };
556 
563 template <typename T>
565  static_assert(is_chrono<T>(), "Unexpected non-chrono type");
566 
567  public:
568  chrono_scalar() = delete;
569  ~chrono_scalar() = default;
570 
575  chrono_scalar(chrono_scalar&& other) = default;
576 
577  chrono_scalar& operator=(chrono_scalar const& other) = delete;
578  chrono_scalar& operator=(chrono_scalar&& other) = delete;
579 
588  rmm::cuda_stream_view stream = cudf::get_default_stream(),
589  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
590 
600  bool is_valid = true,
601  rmm::cuda_stream_view stream = cudf::get_default_stream(),
602  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
603 
612  chrono_scalar(rmm::device_scalar<T>&& data,
613  bool is_valid = true,
614  rmm::cuda_stream_view stream = cudf::get_default_stream(),
615  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
616 };
617 
624 template <typename T>
625 class timestamp_scalar : public chrono_scalar<T> {
626  public:
627  static_assert(is_timestamp<T>(), "Unexpected non-timestamp type");
629  using rep_type = typename T::rep;
630 
631  timestamp_scalar() = delete;
632 
637  timestamp_scalar(timestamp_scalar&& other) = default;
638 
647  rmm::cuda_stream_view stream = cudf::get_default_stream(),
648  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
649 
660  template <typename Duration2>
661  timestamp_scalar(Duration2 const& value,
662  bool is_valid,
663  rmm::cuda_stream_view stream = cudf::get_default_stream(),
664  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
665 
671  rep_type ticks_since_epoch(rmm::cuda_stream_view stream);
672 };
673 
680 template <typename T>
681 class duration_scalar : public chrono_scalar<T> {
682  public:
683  static_assert(is_duration<T>(), "Unexpected non-duration type");
685  using rep_type = typename T::rep;
686 
687  duration_scalar() = delete;
688 
693  duration_scalar(duration_scalar&& other) = default;
694 
703  rmm::cuda_stream_view stream = cudf::get_default_stream(),
704  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
705 
715  bool is_valid,
716  rmm::cuda_stream_view stream = cudf::get_default_stream(),
717  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
718 
724  rep_type count(rmm::cuda_stream_view stream);
725 };
726 
730 class list_scalar : public scalar {
731  public:
732  list_scalar() = delete;
733  ~list_scalar() override = default;
734 
739  list_scalar(list_scalar&& other) = default;
740 
741  list_scalar& operator=(list_scalar const& other) = delete;
742  list_scalar& operator=(list_scalar&& other) = delete;
743 
751  list_scalar(list_scalar const& other,
752  rmm::cuda_stream_view stream = cudf::get_default_stream(),
753  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
754 
766  bool is_valid = true,
767  rmm::cuda_stream_view stream = cudf::get_default_stream(),
768  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
769 
779  bool is_valid = true,
780  rmm::cuda_stream_view stream = cudf::get_default_stream(),
781  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
782 
787  [[nodiscard]] column_view view() const;
788 
789  private:
790  cudf::column _data;
791 };
792 
796 class struct_scalar : public scalar {
797  public:
798  struct_scalar() = delete;
799  ~struct_scalar() override = default;
800 
805  struct_scalar(struct_scalar&& other) = default;
806  struct_scalar& operator=(struct_scalar const& other) = delete;
807  struct_scalar& operator=(struct_scalar&& other) = delete;
808 
817  rmm::cuda_stream_view stream = cudf::get_default_stream(),
818  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
819 
831  bool is_valid = true,
832  rmm::cuda_stream_view stream = cudf::get_default_stream(),
833  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
834 
846  bool is_valid = true,
847  rmm::cuda_stream_view stream = cudf::get_default_stream(),
848  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
849 
862  bool is_valid = true,
863  rmm::cuda_stream_view stream = cudf::get_default_stream(),
864  rmm::device_async_resource_ref mr = rmm::mr::get_current_device_resource());
865 
870  [[nodiscard]] table_view view() const;
871 
872  private:
873  table _data;
874 
878  void assert_valid_size();
879 
889  static table init_data(table&& data,
890  bool is_valid,
891  rmm::cuda_stream_view stream,
892  rmm::device_async_resource_ref mr);
893 };
894  // end of group
896 } // namespace cudf
An owning class to represent a timestamp/duration value in device memory.
Definition: scalar.hpp:564
chrono_scalar(chrono_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new chrono scalar object by deep copying another.
chrono_scalar(rmm::device_scalar< T > &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new chrono scalar object from existing device memory.
chrono_scalar(chrono_scalar &&other)=default
Move constructor for chrono_scalar.
chrono_scalar(T value, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new chrono scalar object.
A non-owning, immutable view of device data as a column of elements, some of which may be null as ind...
A container of nullable device data as a column of elements.
Definition: column.hpp:48
Indicator for the logical data type of an element in a column.
Definition: types.hpp:241
An owning class to represent a fixed-width type value in device memory.
Definition: scalar.hpp:143
rmm::device_scalar< T > _data
device memory containing the value
Definition: scalar.hpp:205
void set_value(T value, rmm::cuda_stream_view stream=cudf::get_default_stream())
Set the value of the scalar.
T value(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Get the value of the scalar.
fixed_width_scalar(fixed_width_scalar &&other)=default
Move constructor for fixed_width_scalar.
fixed_width_scalar(T value, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed width scalar object.
fixed_width_scalar(rmm::device_scalar< T > &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed width scalar object from existing device memory.
T const * data() const
Returns a const raw pointer to the value in device memory.
T value_type
Type of the value held by the scalar.
Definition: scalar.hpp:147
fixed_width_scalar(fixed_width_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed-width scalar object by deep copying another.
T * data()
Returns a raw pointer to the value in device memory.
An owning class to represent a duration value in device memory.
Definition: scalar.hpp:681
duration_scalar(rep_type value, bool is_valid, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new duration scalar object from tick counts.
rep_type count(rmm::cuda_stream_view stream)
Returns the duration in number of ticks.
duration_scalar(duration_scalar &&other)=default
Move constructor for duration_scalar.
typename T::rep rep_type
The duration's underlying representation type.
Definition: scalar.hpp:685
duration_scalar(duration_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new duration scalar object by deep copying another.
An owning class to represent a fixed_point number in device memory.
Definition: scalar.hpp:304
fixed_point_scalar(T value, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed_point scalar object from a fixed_point number.
rmm::device_scalar< rep_type > _data
device memory containing the value
Definition: scalar.hpp:424
fixed_point_scalar(fixed_point_scalar &&other)=default
Move constructor for fixed_point_scalar.
rep_type value(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Get the value of the scalar.
T value_type
The value type of the fixed_point number.
Definition: scalar.hpp:309
fixed_point_scalar(rep_type value, numeric::scale_type scale, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed_point scalar object from already shifted value and scale.
rep_type const * data() const
Returns a const raw pointer to the value in device memory.
T fixed_point_value(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Get the decimal32, decimal64 or decimal128.
fixed_point_scalar(rep_type value, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed_point scalar object from a value and default 0-scale.
fixed_point_scalar(rmm::device_scalar< rep_type > &&data, numeric::scale_type scale, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed_point scalar object from existing device memory.
fixed_point_scalar(fixed_point_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new fixed_point scalar object by deep copying another.
rep_type * data()
Returns a raw pointer to the value in device memory.
typename T::rep rep_type
The representation type of the fixed_point number.
Definition: scalar.hpp:308
An owning class to represent a list value in device memory.
Definition: scalar.hpp:730
column_view view() const
Returns a non-owning, immutable view to underlying device data.
list_scalar(cudf::column_view const &data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new list scalar object from column_view.
list_scalar(cudf::column &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new list scalar object from existing column.
list_scalar(list_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new list scalar object by deep copying another.
list_scalar(list_scalar &&other)=default
Move constructor for list_scalar.
An owning class to represent a numerical value in device memory.
Definition: scalar.hpp:244
numeric_scalar(numeric_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new numeric scalar object by deep copying another.
numeric_scalar(numeric_scalar &&other)=default
Move constructor for numeric_scalar.
numeric_scalar(T value, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new numeric scalar object.
numeric_scalar(rmm::device_scalar< T > &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new numeric scalar object from existing device memory.
An owning class to represent a singular value.
Definition: scalar.hpp:49
bool is_valid(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Indicates whether the scalar contains a valid value.
rmm::device_scalar< bool > _is_valid
Device bool signifying validity.
Definition: scalar.hpp:98
scalar(scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new scalar object by deep copying another.
void set_valid_async(bool is_valid, rmm::cuda_stream_view stream=cudf::get_default_stream())
Updates the validity of the value.
scalar(scalar &&other)=default
Move constructor for scalar.
data_type _type
Logical type of value in the scalar.
Definition: scalar.hpp:97
scalar(data_type type, bool is_valid=false, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new scalar object.
bool * validity_data()
Returns a raw pointer to the validity bool in device memory.
data_type type() const noexcept
Returns the scalar's logical value type.
An owning class to represent a string in device memory.
Definition: scalar.hpp:430
string_scalar(string_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new string scalar object by deep copying another string_scalar.
string_scalar(rmm::device_buffer &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new string scalar object by moving an existing string data buffer.
std::string to_string(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Get the value of the scalar in a host std::string.
string_scalar(std::string const &string, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new string scalar object.
rmm::device_buffer _data
device memory containing the string
Definition: scalar.hpp:554
size_type size() const
Returns the size of the string in bytes.
string_scalar(string_scalar &&other)=default
Move constructor for string_scalar.
value_type value(rmm::cuda_stream_view stream=cudf::get_default_stream()) const
Get the value of the scalar as a string_view.
string_scalar(value_type const &source, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new string scalar object from string_view.
string_scalar(rmm::device_scalar< value_type > &data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new string scalar object from string_view in device memory.
char const * data() const
Returns a raw pointer to the string in device memory.
A non-owning, immutable view of device data that is a variable length char array representing a UTF-8...
Definition: string_view.hpp:44
An owning class to represent a struct value in device memory.
Definition: scalar.hpp:796
table_view view() const
Returns a non-owning, immutable view to underlying device data.
struct_scalar(table_view const &data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new struct scalar object from table_view.
struct_scalar(struct_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new struct scalar object by deep copying another.
struct_scalar(host_span< column_view const > data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new struct scalar object from a host_span of column_views.
struct_scalar(table &&data, bool is_valid=true, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new struct scalar object from an existing table in device memory.
struct_scalar(struct_scalar &&other)=default
Move constructor for struct_scalar.
A set of cudf::column_view's of the same size.
Definition: table_view.hpp:187
A set of cudf::column's of the same size.
Definition: table.hpp:41
An owning class to represent a timestamp value in device memory.
Definition: scalar.hpp:625
timestamp_scalar(timestamp_scalar &&other)=default
Move constructor for timestamp_scalar.
typename T::rep rep_type
The underlying representation type of the timestamp.
Definition: scalar.hpp:629
timestamp_scalar(timestamp_scalar const &other, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new timestamp scalar object by deep copying another.
rep_type ticks_since_epoch(rmm::cuda_stream_view stream)
Returns the duration in number of ticks since the UNIX epoch.
timestamp_scalar(Duration2 const &value, bool is_valid, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=rmm::mr::get_current_device_resource())
Construct a new timestamp scalar object from a duration that is convertible to T::duration.
Class definition for cudf::column.
rmm::cuda_stream_view const get_default_stream()
Get the current default stream.
scale_type
The scale type for fixed_point.
Definition: fixed_point.hpp:43
int32_t size_type
Row index type for columns and tables.
Definition: types.hpp:93
@ EMPTY
Always null with no underlying data.
cuDF interfaces
Definition: aggregation.hpp:34
C++20 std::span with reduced feature set.
Definition: span.hpp:224
Class definition for cudf::table.
Type declarations for libcudf.