我们有一个用霍夫曼编码编码的数据库。这里的目的是在GPU上复制它的相关解码器;然后在GPU上解码数据库,并在这个解码的数据库上做一些事情,而不用将其复制回CPU上。是否有可能在GPU中实现霍夫曼解码?
我很快就成为霍夫曼专家,但我所知道的少数人表明,它似乎是一种基本上基于控制结构的算法。用基本的算法,恐怕会有很多序列化的操作。
我的2个问题是:
- 你知道,如果存在对霍夫曼任何有效的GPU版本编码
- 如果不是,你认为存在霍夫曼算法适应于GPU(即。具有较少的控制结构)。或者,也许你知道(你可以提供一个参考),高效的Huffman解码在GPU上无法高效。
我看其他的限制,但它们并不重要: - GPU不能非常有效的处理树:二叉树可以存储在一个传统的阵列 - 工作量可能难以平衡:我们将见
我怀疑你会看到任何真正的好处,通过实施GPU - CUDA或其他。 GPU对于多个数据点具有并行性和均匀操作的问题的子集来说只是非常有用的。 – 2010-06-10 11:09:15
霍夫曼,因为我知道它是完全串行的。你根本不能分解要解码的代码,因为你不知道中断是在哪里进行的,除非你在中断之前处理了所有的代码。 – 2010-06-10 14:36:16
iOS Metal上的一个示例实现(链接)显示,同时解码多个块比执行CPU上的逻辑要快得多。必须创建一个每块查找表,所以会有一些开销。请参阅https://stackoverflow.com/a/47954985/763355 – MoDJ 2017-12-28 01:40:38