C++ API#

通用#

namespace nvcomp#
class NVCompException#
#include <nvcomp.hpp>

nvcomp C++ 方法抛出的顶级异常。

公共函数

inline NVCompException(nvcompStatus_t err, const std::string &msg)#

创建一个新的 NVCompException

参数:
  • err[in] 与异常关联的错误。

  • msg[in] 错误消息。

inline nvcompStatus_t get_error() const#

私有成员

nvcompStatus_t m_err#
namespace nvcomp

类型定义

typedef std::function<void*(size_t)> AllocFn_t#
std::function< void(void *, size_t) DeAllocFn_t )

枚举

enum BitstreamKind#

定义 buffer 在 nvcomp Manager 中的压缩方式。

enumerator NVCOMP_NATIVE#

每个输入 buffer 根据管理器设置进行分块并并行压缩。允许计算校验和。在压缩数据的开头添加带有 nvCOMP 元数据的自定义标头。

enumerator RAW#

按原样压缩输入数据,仅使用底层压缩算法。不添加带有 nvCOMP 元数据的标头。

enumerator WITH_UNCOMPRESSED_SIZE#

类似于 RAW,但在压缩数据的开头添加仅包含未压缩大小的自定义标头。

enum ChecksumPolicy#

enumerator NoComputeNoVerify#

在压缩期间,不计算校验和。在解压缩期间,不验证校验和。

enumerator ComputeAndNoVerify#

在压缩期间,计算校验和。在解压缩期间,不尝试验证校验和。

enumerator NoComputeAndVerifyIfPresent#

在压缩期间,不计算校验和。在解压缩期间,如果包含校验和,则验证它们。

enumerator ComputeAndVerifyIfPresent#

在压缩期间,计算校验和。在解压缩期间,如果包含校验和,则验证它们。

enumerator ComputeAndVerify#

在压缩期间,计算校验和。在解压缩期间,验证校验和。如果在压缩 buffer 中未包含校验和,则在 configure_decompression 时将抛出运行时错误。

struct CompressionConfig#
#include <nvcompManager.hpp>

用于聚合有关特定 buffer 压缩信息的配置。

包含指向 nvcompStatus 的 “PinnedPtrHandle”。压缩完成后,用户可以检查驻留在 pinned host 内存中的结果状态。

公共函数

CompressionConfig(
PinnedPtrPool<nvcompStatus_t> &pool,
size_t uncompressed_buffer_size,
)#

给定 nvcompStatus_t 内存池,构造配置。

nvcompStatus_t *get_status() const#

获取原始 nvcompStatus_t*。

CompressionConfig(CompressionConfig &&other)#
CompressionConfig(const CompressionConfig &other)#
CompressionConfig &operator=(CompressionConfig &&other)#
CompressionConfig &operator=(const CompressionConfig &other)#
~CompressionConfig()#

公共成员

size_t uncompressed_buffer_size#
size_t max_compressed_buffer_size#
size_t num_chunks#
bool compute_checksums#

私有成员

std::shared_ptr<CompressionConfigImpl> impl#
struct DecompressionConfig#
#include <nvcompManager.hpp>

用于聚合有关特定解压缩信息的配置。

包含指向 nvcompStatus 的 “PinnedPtrHandle”。解压缩完成后,用户可以检查驻留在 pinned host 内存中的结果状态。

公共函数

DecompressionConfig(PinnedPtrPool<nvcompStatus_t> &pool)#

给定 nvcompStatus_t 内存池,构造配置。

nvcompStatus_t *get_status() const#

获取 nvcompStatus_t*。

DecompressionConfig(DecompressionConfig &&other)#
DecompressionConfig(const DecompressionConfig &other)#
DecompressionConfig &operator=(DecompressionConfig &&other)#
DecompressionConfig &operator=(const DecompressionConfig &other)#
~DecompressionConfig()#

公共成员

size_t decomp_data_size#
size_t num_chunks#
bool checksums_present#

私有成员

std::shared_ptr<DecompressionConfigImpl> impl#
struct nvcompManagerBase#
#include <nvcompManager.hpp>

定义 nvCOMP 高级接口的抽象基类。

nvcomp::PimplManager 继承

公共函数

virtual CompressionConfig configure_compression(
const size_t uncomp_buffer_size,
) = 0#

配置单个 buffer 的压缩。

此例程计算所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。

参数:

uncomp_buffer_size[in] 未压缩的输入数据大小(以字节为单位)。

返回值:

为提供的大小返回 CompressionConfig

virtual std::vector<CompressionConfig> configure_compression(
const std::vector<size_t> &uncomp_buffer_sizes,
) = 0#

配置一批 buffer 的压缩。

此例程计算批处理中每个元素所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。

参数:

uncomp_buffer_sizes[in] 批处理中每个元素的未压缩输入数据大小(以字节为单位)的向量。

返回值:

包含为提供的每个大小返回的 CompressionConfig 的向量。

virtual void compress(
const uint8_t *uncomp_buffer,
uint8_t *comp_buffer,
const CompressionConfig &comp_config,
size_t *comp_size = nullptr,
) = 0#

为单个 buffer 异步执行压缩。

参数:
  • uncomp_buffer[in] 未压缩的输入数据。(指向设备连续内存的指针)。

  • comp_buffer[out] 压缩数据的输出位置。(指向设备连续内存的指针)大小要求在 CompressionConfig 中提供。

  • comp_config[in] 使用 configure_compression 为当前 uncomp_buffer 生成。

  • comp_size[out] 压缩后输出大小(以字节为单位)的位置。(指向设备上单个 size_t 变量的指针)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

virtual void compress(
const uint8_t *const *uncomp_buffers,
uint8_t *const *comp_buffers,
const std::vector<CompressionConfig> &comp_configs,
size_t *comp_sizes = nullptr,
) = 0#

为一批 buffer 异步执行压缩。批处理大小从 comp_configs 大小推断。

参数:
  • uncomp_buffers[in] 未压缩的输入数据。(指向设备连续内存指针的 host 数组的指针)

  • comp_buffers[out] 压缩数据的输出位置。(指向设备连续内存指针的 host 数组的指针)大小要求在 CompressionConfig 中提供。

  • comp_configs[in] 使用 configure_compression 为当前 uncomp_buffers 生成。

  • comp_sizes[out] 压缩后输出大小(以字节为单位)的位置。(指向设备数组的指针,其大小足以包含 batch_size 个 size_t 类型的元素)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

virtual DecompressionConfig configure_decompression(
const uint8_t *comp_buffer,
const size_t *comp_size = nullptr,
) = 0#

使用压缩 buffer 配置单个 buffer 的解压缩。

同步用户流。

  • 如果 bitstream 类型为 NVCOMP_NATIVE,它将解析 comp_buffer 中的标头。

  • 如果 bitstream 类型为 RAW,则可能需要(例如,对于 LZ4)解析整个 comp_buffer,这可能比其他选项慢得多。

  • 如果 bitstream 类型为 WITH_UNCOMPRESSED_SIZE,它将从 comp_buffer 的开头读取大小。

参数:
  • comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

  • comp_size[in] 压缩的输入数据的大小。这仅在 RAW 格式中是必需的。(指向包含压缩大小的设备变量的指针)

返回值:

为提供的 comp_buffer 返回 DecompressionConfig

virtual std::vector<DecompressionConfig> configure_decompression(
const uint8_t *const *comp_buffers,
size_t batch_size,
const size_t *comp_sizes = nullptr,
) = 0#

使用压缩 buffer 配置一批 buffer 的解压缩。

同步用户流。

  • 如果 bitstream 类型为 NVCOMP_NATIVE,它将解析 comp_buffers 中的标头。

  • 如果 bitstream 类型为 RAW,则可能需要(例如,对于 LZ4)解析整个 comp_buffers,这可能比其他选项慢得多。

  • 如果 bitstream 类型为 WITH_UNCOMPRESSED_SIZE,它将从 comp_buffers 的开头读取大小。

参数:
  • comp_buffers[in] 压缩的输入数据。(指向设备连续内存指针的 host 数组的指针)

  • batch_size[in] 批处理的大小。

  • comp_sizes[in] 压缩的输入数据的大小。(指向设备数组的指针)这仅在 RAW 格式中是必需的。

返回值:

为提供的每个 comp_buffer 返回 DecompressionConfig 的向量。

virtual DecompressionConfig configure_decompression(
const CompressionConfig &comp_config,
) = 0#

使用 CompressionConfig 对象配置单个 buffer 的解压缩。

不同步用户流。

参数:

comp_config[in] 用于压缩 buffer 的配置。

返回值:

基于提供的压缩配置返回 DecompressionConfig

virtual std::vector<DecompressionConfig> configure_decompression(
const std::vector<CompressionConfig> &comp_configs,
) = 0#

使用 CompressionConfig 对象配置一批 buffer 的解压缩。

不同步用户流。

参数:

comp_configs[in] 用于压缩一批 buffer 的配置向量。

返回值:

基于提供的压缩配置返回 DecompressionConfig 的向量。

virtual void decompress(
uint8_t *decomp_buffer,
const uint8_t *comp_buffer,
const DecompressionConfig &decomp_config,
size_t *comp_size = nullptr,
) = 0#

异步执行单个 buffer 的解压缩。

参数:
  • decomp_buffer[out] 解压缩数据的输出位置。(指向设备连续内存的指针)大小要求在 DecompressionConfig 中提供。

  • comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

  • decomp_config[in] 从给定 comp_buffer 的 configure_decompression 获得的结果。包含 host/设备可访问内存中的 nvcompStatus*,以允许错误检查。

  • comp_size[in] 传递的压缩输入数据的大小。(指向设备上单个 size_t 变量的指针)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

virtual void decompress(
uint8_t *const *decomp_buffers,
const uint8_t *const *comp_buffers,
const std::vector<DecompressionConfig> &decomp_configs,
const size_t *comp_sizes = nullptr,
) = 0#

异步执行一批缓冲区的解压缩操作。

参数:
  • decomp_buffers[out] 解压缩数据的输出位置。(指向设备连续内存指针的主机数组的指针)大小要求在 DecompressionConfig 中提供。

  • comp_buffers[in] 压缩后的输入数据。(指向包含未压缩数据的设备连续内存指针的主机数组的指针)

  • decomp_configs[in] 由给定 comp_buffers 的 configure_decompression 产生。在主机/设备可访问的内存中包含 nvcompStatus*,以允许错误检查。

  • comp_sizes[in] 传递的压缩输入数据的大小。(指向设备数组的指针,大小足以容纳 batch_size 个 size_t 类型的元素)当比特流类型为 NVCOMP_NATIVE 时为可选。

virtual void set_scratch_allocators(
const AllocFn_t &alloc_fn,
const DeAllocFn_t &dealloc_fn,
) = 0#

允许用户提供用于分配/释放内存的函数。

管理器需要暂存内存来执行其操作。默认情况下,它将使用内部分配器,这些分配器利用 cudaMallocAsync / cudaFreeAsync。用户可以使用此 API 覆盖分配函数。所需的签名是 void* alloc_fn(size_t alloc_size) 和 void dealloc_fn(void* buffer, size_t alloc_size)

此 API 复制分配函数。复制的函数必须有效,直到 1) 调用 deallocate_gpu_mem() 或 2) nvcompManager 实例被销毁

如果先前已分配了暂存缓冲区,则首先使用先前的 dealloc_fn(或者如果之前未提供,则使用 cudaFreeAsync)对其进行释放

参数:
  • alloc_fn[in] 用于分配新的暂存结果缓冲区的主机函数。

  • dealloc_fn[in] 用于释放暂存结果缓冲区的主机函数。

virtual size_t get_compressed_output_size(
const uint8_t *comp_buffer,
) = 0#

计算给定缓冲区压缩后的输出大小(以字节为单位)。

同步复制压缩缓冲区的大小到主机变量以供返回。

只能与 NVCOMP_NATIVE 比特流类型一起使用。

要获取压缩大小,也可以从传递给压缩函数的 comp_sizes 中 cudaMemcpy 大小。

参数:

comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

返回值:

压缩缓冲区的大小。

virtual std::vector<size_t> get_compressed_output_size(
const uint8_t *const *comp_buffers,
size_t batch_size,
) = 0#

计算给定一批缓冲区压缩后的输出大小(以字节为单位)。

同步复制压缩缓冲区的大小到主机变量以供返回。

只能与 NVCOMP_NATIVE 比特流类型一起使用。

要获取压缩大小,也可以从传递给压缩函数的 comp_sizes 中 cudaMemcpy 大小。

参数:

comp_buffers[in] 压缩后的输入数据。(指向设备连续内存指针的主机数组的指针)

返回值:

一个向量,包含批次中每个压缩缓冲区的大小。

virtual void deallocate_gpu_mem() = 0#

释放 nvCOMP HLIF 使用的任何内部 GPU 内存。

如果通过 set_scratch_allocators() 指定了解除分配器,则将此内存返回给解除分配器。

virtual ~nvcompManagerBase()#
struct PimplManager :: public nvcomp::nvcompManagerBase#
#include <nvcompManager.hpp>

nvcompManagerBase 和算法特定实现类之间的接口类。

子类包括:nvcomp::ANSManagernvcomp::BitcompManagernvcomp::CascadedManagernvcomp::DeflateManagernvcomp::GdeflateManager、nvcomp::GzipManager、nvcomp::LZ4Managernvcomp::SnappyManagernvcomp::ZstdManager

公共函数

inline virtual ~PimplManager()#
inline PimplManager()#
PimplManager(const PimplManager&)#
PimplManager &operator=(const PimplManager&)#
inline virtual CompressionConfig configure_compression(
const size_t uncomp_buffer_size,
) override#

配置单个 buffer 的压缩。

此例程计算所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。

参数:

uncomp_buffer_size[in] 未压缩的输入数据大小(以字节为单位)。

返回值:

为提供的大小返回 CompressionConfig

inline virtual std::vector<CompressionConfig> configure_compression(
const std::vector<size_t> &uncomp_buffer_sizes,
) override#

配置一批 buffer 的压缩。

此例程计算批处理中每个元素所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。

参数:

uncomp_buffer_sizes[in] 批处理中每个元素的未压缩输入数据大小(以字节为单位)的向量。

返回值:

包含为提供的每个大小返回的 CompressionConfig 的向量。

inline virtual void compress(
const uint8_t *uncomp_buffer,
uint8_t *comp_buffer,
const CompressionConfig &comp_config,
size_t *comp_size = nullptr,
) override#

为单个 buffer 异步执行压缩。

参数:
  • uncomp_buffer[in] 未压缩的输入数据。(指向设备连续内存的指针)。

  • comp_buffer[out] 压缩数据的输出位置。(指向设备连续内存的指针)大小要求在 CompressionConfig 中提供。

  • comp_config[in] 使用 configure_compression 为当前 uncomp_buffer 生成。

  • comp_size[out] 压缩后输出大小(以字节为单位)的位置。(指向设备上单个 size_t 变量的指针)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

inline virtual void compress(
const uint8_t *const *uncomp_buffers,
uint8_t *const *comp_buffers,
const std::vector<CompressionConfig> &comp_configs,
size_t *comp_sizes = nullptr,
) override#

为一批 buffer 异步执行压缩。批处理大小从 comp_configs 大小推断。

参数:
  • uncomp_buffers[in] 未压缩的输入数据。(指向设备连续内存指针的 host 数组的指针)

  • comp_buffers[out] 压缩数据的输出位置。(指向设备连续内存指针的 host 数组的指针)大小要求在 CompressionConfig 中提供。

  • comp_configs[in] 使用 configure_compression 为当前 uncomp_buffers 生成。

  • comp_sizes[out] 压缩后输出大小(以字节为单位)的位置。(指向设备数组的指针,其大小足以包含 batch_size 个 size_t 类型的元素)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

inline virtual DecompressionConfig configure_decompression(
const uint8_t *comp_buffer,
const size_t *comp_size = nullptr,
) override#

使用压缩 buffer 配置单个 buffer 的解压缩。

同步用户流。

  • 如果 bitstream 类型为 NVCOMP_NATIVE,它将解析 comp_buffer 中的标头。

  • 如果 bitstream 类型为 RAW,则可能需要(例如,对于 LZ4)解析整个 comp_buffer,这可能比其他选项慢得多。

  • 如果 bitstream 类型为 WITH_UNCOMPRESSED_SIZE,它将从 comp_buffer 的开头读取大小。

参数:
  • comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

  • comp_size[in] 压缩的输入数据的大小。这仅在 RAW 格式中是必需的。(指向包含压缩大小的设备变量的指针)

返回值:

为提供的 comp_buffer 返回 DecompressionConfig

inline virtual std::vector<DecompressionConfig> configure_decompression(
const uint8_t *const *comp_buffers,
size_t batch_size,
const size_t *comp_sizes = nullptr,
) override#

使用压缩 buffer 配置一批 buffer 的解压缩。

同步用户流。

  • 如果 bitstream 类型为 NVCOMP_NATIVE,它将解析 comp_buffers 中的标头。

  • 如果 bitstream 类型为 RAW,则可能需要(例如,对于 LZ4)解析整个 comp_buffers,这可能比其他选项慢得多。

  • 如果 bitstream 类型为 WITH_UNCOMPRESSED_SIZE,它将从 comp_buffers 的开头读取大小。

参数:
  • comp_buffers[in] 压缩的输入数据。(指向设备连续内存指针的 host 数组的指针)

  • batch_size[in] 批处理的大小。

  • comp_sizes[in] 压缩的输入数据的大小。(指向设备数组的指针)这仅在 RAW 格式中是必需的。

返回值:

为提供的每个 comp_buffer 返回 DecompressionConfig 的向量。

inline virtual DecompressionConfig configure_decompression(
const CompressionConfig &comp_config,
) override#

使用 CompressionConfig 对象配置单个 buffer 的解压缩。

不同步用户流。

参数:

comp_config[in] 用于压缩 buffer 的配置。

返回值:

基于提供的压缩配置返回 DecompressionConfig

inline virtual std::vector<DecompressionConfig> configure_decompression(
const std::vector<CompressionConfig> &comp_configs,
) override#

使用 CompressionConfig 对象配置一批 buffer 的解压缩。

不同步用户流。

参数:

comp_configs[in] 用于压缩一批 buffer 的配置向量。

返回值:

基于提供的压缩配置返回 DecompressionConfig 的向量。

inline virtual void decompress(
uint8_t *decomp_buffer,
const uint8_t *comp_buffer,
const DecompressionConfig &decomp_config,
size_t *comp_size = nullptr,
) override#

异步执行单个 buffer 的解压缩。

参数:
  • decomp_buffer[out] 解压缩数据的输出位置。(指向设备连续内存的指针)大小要求在 DecompressionConfig 中提供。

  • comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

  • decomp_config[in] 从给定 comp_buffer 的 configure_decompression 获得的结果。包含 host/设备可访问内存中的 nvcompStatus*,以允许错误检查。

  • comp_size[in] 传递的压缩输入数据的大小。(指向设备上单个 size_t 变量的指针)当 bitstream 类型为 NVCOMP_NATIVE 时为可选。

inline virtual void decompress(
uint8_t *const *decomp_buffers,
const uint8_t *const *comp_buffers,
const std::vector<DecompressionConfig> &decomp_configs,
const size_t *comp_sizes = nullptr,
) override#

异步执行一批缓冲区的解压缩操作。

参数:
  • decomp_buffers[out] 解压缩数据的输出位置。(指向设备连续内存指针的主机数组的指针)大小要求在 DecompressionConfig 中提供。

  • comp_buffers[in] 压缩后的输入数据。(指向包含未压缩数据的设备连续内存指针的主机数组的指针)

  • decomp_configs[in] 由给定 comp_buffers 的 configure_decompression 产生。在主机/设备可访问的内存中包含 nvcompStatus*,以允许错误检查。

  • comp_sizes[in] 传递的压缩输入数据的大小。(指向设备数组的指针,大小足以容纳 batch_size 个 size_t 类型的元素)当比特流类型为 NVCOMP_NATIVE 时为可选。

inline virtual void set_scratch_allocators(
const AllocFn_t &alloc_fn,
const DeAllocFn_t &dealloc_fn,
) override#

允许用户提供用于分配/释放内存的函数。

管理器需要暂存内存来执行其操作。默认情况下,它将使用内部分配器,这些分配器利用 cudaMallocAsync / cudaFreeAsync。用户可以使用此 API 覆盖分配函数。所需的签名是 void* alloc_fn(size_t alloc_size) 和 void dealloc_fn(void* buffer, size_t alloc_size)

此 API 复制分配函数。复制的函数必须有效,直到 1) 调用 deallocate_gpu_mem() 或 2) nvcompManager 实例被销毁

如果先前已分配了暂存缓冲区,则首先使用先前的 dealloc_fn(或者如果之前未提供,则使用 cudaFreeAsync)对其进行释放

参数:
  • alloc_fn[in] 用于分配新的暂存结果缓冲区的主机函数。

  • dealloc_fn[in] 用于释放暂存结果缓冲区的主机函数。

inline virtual size_t get_compressed_output_size(
const uint8_t *comp_buffer,
) override#

计算给定缓冲区压缩后的输出大小(以字节为单位)。

同步复制压缩缓冲区的大小到主机变量以供返回。

只能与 NVCOMP_NATIVE 比特流类型一起使用。

要获取压缩大小,也可以从传递给压缩函数的 comp_sizes 中 cudaMemcpy 大小。

参数:

comp_buffer[in] 压缩的输入数据。(指向设备连续内存的指针)

返回值:

压缩缓冲区的大小。

inline virtual std::vector<size_t> get_compressed_output_size(
const uint8_t *const *comp_buffers,
size_t batch_size,
) override#

计算给定一批缓冲区压缩后的输出大小(以字节为单位)。

同步复制压缩缓冲区的大小到主机变量以供返回。

只能与 NVCOMP_NATIVE 比特流类型一起使用。

要获取压缩大小,也可以从传递给压缩函数的 comp_sizes 中 cudaMemcpy 大小。

参数:

comp_buffers[in] 压缩后的输入数据。(指向设备连续内存指针的主机数组的指针)

返回值:

一个向量,包含批次中每个压缩缓冲区的大小。

inline virtual void deallocate_gpu_mem() override#

释放 nvCOMP HLIF 使用的任何内部 GPU 内存。

如果通过 set_scratch_allocators() 指定了解除分配器,则将此内存返回给解除分配器。

受保护的属性

std::unique_ptr<nvcompManagerBase> impl#
namespace nvcomp

函数

std::shared_ptr<nvcompManagerBase> create_manager(
const uint8_t *comp_buffer,
cudaStream_t stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
)#

从缓冲区构造 ManagerBase。

这将同步流

std::shared_ptr<nvcompManagerBase> create_manager(
const uint8_t *comp_buffer,
cudaStream_t stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
)#

从缓冲区构造 ManagerBase。

已弃用

此签名已弃用,建议使用不接受 device_id 的签名,而是从流中获取设备。

LZ4#

namespace nvcomp
struct LZ4FormatSpecHeader#

公共成员

nvcompType_t data_type#
struct LZ4Manager :: public nvcomp::PimplManager#
#include <lz4.hpp>

LZ4 压缩器的高级接口类。

注意

任何要压缩的未压缩数据缓冲区的大小**必须**是数据类型大小的倍数,否则压缩可能会崩溃或导致无效输出。

公共函数

LZ4Manager(
size_t uncomp_chunk_size,
const nvcompBatchedLZ4Opts_t &format_opts = nvcompBatchedLZ4DefaultOpts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
LZ4Manager(
size_t uncomp_chunk_size,
const nvcompBatchedLZ4Opts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~LZ4Manager()#

Snappy#

namespace nvcomp
struct SnappyFormatSpecHeader#
#include <snappy.hpp>

Snappy 压缩的格式规范。

struct SnappyManager :: public nvcomp::PimplManager#
#include <snappy.hpp>

Snappy 压缩器的高级接口类。

公共函数

SnappyManager(
size_t uncomp_chunk_size,
const nvcompBatchedSnappyOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
SnappyManager(
size_t uncomp_chunk_size,
const nvcompBatchedSnappyOpts_t &format_opts,
cudaStream_t user_stream,
int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~SnappyManager()#

Deflate#

namespace nvcomp
struct DeflateFormatSpecHeader#
#include <deflate.hpp>

Deflate 压缩的格式规范。

公共成员

int algo#

要使用的压缩算法。允许的值包括

  • 0:最高吞吐量、仅熵压缩(用于对称压缩/解压缩性能)

  • 1:高吞吐量、低压缩比(默认)

  • 2:中等吞吐量、中等压缩比,压缩比优于 Zlib level 1

  • 3:进一步压缩级别支持的占位符,此时将归入 MEDIUM_COMPRESSION

  • 4:较低吞吐量、较高压缩比,压缩比优于 Zlib level 6

  • 5:最低吞吐量、最高压缩比

struct DeflateManager :: public nvcomp::PimplManager#
#include <deflate.hpp>

Deflate 压缩器的高级接口类。

公共函数

DeflateManager(
size_t uncomp_chunk_size,
const nvcompBatchedDeflateOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
DeflateManager(
size_t uncomp_chunk_size,
const nvcompBatchedDeflateOpts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~DeflateManager()#

GDeflate#

namespace nvcomp
struct GdeflateFormatSpecHeader#
#include <gdeflate.hpp>

GDeflate 压缩的格式规范。

公共成员

int algo#

要使用的压缩算法。允许的值包括

  • 0:最高吞吐量、仅熵压缩(用于对称压缩/解压缩性能)

  • 1:高吞吐量、低压缩比(默认)

  • 2:中等吞吐量、中等压缩比,压缩比优于 Zlib level 1

  • 3:进一步压缩级别支持的占位符,此时将归入 MEDIUM_COMPRESSION

  • 4:较低吞吐量、较高压缩比,压缩比优于 Zlib level 6

  • 5:最低吞吐量、最高压缩比

struct GdeflateManager :: public nvcomp::PimplManager#
#include <gdeflate.hpp>

GDeflate 压缩器的高级接口类。

公共函数

GdeflateManager(
size_t uncomp_chunk_size,
const nvcompBatchedGdeflateOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
GdeflateManager(
size_t uncomp_chunk_size,
const nvcompBatchedGdeflateOpts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~GdeflateManager()#

ZSTD#

namespace nvcomp
struct ZstdFormatSpecHeader#
#include <zstd.hpp>

Zstd 压缩的格式规范。

struct ZstdManager :: public nvcomp::PimplManager#
#include <zstd.hpp>

Zstd 压缩器的高级接口类。

uncomp_chunk_size 必须 <= nvcompZstdCompressionMaxAllowedChunkSize。

使用 64-128 KB 以获得最佳性能。

公共函数

ZstdManager(
size_t uncomp_chunk_size,
const nvcompBatchedZstdOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
ZstdManager(
size_t uncomp_chunk_size,
const nvcompBatchedZstdOpts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~ZstdManager()#

ANS#

namespace nvcomp
struct ANSFormatSpecHeader#
#include <ans.hpp>

ANS 压缩的格式规范。

struct ANSManager :: public nvcomp::PimplManager#
#include <ans.hpp>

ANS 压缩器的高级接口类。

公共函数

ANSManager(
size_t uncomp_chunk_size,
const nvcompBatchedANSOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
ANSManager(
size_t uncomp_chunk_size,
const nvcompBatchedANSOpts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~ANSManager()#

Bitcomp#

namespace nvcomp
struct BitcompFormatSpecHeader#
#include <bitcomp.hpp>

Bitcomp 压缩的格式规范

公共成员

int algo#

Bitcomp 算法选项,。

  • 0:默认算法,通常提供最佳压缩率

  • 1:“稀疏”算法,在稀疏数据(包含大量零)上效果良好,并且通常比默认算法更快。

nvcompType_t data_type#

nvcomp 的可能数据类型之一。

struct BitcompManager :: public nvcomp::PimplManager#
#include <bitcomp.hpp>

Bitcomp 压缩器的高级接口类。

注意

任何要压缩的未压缩数据缓冲区的大小**必须**是数据类型大小的倍数,否则压缩可能会崩溃或导致无效输出。

公共函数

BitcompManager(
size_t uncomp_chunk_size,
const nvcompBatchedBitcompOpts_t &format_opts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
BitcompManager(
size_t uncomp_chunk_size,
const nvcompBatchedBitcompOpts_t &format_opts,
cudaStream_t user_stream,
const int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
~BitcompManager()#

Cascaded#

namespace nvcomp
struct CascadedFormatSpecHeader#
#include <cascaded.hpp>

Cascased 压缩的格式规范。

公共成员

nvcompBatchedCascadedOpts_t options#
struct CascadedManager :: public nvcomp::PimplManager#
#include <cascaded.hpp>

Cascaded 压缩器的高级接口类。

注意

任何要压缩的未压缩数据缓冲区的大小**必须**是数据类型大小的倍数,否则压缩可能会崩溃或导致无效输出。

公共函数

CascadedManager(
size_t uncomp_chunk_size,
const nvcompBatchedCascadedOpts_t &options = nvcompBatchedCascadedDefaultOpts,
cudaStream_t user_stream = 0,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
CascadedManager(
size_t uncomp_chunk_size,
const nvcompBatchedCascadedOpts_t &options,
cudaStream_t user_stream,
int device_id,
ChecksumPolicy checksum_policy = NoComputeNoVerify,
BitstreamKind bitstream_kind = BitstreamKind::NVCOMP_NATIVE,
)#
virtual ~CascadedManager()#