用于压缩缓冲区的快速算法

问题描述 投票:1回答:4

我正在执行图像压缩。

图像I被分解为K个代码块{Bi}。

每个块具有固定大小的MxN像素。

每个块被独立压缩。

压缩大小为{Pi}的所有压缩块{Ci},存储在大小为K * M的线性缓冲区B中,其中M是大于所有大小Pi的固定大小。

现在,我想将缓冲区B打包到缓冲区C中,并在每个压缩代码块Ci的末尾消除空白。

所以,我需要一个将会:

  • 对于每个块Ci,求出k
  • 每个Ci的数据,从BC,在offset_i处,大小为Pi [>]
  • 任何关于如何执行此操作的想法将不胜感激!

我正在执行图像压缩。图像I被分解为K个代码块{Bi}。每个块具有固定大小的MxN像素。每个块被独立压缩。所有压缩块{Ci},...

opencl
4个回答
1
投票

这是代码段,(我想是)进行流压缩。它包含大量算法,但可以并行化为所需量度。


0
投票

我理解您的问题如下:您有一组压缩缓冲区,每个缓冲区的长度不同。


0
投票

您需要访问Pi的大小。我将使用一个临时缓冲区,其长度是块的总数。压缩块时,会将压缩块的长度存储到此临时缓冲区中。然后,您的最新内核可以使用此临时缓冲区来计算它必须写入最终缓冲区的地址。出于性能原因,您可以将此临时缓冲区复制到本地内存中(在最后一个内核中)。


0
投票

因此,事实证明我需要编写一个stream compaction

© www.soinside.com 2019 - 2024. All rights reserved.