原生 API#

注意

免责声明:原生 API 处于实验阶段,可能会在 nvCOMP 的后续版本中更改。

Bitcomp#

类型定义

typedef struct bitcompContext *bitcompHandle_t#

枚举

enum bitcompResult_t#

enumerator BITCOMP_SUCCESS#
enumerator BITCOMP_INVALID_PARAMETER#
enumerator BITCOMP_INVALID_COMPRESSED_DATA#
enumerator BITCOMP_INVALID_ALIGNMENT#
enumerator BITCOMP_CUDA_KERNEL_LAUNCH_ERROR#
enumerator BITCOMP_CUDA_API_ERROR#
enumerator BITCOMP_UNKNOWN_ERROR#
enum bitcompDataType_t#

enumerator BITCOMP_UNSIGNED_8BIT#
enumerator BITCOMP_SIGNED_8BIT#
enumerator BITCOMP_UNSIGNED_16BIT#
enumerator BITCOMP_SIGNED_16BIT#
enumerator BITCOMP_UNSIGNED_32BIT#
enumerator BITCOMP_SIGNED_32BIT#
enumerator BITCOMP_UNSIGNED_64BIT#
enumerator BITCOMP_SIGNED_64BIT#
enumerator BITCOMP_FP16_DATA#
enumerator BITCOMP_FP32_DATA#
enumerator BITCOMP_FP64_DATA#
enum bitcompMode_t#

enumerator BITCOMP_LOSSLESS#
enumerator BITCOMP_LOSSY_FP_TO_SIGNED#
enumerator BITCOMP_LOSSY_FP_TO_UNSIGNED#
enum bitcompAlgorithm_t#

enumerator BITCOMP_DEFAULT_ALGO#
enumerator BITCOMP_SPARSE_ALGO#

函数

bitcompResult_t bitcompCreatePlan(
bitcompHandle_t *handle,
size_t n,
bitcompDataType_t dataType,
bitcompMode_t mode,
bitcompAlgorithm_t algo,
)#

为有损或无损压缩和解压缩创建 bitcomp 计划。

无损压缩可用于任何数据类型,视为整型类型。选择正确的整型类型会影响压缩率。

有损压缩:有损压缩仅适用于浮点数据类型,并且基于将浮点值量化为整数。浮点值除以压缩期间提供的 delta 值,并转换为整数。然后使用无损编码器压缩这些整数。在量化期间可能溢出的值(例如,较大的输入值和非常小的 delta 值),以及 NaN、+Inf、-Inf 将通过压缩正确处理。整数可以是有符号或无符号的。

相同的计划可以用于多个设备或主机,但将计划与流关联,或启用远程压缩加速将使计划特定于设备。不支持在多个设备上并发使用计划。

参数:
  • handle[out] 创建的句柄。

  • n[in] 未压缩数据的大小(字节)。

  • dataType[in] 未压缩数据的数据类型。

  • mode[in] 压缩模式,无损或有损到有符号/有损到无符号。

  • algo[in] 要使用的压缩算法。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCreatePlanFromCompressedData(
bitcompHandle_t *handle,
const void *data,
)#

从现有的压缩数据创建句柄。

参数:
  • handle[out] 创建的句柄。

  • data[in] 指向压缩数据的指针,将从中提取所有句柄参数。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompDestroyPlan(bitcompHandle_t handle)#

销毁现有的 bitcomp 句柄。

参数:

handle[in] 要销毁的句柄。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCreateBatchPlan(
bitcompHandle_t *handle,
size_t nbatch,
bitcompDataType_t dataType,
bitcompMode_t mode,
bitcompAlgorithm_t algo,
)#

为批量输入的有损或无损压缩和解压缩创建 bitcomp 计划。

无损压缩可用于任何数据类型,视为整型类型。选择正确的整型类型会影响压缩率。

有损压缩:有损压缩仅适用于浮点数据类型,并且基于将浮点值量化为整数。浮点值除以压缩期间提供的 delta 值,并转换为整数。然后使用无损编码器压缩这些整数。在量化期间可能溢出的值(例如,较大的输入值和非常小的 delta 值),以及 NaN、+Inf、-Inf 将通过压缩正确处理。整数可以是有符号或无符号的。

建议批处理 API 用于处理大量数据流,尤其是在数据流较小时。所有批次并行处理,建议有足够的批次来加载 GPU。

相同的计划可以用于多个设备或主机,但将计划与流关联,或启用远程压缩加速将使计划特定于设备。不支持在多个设备上并发使用计划。

参数:
  • handle[out] 创建的句柄。

  • nbatch[in] 要处理的批次数量。

  • dataType[in] 未压缩数据的数据类型。

  • mode[in] 压缩模式,无损或有损到有符号/有损到无符号。

  • algo[in] 要使用的压缩算法。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCreateBatchPlanFromCompressedData(
bitcompHandle_t *handle,
const void *const *data,
size_t batches,
)#

从批量压缩数据创建批处理句柄。数据必须是设备可见的。如果压缩数据无效,或者如果批次并非都使用相同的参数(算法、数据类型、模式)进行压缩,则将返回错误。此调用将在 GPU 的默认流中触发同步活动,以分析数据。

参数:
  • handle[out] 输出句柄,可用于批量压缩或解压缩。

  • data[in] 设备可见的指针,指向每个批次的设备可见数据。

  • batches[in] 批次数量。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompSetStream(
bitcompHandle_t handle,
cudaStream_t stream,
)#

将 bitcomp 句柄与流关联。所有后续操作都将在流中完成。

参数:
  • handle[inout] Bitcomp 句柄

  • stream[in] 要使用的流。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompAccelerateRemoteCompression(
bitcompHandle_t handle,
)#

当压缩输出不在运行压缩的设备的全局内存中时(例如,主机 pinned 内存或另一个设备的内存),启用压缩加速。这是可选的,仅影响性能。注意:这会使句柄变为特定于设备的。启用了此加速的计划应始终在同一设备上使用。

参数:

handle[inout] Bitcomp 句柄。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCompressLossy_fp16(
const bitcompHandle_t handle,
const half *input,
void *output,
half delta,
)#

FP16 (half) 数据的压缩,在设备上异步运行。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从设备访问。

  • output[out] 指向压缩数据的指针。必须可从设备访问且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCompressLossy_fp32(
const bitcompHandle_t handle,
const float *input,
void *output,
float delta,
)#

32 位浮点数据的压缩,在设备上异步运行。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从设备访问。

  • output[out] 指向压缩数据的指针。必须可从设备访问且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCompressLossy_fp64(
const bitcompHandle_t handle,
const double *input,
void *output,
double delta,
)#

64 位浮点数据的压缩,在设备上异步运行。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从设备访问。

  • output[out] 指向压缩数据的指针。必须可从设备访问且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompCompressLossless(
const bitcompHandle_t handle,
const void *input,
void *output,
)#
bitcompResult_t bitcompUncompress(
const bitcompHandle_t handle,
const void *input,
void *output,
)#

解压缩,在设备上异步运行。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向压缩数据的指针。必须可从设备访问且 64 位对齐。

  • output[out] 指向将写入未压缩数据的位置的指针。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompPartialUncompress(
const bitcompHandle_t handle,
const void *input,
void *output,
size_t start,
size_t length,
)#

部分解压缩,在设备上异步运行。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向压缩数据的指针。必须可从设备访问且 64 位对齐。

  • output[out] 指向将写入部分解压缩数据的位置的指针。

  • start[in] 相对于原始未压缩大小的字节偏移量,从该位置开始解压缩。

  • length[in] 部分解压缩的长度(字节)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossless(
const bitcompHandle_t handle,
const void *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
)#

GPU 上批量输入数据的无损压缩。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossyScalar_fp16(
const bitcompHandle_t handle,
const half *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
half delta,
)#

GPU 上批量 32 位输入数据的有损压缩,具有标量量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子(标量)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossyScalar_fp32(
const bitcompHandle_t handle,
const float *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
float delta,
)#

GPU 上批量 FP32 输入数据的有损压缩,具有标量量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子(标量)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossyScalar_fp64(
const bitcompHandle_t handle,
const double *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
double delta,
)#

GPU 上批量 FP64 输入数据的有损压缩,具有标量量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子(标量)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossy_fp16(
const bitcompHandle_t handle,
const half *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
half *delta,
)#

GPU 上批量 FP16 输入数据的有损压缩,具有每个批次的量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossy_fp32(
const bitcompHandle_t handle,
const float *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
float *delta,
)#

GPU 上批量 FP32 输入数据的有损压缩,具有每个批次的量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchCompressLossy_fp64(
const bitcompHandle_t handle,
const double *const *inputs,
void *const *outputs,
const size_t *nbytes,
size_t *outputSizes,
double *delta,
)#

GPU 上批量 FP64 输入数据的有损压缩,具有每个批次的量化因子。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • nbytes[in] 每个批次的字节数。

  • outputSizes[out] 每个批次的压缩大小。

  • delta[in] 量化因子。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchUncompress(
const bitcompHandle_t handle,
const void *const *inputs,
void *const *outputs,
)#

GPU 上的批量解压缩。所有数组必须是设备可访问的。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误

bitcompResult_t bitcompBatchUncompressCheck(
const bitcompHandle_t handle,
const void *const *inputs,
void *const *outputs,
const size_t *output_buffer_sizes,
bitcompResult_t *bitcomp_statuses,
size_t *uncompressed_sizes = nullptr,
bool convert_to_nvcompStatus = false,
)#

GPU 上的批量解压缩,具有额外的检查和单独的状态。每个批次将检查输出缓冲区是否足够大。还将执行一些额外的检查以验证压缩数据是否有效。所有数组必须是设备可访问的。

参数:
  • handle[in] 为使用 bitcompCreateBatchPlan() 进行批处理而设置的 Bitcomp 句柄。

  • inputs[in] 每个批次的未压缩数据输入指针。

  • outputs[out] 每个批次的压缩数据输出指针。

  • output_buffer_sizes[out] 每个批次的输出缓冲区大小。

  • bitcomp_statuses[in] 每个批次的状态。如果一切正常,将设置为 BITCOMP_SUCCESS 或 nvcompSuccess(基于 convert_to_nvcompStatus 的值)。

  • uncompressed_sizes[in] 指向保存每个块的未压缩大小的数组的指针。

  • convert_to_nvcompStatus[in] 如果为 true,则状态存储为 nvcompStatus_t 类型。如果为 false,则状态存储为 bitcompReturn_t 类型。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误

bitcompResult_t bitcompHostCompressLossy_fp16(
const bitcompHandle_t handle,
const half *input,
void *output,
half delta,
)#

FP16 (半精度) 数据的有损压缩,在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从主机访问。

  • output[out] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误

bitcompResult_t bitcompHostCompressLossy_fp32(
const bitcompHandle_t handle,
const float *input,
void *output,
float delta,
)#

32 位浮点数的有损压缩,在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从主机访问。

  • output[out] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompHostCompressLossy_fp64(
const bitcompHandle_t handle,
const double *input,
void *output,
double delta,
)#

64 位浮点数的有损压缩,在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从主机访问。

  • output[out] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

  • delta[in] 用于数据整数量化的 Delta 值。未压缩数据和原始数据之间的最大误差应 <= delta。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompHostCompressLossless(
const bitcompHandle_t handle,
const void *input,
void *output,
)#

无损压缩(整数数据类型),在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向未压缩数据的指针。必须可从主机访问。

  • output[out] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompHostUncompress(
const bitcompHandle_t handle,
const void *input,
void *output,
)#

解压缩,在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在解压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

  • output[out] 指向未压缩数据的指针。必须可从主机访问。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompHostPartialUncompress(
const bitcompHandle_t handle,
const void *input,
void *output,
size_t start,
size_t length,
)#

部分解压缩,在主机处理器上运行。此调用是阻塞的。如果在句柄中设置了非 NULL 流,则此调用将在解压缩数据之前同步流。所有数组必须是设备可访问的。

参数:
  • handle[in] Bitcomp 句柄。

  • input[in] 指向已压缩数据的指针。必须可从主机访问,并且 64 位对齐。

  • output[out] 指向将写入部分解压缩数据的位置的指针。

  • start[in] 相对于原始未压缩大小的字节偏移量,从该位置开始解压缩。

  • length[in] 部分解压缩的长度(字节)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误

size_t bitcompMaxBuflen(size_t nbytes)#

查询给定输入大小的情况下,压缩可能生成的最大尺寸(最坏情况)。

参数:

nbytes[in] 未压缩数据的大小,以字节为单位。

返回值:

返回已压缩数据的最大大小,以字节为单位。

bitcompResult_t bitcompGetCompressedSize(
const void *compressedData,
size_t *size,
)#

从已压缩缓冲区查询已压缩大小。指针不必是设备可访问的。这是一个阻塞调用。压缩必须在调用此函数之前完成。

参数:
  • compressedData[in] 指向已压缩数据的指针。

  • size[out] 已压缩数据的大小,以字节为单位。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompGetCompressedSizeAsync(
const void *compressedData,
size_t *size,
cudaStream_t stream,
)#

从已压缩缓冲区异步查询已压缩大小。两个指针都必须是设备可访问的。

参数:
  • compressedData[in] 指向已压缩数据的指针。

  • size[out] 已压缩数据的大小,以字节为单位。

  • stream[in] 用于异步操作的流。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompGetUncompressedSize(
const void *compressedData,
size_t *size,
)#

从已压缩缓冲区查询未压缩大小。

参数:
  • compressedData[in] 指向已压缩数据缓冲区的指针。指针不必是设备可访问的。

  • size[out] 未压缩数据的大小,以字节为单位。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompGetUncompressedSizeFromHandle(
const bitcompHandle_t handle,
size_t *bytes,
)#

从句柄查询未压缩大小。

参数:
  • handle[in] 句柄。

  • bytes[out] 未压缩数据的大小,以字节为单位。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompGetDataTypeFromHandle(
const bitcompHandle_t handle,
bitcompDataType_t *dataType,
)#

从句柄查询未压缩数据类型。

参数:
  • handle[in] 句柄。

  • dataType[out] 未压缩数据的数据类型。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompGetCompressedInfo(
const void *compressedData,
size_t *compressedDataSize,
size_t *uncompressedSize,
bitcompDataType_t *dataType,
bitcompMode_t *mode,
bitcompAlgorithm_t *algo,
)#

: 查询已压缩数据信息。

参数:
  • compressedData[in] 已压缩数据指针。不必是设备可访问的。

  • compressedDataSize[inout] 接收已压缩缓冲区的大小。存储已压缩数据的实际大小。如果已压缩缓冲区的大小小于已压缩数据的实际大小,将返回 BITCOMP_INVALID_PARAMETER。

  • uncompressedSize[out] 未压缩数据的大小,以字节为单位。

  • dataType[out] 已压缩数据的类型。

  • mode[out] 压缩模式(有损或无损)。

  • algo[out] 使用的 Bitcomp 算法(默认或稀疏)。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchGetCompressedSizesAsync(
const void *const *compressedData,
size_t *compressedSizes,
size_t batch,
cudaStream_t stream,
)#

: 查询一批已压缩缓冲区的已压缩大小。

参数:
  • compressedData[in] 已压缩数据指针。必须是设备可访问的。

  • compressedSizes[out] 已压缩数据的大小,以字节为单位。

  • batch[in] 批次维度。

  • stream[out] CUDA 流。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchGetUncompressedSizesAsync(
const void *const *compressedData,
size_t *uncompressedSizes,
size_t batch,
cudaStream_t stream,
)#

: 查询一批已压缩缓冲区的未压缩大小。

参数:
  • compressedData[in] 已压缩数据指针。必须是设备可访问的。

  • uncompressedSizes[out] 未压缩数据的大小,以字节为单位。

  • batch[in] 批次维度。

  • stream[out] CUDA 流。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

bitcompResult_t bitcompBatchGetSizesAsync(
const void *const *compressedData,
size_t *compressedSizes,
size_t *uncompressedSizes,
size_t batch,
cudaStream_t stream,
)#

: 查询一批已压缩缓冲区的已压缩和未压缩大小。

参数:
  • compressedData[in] 已压缩数据指针。必须是设备可访问的。

  • compressedSizes[out] 已压缩数据的大小,以字节为单位。

  • uncompressedSizes[out] 未压缩数据的大小,以字节为单位。

  • batch[in] 批次维度。

  • stream[out] CUDA 流。

返回值:

如果成功,则返回 BITCOMP_SUCCESS,否则返回错误。

Gdeflate CPU#

namespace gdeflate#

函数

void decompressCPU(
const void *const *in_ptr,
const size_t *in_bytes,
size_t batch_size,
void *const *out_ptr,
size_t *out_bytes,
)#

在 CPU 上执行解压缩。

参数:
  • in_ptr[in] CPU 上的指针,指向已压缩的数据块。

  • in_bytes[in] CPU 上每个已压缩批次项的大小。

  • batch_size[in] 批次项的数量。

  • out_ptr[out] CPU 上的指针,指向解压缩每个数据块的位置(输出)。

  • out_bytes[out] CPU 上用于存储未压缩大小的指针(输出)。

void compressCPU(
const void *const *in_ptr,
const size_t *in_bytes,
const size_t max_chunk_size,
size_t batch_size,
void *const *out_ptr,
size_t *out_bytes,
)#

在 CPU 上执行压缩。

参数:
  • in_ptr[in] CPU 上的指针,指向未压缩的批次项。

  • in_bytes[in] CPU 上每个未压缩批次项的大小。

  • max_chunk_size[in] 数据块的最大大小。

  • batch_size[in] 批次项的数量。

  • out_ptr[out] CPU 上的指针,指向每个已压缩批次项的输出位置(输出)。

  • out_bytes[out] CPU 上每个数据块的已压缩大小(输出)。