IP Library Granted Patent US 9,954,550
Granted Patent B1
US 9,954,550 · App. 15/189,318 · Granted Apr 24, 2018

Content-aware compression of data using window-based selection from multiple prediction functions

Inventors: Angelo E. M. Ciarlini (Rio de Janeiro, BR); Rômulo Teixeira de Abreu Pinho (Niteroi, BR); Edward José Pacheco Condori (Rio de Janeiro, BR); Alex L. Bordignon (Rio de Janeiro, BR)
Assignee: EMC IP Holding Company LLC
H03M7/30G06F7/483G06N5/04
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,954,550
App. No.
15/189,318
Granted
Apr 24, 2018
Kind
B1
Abstract

Data compression with window-based selection from multiple prediction functions is provided. A predefined default predictor and a plurality of other predictors are applied to a floating point number to generate a plurality of predictions. A compression metric over a collection of floating point numbers is evaluated for the default predictor and the plurality of other predictors. Based on the compression metric, (i) the floating point number is encoded using the predefined default predictor, or (ii) the collection of floating point numbers is encoded using one of the other predictors. Stored indexes indicate which predictor was used for the encoding. A set of predictors out of a larger set of predictors can be determined for a specific data set based on a performance-based ranking. The default predictor and the alternate predictors can be represented as ensembles of predictors. Decompression involves evaluating which predictor was used for the encoding and optionally, whether an ensemble was used for the encoding.

Claims (51)

1. A method for compressing at least one floating point number, comprising the steps of:

obtaining said at least one floating point number represented using one or more bits to indicate a sign of said at least one floating point number, one or more bits to indicate an exponent at a given base and one or more bits to indicate a significand of said at least one floating point number, wherein said significand has a length equal to a number of bits between a most significant bit of said significand and a least significant bit of said significand having a predefined binary value;

applying a predefined default prediction algorithm and a plurality of other distinct prediction algorithms to said obtained at least one floating point number to generate a corresponding plurality of predictions;

evaluating a compression metric over a collection of floating point numbers, including said at least one floating point number, for said predefined default prediction algorithm and said plurality of other distinct prediction algorithms; and

based on said compression metric, encoding one of:

said at least one floating point number by encoding, as a single code, the exponent and the length of a residual generated by said predefined default prediction algorithm; or

said collection of floating point numbers by encoding, as single codes, the exponent and the lengths of the residuals generated by an alternate prediction algorithm from among said plurality of other distinct prediction algorithms.

2. The method of claim 1 , wherein said compression metric indicates, for said at least one floating point number and a given prediction algorithm, said number of bits saved if said given prediction algorithm is used to encode said collection of floating point numbers.

3. The method of claim 2 , wherein said compression metric is used to select a given prediction algorithm that substantially maximizes bit savings across said collection of floating point numbers.

4. The method of claim 3 , wherein two substantially local maxima of said substantially maximized bit savings must be a predefined number of samples apart.

5. The method of claim 1 , further comprising the step of storing an indication of whether said predefined default prediction algorithm is used for said encoding of said at least one floating point number or said alternate prediction algorithm is used for said encoding of said collection of floating point numbers.

6. The method of claim 1 , further comprising the step of storing an index of said alternate prediction algorithm among a plurality of available alternate prediction algorithms.

7. The method of claim 6 , further comprising the step of storing an indication of said plurality of available alternate prediction algorithms as metadata.

8. The method of claim 1 , further comprising the steps of decompressing said encoded at least one floating point number by evaluating whether said predefined default prediction algorithm or said alternate prediction algorithm was used for said encoding and evaluating an index of said alternate prediction function among a plurality of available alternate prediction algorithms if said alternate prediction function was used for said encoding.

9. The method of claim 1 , further comprising the step of determining a set of one or more prediction algorithms out of a larger set of prediction algorithms for a specific data set including said at least one floating point number based on a performance-based ranking of the prediction algorithms of the larger set of prediction algorithms with respect to the specific data set including said at least one floating point number, so that the total number of bits saved over all floating point numbers is substantially maximal.

10. The method of claim 1 , wherein said predefined default prediction algorithm and a plurality of available alternate prediction algorithms correspond to ensembles of prediction algorithms, and wherein the method further comprises the steps of:

storing an ensemble index to specify an ensemble of prediction algorithms when there is more than one possible ensemble to be selected; and

storing an indication of said ensembles of prediction algorithms.

11. The method of claim 10 , further comprising the step of storing a disambiguation index associated with said encoding of said at least one floating point number, or with said encoding of each element of said collection of floating point numbers, indicating one selected prediction algorithm from a potential subset of said ensemble of prediction algorithms.

12. The method of claim 11 , wherein said potential subset is generated by discarding the predictions that, when added to said residual, correspond to a floating point number for which there would be a better prediction resulting in another residual that can be represented with fewer bits.

13. The method of claim 12 , wherein a set of default prediction algorithms and said plurality of available alternate prediction algorithms are selected for a segment of said data set including said at least one floating point number, wherein said data set is segmented based on one or more of a local variance, a local average, a local measure of smoothness and a local auto-correlation, said method optionally comprising the step of storing said disambiguation index associated with said encoding of said at least one floating point number, or with said encoding of each element of said collection of floating point numbers, indicating one selected prediction algorithm from said potential subset of said ensemble of prediction algorithms.

14. The method of claim 13 , further comprising the steps of decompressing said encoded at least one floating point number by evaluating whether a default ensemble of prediction algorithms or an alternate ensemble of prediction algorithms was used for said encoding and evaluating an index of said ensemble of prediction algorithms and evaluating said disambiguation index of said prediction algorithm used for said encoding.

15. A computer program product for compressing at least one floating point number, comprising a non-transitory machine-readable storage medium having encoded therein executable code of one or more software programs, wherein the one or more software programs when executed by at least one processing device perform the following steps:

obtaining said at least one floating point number represented using one or more bits to indicate a sign of said at least one floating point number, one or more bits to indicate an exponent at a given base and one or more bits to indicate a significand of said at least one floating point number, wherein said significand has a length equal to a number of bits between a most significant bit of said significand and a least significant bit of said significand having a predefined binary value;

applying a predefined default prediction algorithm and a plurality of other distinct prediction algorithms to said obtained at least one floating point number to generate a corresponding plurality of predictions;

evaluating a compression metric over a collection of floating point numbers, including said at least one floating point number, for said predefined default prediction algorithm and said plurality of other distinct prediction algorithms; and

based on said compression metric, encoding one of:

said at least one floating point number by encoding, as a single code, the exponent and the length of a residual generated by said predefined default prediction algorithm; or

said collection of floating point numbers by encoding, as single codes, the exponent and the lengths of the residuals generated by an alternate prediction algorithm from among said plurality of other distinct prediction algorithms.

16. The computer program product of claim 15 , further comprising one or more of the steps of storing an indication of whether said predefined default prediction algorithm is used for said encoding of said at least one floating point number or said alternate prediction algorithm is used for said encoding of said collection of floating point numbers and storing an index of said alternate prediction algorithm among a plurality of available alternate prediction algorithms.

17. The computer program product of claim 15 , further comprising the steps of decompressing said encoded at least one floating point number by evaluating whether said predefined default prediction algorithm or said alternate prediction algorithm was used for said encoding and evaluating an index of said alternate prediction function among a plurality of available alternate prediction algorithms if said alternate prediction function was used for said encoding.

18. The computer program product of claim 15 , wherein said predefined default prediction algorithm and a plurality of available alternate prediction algorithms correspond to ensembles of prediction algorithms, and wherein the computer program product further comprises the steps of:

storing an ensemble index to specify an ensemble of prediction algorithms when there is more than one possible ensemble to be selected; and

storing an indication of said ensembles of prediction algorithms.

19. A system for compressing at least one floating point number, comprising:

a memory; and

at least one processing device, coupled to the memory, operative to implement the following steps:

obtaining said at least one floating point number represented using one or more bits to indicate a sign of said at least one floating point number, one or more bits to indicate an exponent at a given base and one or more bits to indicate a significand of said at least one floating point number, wherein said significand has a length equal to a number of bits between a most significant bit of said significand and a least significant bit of said significand having a predefined binary value;

applying a predefined default prediction algorithm and a plurality of other distinct prediction algorithms to said obtained at least one floating point number to generate a corresponding plurality of predictions;

evaluating a compression metric over a collection of floating point numbers, including said at least one floating point number, for said predefined default prediction algorithm and said plurality of other distinct prediction algorithms; and

based on said compression metric, encoding one of:

said at least one floating point number by encoding, as a single code, the exponent and the length of a residual generated by said predefined default prediction algorithm; or

said collection of floating point numbers by encoding, as single codes, the exponent and the lengths of the residuals generated by an alternate prediction algorithm from among said plurality of other distinct prediction algorithms.

20. The system of claim 19 , wherein said compression metric is used to select a given prediction algorithm that substantially maximizes bit savings across said collection of floating point numbers and wherein two substantially local maxima of said substantially maximized bit savings must be a predefined number of samples apart.

21. The system of claim 19 , further comprising the step of storing an indication of whether said predefined default prediction algorithm is used for said encoding of said at least one floating point number or said alternate prediction algorithm is used for said encoding of said collection of floating point numbers.

22. The system of claim 19 , further comprising the step of storing an index of said alternate prediction algorithm among a plurality of available alternate prediction algorithms.

23. The system of claim 19 , further comprising the steps of decompressing said encoded at least one floating point number by evaluating whether said predefined default prediction algorithm or said alternate prediction algorithm was used for said encoding and evaluating an index of said alternate prediction function among a plurality of available alternate prediction algorithms if said alternate prediction function was used for said encoding.

24. The system of claim 19 , further comprising the step of determining a set of one or more prediction algorithms out of a larger set of prediction algorithms for a specific data set including said at least one floating point number based on a performance-based ranking of the prediction algorithms of the larger set of prediction algorithms with respect to the specific data set including said at least one floating point number, so that the total number of bits saved over all floating point numbers is substantially maximal.

25. The system of claim 19 , wherein said predefined default prediction algorithm and a plurality of available alternate prediction algorithms can correspond to ensembles of prediction algorithms, and wherein the system further comprises the steps of:

storing an ensemble index to specify an ensemble of prediction algorithms when there is more than one possible ensemble to be selected; and

storing an indication of said ensembles of prediction algorithms.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (046366/0014) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0093 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 046366/0014 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: CIARLINI, ANGELO E. M.; PINHO, RÔMULO TEIXEIRA DE ABREU; CONDORI, EDWARD JOSÉ PACHECO; BORDIGNON, ALEX L.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 039892/0341 →