US 11,989,414 B2
Method and apparatus for compressing and decompressing sparse data sets
Mattheus C. Heddes, Redmond, WA (US); Ankit More, San Mateo, CA (US); Nishit Shah, Sunnyvale, CA (US); and Torsten Hoefler, Zurich (CH)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Jun. 23, 2023, as Appl. No. 18/340,464.
Application 18/340,464 is a continuation of application No. 17/687,584, filed on Mar. 4, 2022, granted, now 11,720,252.
Prior Publication US 2023/0333739 A1, Oct. 19, 2023
Int. Cl. G06F 3/06 (2006.01)
CPC G06F 3/0608 (2013.01) [G06F 3/0655 (2013.01); G06F 3/0679 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computer system comprising:
a processor; and
memory,
wherein the computer system is configured to perform data compression, the data compression comprising:
receiving a first set of data and a second set of data;
selecting non-zero data values from the first set of data and the second set of data;
generating a first sparsified data set and a second sparsified data set comprising the selected non-zero data values, wherein other data values in the first and second sparsified data sets are zero values;
generating a first bit mask and a second bit mask, the first and second bit masks specifying positions of the non-zero data values in the first and second sparsified data sets;
generating a third sparsified data set and a fourth sparsified data set comprising the selected non-zero data values, wherein the third sparsified data set has a number of data values less than the first sparsified data set and comprises the non-zero values from the first sparsified data set, and wherein the fourth sparsified data set has a number of data values less than the second sparsified data set and comprises the non-zero values from the second sparsified data set;
generating a third bit mask specifying positions of the non-zero values in the third and fourth sparsified data sets;
generating a compressed data set comprising the non-zero values from the third and fourth sparsified data sets; and
storing the compressed data set and the first, second, and third bit masks in the memory.