30 namespace CUDF_EXPORT
cudf {
51 static std::unique_ptr<data_sink>
create(std::string
const& filepath);
59 static std::unique_ptr<data_sink>
create(std::vector<char>* buffer);
69 static std::unique_ptr<data_sink>
create();
91 static std::vector<std::unique_ptr<data_sink>>
create(std::vector<T>
const& args)
93 std::vector<std::unique_ptr<data_sink>> sinks;
94 sinks.reserve(args.size());
95 std::transform(args.cbegin(), args.cend(), std::back_inserter(sinks), [](
auto const& arg) {
96 return data_sink::create(arg);
146 return supports_device_write();
165 CUDF_FAIL(
"data_sink classes that support device_write must override it.");
194 CUDF_FAIL(
"data_sink classes that support device_write_async must override it.");
virtual void flush()=0
刷新写入到数据槽中的数据。
static std::vector< std::unique_ptr< data_sink > > create(std::vector< T > const &args)
创建数据槽向量,输入向量中的每个元素对应一个数据槽。
virtual void device_write(void const *gpu_data, size_t size, rmm::cuda_stream_view stream)
将缓冲区内容从 GPU 地址追加到数据槽。
virtual bool supports_device_write() const
此数据槽是否支持从 GPU 内存地址写入。
static std::unique_ptr< data_sink > create(cudf::io::data_sink *const user_sink)
创建一个包装的自定义用户数据槽。
virtual bool is_device_write_preferred(size_t size) const
估算对于给定大小的数据,直接从设备写入是否更优。
static std::unique_ptr< data_sink > create()
创建一个空数据槽(不执行实际 I/O 的数据槽)
static std::unique_ptr< data_sink > create(std::string const &filepath)
从文件路径创建一个数据槽。
virtual ~data_sink()
基类析构函数。
virtual size_t bytes_written()=0
返回写入此数据槽的总字节数。
virtual void host_write(void const *data, size_t size)=0
将缓冲区内容追加到数据槽。
virtual std::future< void > device_write_async(void const *gpu_data, size_t size, rmm::cuda_stream_view stream)
从 GPU 地址异步将缓冲区内容追加到数据槽。
static std::unique_ptr< data_sink > create(std::vector< char > *buffer)
从 std::vector 创建一个数据槽。
#define CUDF_FAIL(...)
指示代码已进入错误路径。