# US 9,519,754 B2 · Apparatuses and methods for parallel analytics

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,754 B2
- Document ID: US9519754B2
- Status: Granted
- Kind: B2
- Application number: 13/157,622
- Filed: 2011-06-10
- Published: 2011-12-15
- Granted: 2016-12-13
- Earliest claimed: 2010-06-11
- Assignees: OptumInsight, Inc.
- Applicants: Michael N. Jacobs
- Inventors: Michael N. Jacobs
- Web page: https://patentgrep.com/patent/US9519754B2

## CPC

- G06Q 10/10: Office automation; Time management
- G06Q 20/4016: {involving fraud or risk level assessment in transaction processing}
- G06F 16/21: Design, administration or maintenance of databases
- G16H 20/10: relating to drugs or medications, e.g. for ensuring correct administration to patients
- G16H 40/20: for the management or administration of healthcare resources or facilities, e.g. managing hospital staff or surgery rooms
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G16H: HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA

## Abstract

Methods, apparatus, and software packages for data processing are disclosed. In some embodiments, the method may include receiving a dataset. In some embodiments, the method may include determining a control number of a processing system. In some embodiments, the control number may include a number of evaluation units within the processing system. The method may include processing the dataset using a plurality of evaluation units. In some embodiments, processing the dataset may include allocating a free evaluation unit to form a busy evaluation unit. Processing the dataset may also include creating a data subdivision for the busy evaluation unit, the data subdivision including a part of the dataset. Processing the dataset may also include evaluating the data subdivision. Processing the dataset may also include releasing the busy evaluation unit. The allocating, creating, evaluating, and releasing may performed concurrently by the plurality of evaluation units.

## Claims

### Claim 1

A method for data processing, the method comprising:
receiving a dataset;
determining a control number of a processing system, where the control number defines a maximum number of evaluation units that can be used to concurrently process the dataset, with each evaluation unit representing a discrete computing resource used to process data;
processing the dataset using a plurality of evaluation units, where processing the dataset comprises:
allocating a free evaluation unit to form a busy evaluation unit;
creating a data subdivision for the busy evaluation unit using one or more configurable subdivision strategies implemented before and during the processing of the dataset;
dynamically modifying, during the processing of the dataset, the one or more configurable subdivision strategies based, at least in part, on contents of the dataset;
evaluating the data subdivision;
creating a status message reporting an estimated duration time for processing the dataset; and
releasing the busy evaluation unit;
wherein the evaluating step is performed concurrently by the plurality of evaluation units.

### Claim 2 (depends on 1)

The method of claim 1, where processing the dataset is repeated by the plurality of evaluation units until completion.

### Claim 3 (depends on 1)

The method of claim 1, where an evaluation unit comprises one or more processing devices.

### Claim 4 (depends on 1)

The method of claim 1, where the data subdivision comprises one or more subtasks.

### Claim 5 (depends on 4)

The method of claim 4, where evaluating the data subdivision comprises evaluating one or more subtasks.

### Claim 6 (depends on 4)

The method of claim 4, where evaluating the data subdivision further comprises describing the data subdivision with an XML framework.

### Claim 7 (depends on 6)

The method of claim 6, where describing the dataset with an XML framework further comprises ordering dependencies of the one or more subtasks to form one or more dependent subtasks.

### Claim 8 (depends on 7)

The method of claim 7, where evaluating the data subdivision further comprises:
producing intermediate results; and
sharing the intermediate results with the one or more dependent subtasks.

### Claim 9 (depends on 1)

The method of claim 1, where creating the data subdivision comprises recursively creating nested data subdivisions.

### Claim 10 (depends on 1)

The method of claim 1, where determining the control number comprises using configuration rules.

### Claim 11 (depends on 1)

The method of claim 1, where determining the control number further comprises determining available compute resources.

### Claim 12 (depends on 10)

The method of claim 10, where determining the control number further comprises determining available compute resources in response to the configuration rules.

### Claim 13 (depends on 11)

The method of claim 11, where determining the control number further comprises determining the control number in response to the memory size and the one or more processing devices.

### Claim 14 (depends on 11)

The method of claim 11, further comprising using one or more configurable control number strategies.

### Claim 15 (depends on 1)

The method of claim 1, where evaluating the data subdivision further comprises:
estimating the evaluation duration; and
measuring the evaluation duration.

### Claim 16 (depends on 15)

The method of claim 15, further comprising sending status messages.

### Claim 17

A apparatus for data processing, the apparatus comprising: a processor configured to:
receive a dataset;
determine a control number of a processing system, where the control number defines a maximum number of evaluation units that can be used to concurrently process data, with each evaluation unit representing a discrete computing resource used to process data; and
process the dataset using a plurality of evaluation units, where processing the dataset comprises:
allocating a free evaluation unit to form a busy evaluation unit;
creating a data subdivision for the busy evaluation unit using one or more configurable subdivision strategies implemented before and during the processing of the dataset;
dynamically modifying, during the processing of the dataset, the one or more configurable subdivision strategies based, at least in part, on contents of the dataset;
evaluating the data subdivision;
creating a status message reporting an estimated duration time for processing the dataset; and
releasing the busy evaluation unit;
wherein the evaluation step is performed concurrently by the plurality of evaluation units.

### Claim 18 (depends on 17)

The apparatus of claim 17, where processing the dataset is repeated by the plurality of evaluation units until completion.

### Claim 19 (depends on 17)

The apparatus of claim 17, where an evaluation unit comprises one or more processing devices.

### Claim 20 (depends on 17)

The apparatus of claim 17, where the data subdivision comprises one or more subtasks.

### Claim 21 (depends on 20)

The apparatus of claim 20, where evaluating the data subdivision comprises evaluating one or more subtasks.

### Claim 22 (depends on 20)

The apparatus of claim 20, where evaluating the data subdivision further comprises describing the data subdivision with an XML framework.

### Claim 23 (depends on 22)

The apparatus of claim 22, where describing the dataset with an XML framework further comprises ordering dependencies of the one or more subtasks to form one or more dependent subtasks.

### Claim 24 (depends on 23)

The apparatus of claim 23, where evaluating the data subdivision further comprises:
producing intermediate results; and
sharing the intermediate results with the one or more dependent subtasks.

### Claim 25 (depends on 17)

The apparatus of claim 17, where creating the data subdivision comprises recursively creating nested data subdivisions.

### Claim 26 (depends on 17)

The apparatus of claim 17, where determining the control number comprises using configuration rules.

### Claim 27 (depends on 17)

The apparatus of claim 17, where determining the control number further comprises determining available compute resources.

### Claim 28 (depends on 27)

The apparatus of claim 27, where determining the control number further comprises determining available compute resources in response to the configuration rules.

### Claim 29 (depends on 28)

The apparatus of claim 28 where determining the control number further comprises determining the control number in response to the memory size and the one or more processing devices.

### Claim 30 (depends on 28)

The apparatus of claim 28, where determining the control number further comprising using one or more configurable control number strategies.

### Claim 31 (depends on 17)

The apparatus of claim 17, where evaluative the data subdivision further comprises:
estimating the evaluation duration; and
measuring the evaluation duration.

### Claim 32 (depends on 31)

The apparatus of claim 31, further comprising sending status messages.

### Claim 33

A computer program product comprising a non-transitory computer readable medium having computer usable program code executable to perform operations for processing data, the operations of the computer program product comprising:
receiving a dataset;
determining a control number of a processing system, where the control number defines a maximum number of evaluation units that can be used to concurrently process data, with each evaluation unit representing a discrete computing resource used to process data;
processing the dataset using a plurality of evaluation units, where processing the dataset comprises:
allocating a free evaluation unit to form a busy evaluation unit;
creating a data subdivision for the busy evaluation unit using one or more configurable subdivision strategies implemented before and during the processing of the dataset;
dynamically modifying, during the processing of the dataset, the one or more configurable subdivision strategies based, at least in part, on contents of the dataset;
evaluating the data subdivision;
creating a status message reporting an estimated duration time for processing the dataset; and
releasing the busy evaluation unit;
wherein the evaluating step is performed concurrently by the plurality of evaluation units.
