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#
-
inline NVCompException(nvcompStatus_t err, const std::string &msg)#
-
class NVCompException#
-
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,但在压缩数据的开头添加仅包含未压缩大小的自定义标头。
-
enumerator NVCOMP_NATIVE#
-
enum ChecksumPolicy#
值
-
enumerator NoComputeNoVerify#
在压缩期间,不计算校验和。在解压缩期间,不验证校验和。
-
enumerator ComputeAndNoVerify#
在压缩期间,计算校验和。在解压缩期间,不尝试验证校验和。
-
enumerator NoComputeAndVerifyIfPresent#
在压缩期间,不计算校验和。在解压缩期间,如果包含校验和,则验证它们。
-
enumerator ComputeAndVerifyIfPresent#
在压缩期间,计算校验和。在解压缩期间,如果包含校验和,则验证它们。
-
enumerator ComputeAndVerify#
在压缩期间,计算校验和。在解压缩期间,验证校验和。如果在压缩 buffer 中未包含校验和,则在 configure_decompression 时将抛出运行时错误。
-
enumerator NoComputeNoVerify#
-
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()#
私有成员
-
std::shared_ptr<DecompressionConfigImpl> impl#
-
DecompressionConfig(PinnedPtrPool<nvcompStatus_t> &pool)#
-
struct nvcompManagerBase#
- #include <nvcompManager.hpp>
定义 nvCOMP 高级接口的抽象基类。
由 nvcomp::PimplManager 继承
公共函数
- virtual CompressionConfig configure_compression(
- const size_t uncomp_buffer_size,
配置单个 buffer 的压缩。
此例程计算所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。
- 参数:
uncomp_buffer_size – [in] 未压缩的输入数据大小(以字节为单位)。
- 返回值:
为提供的大小返回 CompressionConfig。
- virtual std::vector<CompressionConfig> configure_compression(
- const std::vector<size_t> &uncomp_buffer_sizes,
配置一批 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,
为单个 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,
为一批 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,
使用压缩 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,
使用压缩 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,
使用 CompressionConfig 对象配置单个 buffer 的解压缩。
不同步用户流。
- 参数:
comp_config – [in] 用于压缩 buffer 的配置。
- 返回值:
基于提供的压缩配置返回 DecompressionConfig。
- virtual std::vector<DecompressionConfig> configure_decompression(
- const std::vector<CompressionConfig> &comp_configs,
使用 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,
异步执行单个 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,
异步执行一批缓冲区的解压缩操作。
- 参数:
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,
允许用户提供用于分配/释放内存的函数。
管理器需要暂存内存来执行其操作。默认情况下,它将使用内部分配器,这些分配器利用 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,
计算给定缓冲区压缩后的输出大小(以字节为单位)。
同步复制压缩缓冲区的大小到主机变量以供返回。
只能与 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,
计算给定一批缓冲区压缩后的输出大小(以字节为单位)。
同步复制压缩缓冲区的大小到主机变量以供返回。
只能与 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::ANSManager、nvcomp::BitcompManager、nvcomp::CascadedManager、nvcomp::DeflateManager、nvcomp::GdeflateManager、nvcomp::GzipManager、nvcomp::LZ4Manager、nvcomp::SnappyManager、nvcomp::ZstdManager
公共函数
-
inline virtual ~PimplManager()#
-
inline PimplManager()#
-
PimplManager(const PimplManager&)#
-
PimplManager &operator=(const PimplManager&)#
- inline virtual CompressionConfig configure_compression(
- const size_t uncomp_buffer_size,
配置单个 buffer 的压缩。
此例程计算所需结果 buffer 的大小。结果配置还包含允许错误检查的 nvcompStatus*。
- 参数:
uncomp_buffer_size – [in] 未压缩的输入数据大小(以字节为单位)。
- 返回值:
为提供的大小返回 CompressionConfig。
- inline virtual std::vector<CompressionConfig> configure_compression(
- const std::vector<size_t> &uncomp_buffer_sizes,
配置一批 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,
为单个 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,
为一批 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,
使用压缩 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,
使用压缩 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,
使用 CompressionConfig 对象配置单个 buffer 的解压缩。
不同步用户流。
- 参数:
comp_config – [in] 用于压缩 buffer 的配置。
- 返回值:
基于提供的压缩配置返回 DecompressionConfig。
- inline virtual std::vector<DecompressionConfig> configure_decompression(
- const std::vector<CompressionConfig> &comp_configs,
使用 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,
异步执行单个 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,
异步执行一批缓冲区的解压缩操作。
- 参数:
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,
允许用户提供用于分配/释放内存的函数。
管理器需要暂存内存来执行其操作。默认情况下,它将使用内部分配器,这些分配器利用 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,
计算给定缓冲区压缩后的输出大小(以字节为单位)。
同步复制压缩缓冲区的大小到主机变量以供返回。
只能与 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,
计算给定一批缓冲区压缩后的输出大小(以字节为单位)。
同步复制压缩缓冲区的大小到主机变量以供返回。
只能与 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#
-
inline virtual ~PimplManager()#
-
typedef std::function<void*(size_t)> AllocFn_t#
-
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#
-
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()#
-
struct LZ4FormatSpecHeader#
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()#
-
struct SnappyFormatSpecHeader#
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:最低吞吐量、最高压缩比
-
int algo#
-
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()#
-
struct DeflateFormatSpecHeader#
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:最低吞吐量、最高压缩比
-
int algo#
-
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()#
-
struct GdeflateFormatSpecHeader#
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()#
-
struct ZstdFormatSpecHeader#
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()#
-
struct ANSFormatSpecHeader#
Bitcomp#
-
namespace nvcomp
-
struct BitcompFormatSpecHeader#
- #include <bitcomp.hpp>
Bitcomp 压缩的格式规范
公共成员
-
int algo#
Bitcomp 算法选项,。
0:默认算法,通常提供最佳压缩率
1:“稀疏”算法,在稀疏数据(包含大量零)上效果良好,并且通常比默认算法更快。
-
nvcompType_t data_type#
nvcomp 的可能数据类型之一。
-
int algo#
-
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()#
-
struct BitcompFormatSpecHeader#
Cascaded#
-
namespace nvcomp
-
struct CascadedFormatSpecHeader#
- #include <cascaded.hpp>
Cascased 压缩的格式规范。
公共成员
-
nvcompBatchedCascadedOpts_t options#
-
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()#
-
struct CascadedFormatSpecHeader#