IP Library Granted Patent US 10,103,745
Granted Patent B1
US 10,103,745 · App. 15/363,328 · Granted Oct 16, 2018

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

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 10,103,745
App. No.
15/363,328
Granted
Oct 16, 2018
Kind
B1
Abstract

Methods and apparatus are provided for content-aware compression of data using selection from multiple weighted prediction functions. An exemplary method comprises obtaining a floating point number; applying a plurality of distinct prediction algorithms to the floating point number to generate a corresponding plurality of predictions; selecting at least one of the predictions for the floating point number based on combination weights for the plurality of distinct prediction algorithms, wherein the combination weights are based only on prior samples of the floating point numbers; and encoding the floating point number by encoding, as a single code, the exponent and the length of a residual generated by the distinct prediction algorithm associated with the selected at least one prediction. The combination weights are optionally updated for subsequent floating point numbers. A set of one or more predictors out of a larger set of predictors can be determined for a specific data set based on a data analysis ranking.

Claims (34)

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 and one or more additional bits to indicate an exponent at a given base and 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, using at least one processing device, a plurality of distinct prediction algorithms to said at least one floating point number to generate a corresponding plurality of predictions;

selecting, using the at least one processing device, at least one of said plurality of predictions for said at least one floating point number based on combination weights for each of said plurality of distinct prediction algorithms, wherein said combination weights are based substantially only on prior samples of said at least one floating point number; and

encoding, using the at least one processing device, said at least one floating point number by encoding, as a single code, said exponent and said length of a residual generated by at least one of said distinct prediction algorithms associated with said selected at least one prediction.

2. The method of claim 1 , further comprising the step of updating said combination weights for a subsequent floating point number.

3. The method of claim 2 , wherein said updating employs a normalized gradient-descent rule.

4. The method of claim 2 , further comprising the steps of scaling each of said plurality of predictions and adding said scaled predictions to said combination weights for said plurality of distinct prediction algorithms.

5. The method of claim 2 , further comprising one or more steps of setting negative combination weights for said at least one floating point number to zero; dividing a vector of said combination weights for said at least one floating point number by a sum of elements of said vector; and applying said divided vector to an indicator function that selects said at least one of said plurality of predictions for said subsequent floating point number.

6. The method of claim 1 , wherein said selection is based on a magnitude of said combination weights.

7. 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 an analysis of said specific data set.

8. The method of claim 7 , wherein said analysis of said specific data set comprises one or more of an auto-correlation and a local variance of time series of floating point numbers.

9. The method of claim 1 , further comprising the step of selecting one of said plurality of predictions for one or more groups of floating point numbers.

10. The method of claim 1 , further comprising the steps of identifying one or more groups of floating point numbers in which said selecting at least one of said plurality of predictions for said at least one floating point number based on combination weights for each of said plurality of distinct prediction algorithms is locally outperformed by at least one other distinct compression method; and applying said at least one other distinct compression method to said one or more groups of floating point numbers.

11. The method of claim 10 , wherein said at least one other distinct compression method comprises one or more of a first multiple predictor method that selects predictors based on one or more of data segmentation and a disambiguation criterion and a second window-based multiple predictor method that selects predictors based on an evaluation of one or more compression metrics considering an application of said predictors to a collection of floating point numbers within a window.

12. The method of claim 10 , wherein said applying said at least one other distinct compression method to said one or more groups of floating point numbers comprises storing metadata to indicate the compression method applied to said one or more groups of floating point numbers.

13. A computer program product for compressing at least one floating point number, comprising a tangible 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 and one or more additional bits to indicate an exponent at a given base and 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, using the at least one processing device, a plurality of distinct prediction algorithms to said at least one floating point number to generate a corresponding plurality of predictions;

selecting, using the at least one processing device, at least one of said plurality of predictions for said at least one floating point number based on combination weights for each of said plurality of distinct prediction, algorithms, wherein said combination weights are based substantially only on prior samples of said at least one floating point number; and

encoding, using the at least one processing device, said at least one floating point number by encoding, as a single code, said exponent and said length of a residual generated by at least one of said distinct prediction algorithms associated with said selected at least one prediction.

14. 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 and one or more additional bits to indicate an exponent at a given base and 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, using the at least one processing device, a plurality of distinct prediction algorithms to said at least one floating point number to generate a corresponding plurality of predictions;

selecting, using the at least one processing device, at least one of said plurality of predictions for said at least one floating point number based on combination weights for each of said plurality of distinct prediction algorithms, wherein said combination weights are based substantially only on prior samples of said at least one floating point number; and

encoding, using the at least one processing device, said at least one floating point number by encoding, as a single code, said exponent and said length of a residual generated by at least one of said distinct prediction algorithms associated with said selected at least one prediction.

15. The system of claim 14 , further comprising the step of updating said combination weights for a subsequent floating point number.

16. The system of claim 15 , further comprising one or more steps of scaling each of said plurality of predictions and adding said scaled predictions to said combination weights for said plurality of distinct prediction algorithms; setting negative combination weights for said at least one floating point number to zero; dividing a vector of said combination weights for said at least one floating point number by a sum of elements of said vector; and applying said divided vector to an indicator function that selects said at least one of said plurality of predictions for said subsequent floating point number.

17. The system of claim 14 , wherein said selection is based on a magnitude of said combination weights.

18. The system of claim 14 , 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 an analysis of said specific data set.

19. The system of claim 14 , further comprising the step of selecting one of said plurality of predictions for one or more groups of floating point numbers.

20. The system of claim 14 , further comprising the steps of identifying one or more groups of floating point numbers in which said selecting at least one of said plurality of predictions for said at least one floating point number based on combination weights for each of said plurality of distinct prediction algorithms is locally outperformed by at least one other distinct compression method; and applying said at least one other distinct compression method to said one or more groups of floating point numbers.

Assignments (4)
RELEASE OF SECURITY INTEREST AT REEL 048825 FRAME 0489 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 058000/0916 →
SECURITY AGREEMENT Recorded Apr 8, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 048825/0489 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2016
From: CAMPOS, MARCELLO LUIZ RODRIGUES DE; PINHO, RÔMULO TEIXEIRA DE ABREU; CIARLINI, ANGELO E. M.; BORDIGNON, ALEX LAIER
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040983/0521 →