原生 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#
-
enumerator BITCOMP_SUCCESS#
-
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#
-
enumerator BITCOMP_UNSIGNED_8BIT#
函数
- 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 上每个数据块的已压缩大小(输出)。