Parallel entropy encoding on GPU
First Claim
Patent Images
1. A method, comprising:
- encoding a data with a first encoding scheme to produce an ordered set of values comprising a first value, a second value, and a third value, the first value preceding the second value and the third value in the ordered set, the second value preceding the third value in the ordered set;
executing a first thread on a graphics processing unit (GPU) to encode the first value with a second encoding scheme, based on the first value and a reference value, the reference value being separate from the data and the ordered set of values;
while executing the first thread on the GPU, executing a second thread on the GPU to encode the second value with the second encoding scheme, based on the second value and the first value;
while executing the first thread on the GPU, executing a third thread on the GPU to encode the third value with the second encoding scheme, based on the third value and the second value; and
storing the encoded first, second, and third values in a memory location.
2 Assignments
0 Petitions
Accused Products
Abstract
An invention is disclosed for performing entropy encoding in a parallelized manner, using a GPU. In embodiments, an input sequence of integers is received, and run-length encoding is performed on any runs of zeros in parallel operations on the GPU. Then, a plurality of parallelized operations are performed on the run-length encoded sequence to entropy encode the sequence. The value N may be entropy encoded using only N and the value that precedes it in the sequence, N−1, so the encoding may be sub-divided into multiple operations that may be performed in parallel on the GPU. After entropy encoding is performed, a bitstream may be produced using parallelized operations on the GPU.
29 Citations
20 Claims
-
1. A method, comprising:
-
encoding a data with a first encoding scheme to produce an ordered set of values comprising a first value, a second value, and a third value, the first value preceding the second value and the third value in the ordered set, the second value preceding the third value in the ordered set; executing a first thread on a graphics processing unit (GPU) to encode the first value with a second encoding scheme, based on the first value and a reference value, the reference value being separate from the data and the ordered set of values; while executing the first thread on the GPU, executing a second thread on the GPU to encode the second value with the second encoding scheme, based on the second value and the first value; while executing the first thread on the GPU, executing a third thread on the GPU to encode the third value with the second encoding scheme, based on the third value and the second value; and storing the encoded first, second, and third values in a memory location. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A system, comprising:
-
a processor; and a memory communicatively coupled to the processor when the system is operational, the memory bearing processor-executable instructions that, when executed on the processor, the system at least to; encode data with a first encoding scheme to produce a first value and a second value; execute a first thread on a graphics processing unit (GPU) to encode the first value with a second encoding scheme, based on the first value and a reference value; while executing the first thread on the GPU, execute a second thread on the GPU to encode the second value with the second encoding scheme, based on the second value and the first value; and store the encoded first value and the encoded second value in a memory location. - View Dependent Claims (14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable storage device for parallelized entropy encoding of a first value and a second value of an ordered set of values, bearing computer-executable instructions that, when executed on a computer, cause operations comprising:
-
executing a first thread on a graphics processing unit (GPU) to entropy encode the first value, based on the first value and a reference value, the reference value being separate from the ordered set of values; while executing the first thread on the GPU, executing a second thread on the GPU to entropy encode the second value, based on the second value and the first value; and storing the encoded first value and the encoded second value in a memory location.
-
Specification