# US 10,319,069 B2 · Matrix factorization with approximate computing

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

- Number: US 10,319,069 B2
- Document ID: US10319069B2
- Status: Granted
- Kind: B2
- Application number: 15/842,615
- Filed: 2017-12-14
- Published: 2018-08-16
- Granted: 2019-06-11
- Earliest claimed: 2017-02-14
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Shiyu Chang; Liana L. Fong; Wei Tan
- Web page: https://patentgrep.com/patent/US10319069B2

## CPC

- G06T 1/60: Memory management
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Techniques that facilitate matrix factorization associated with graphics processing units are provided. In one example, a computer-implemented method is provided. The computer-implemented method can comprise loading, by a graphics processing unit operatively coupled to a processor, item features from a data matrix into a shared memory. The data matrix can be a matrix based on one or more user features and item features. The computer-implemented method can further comprise tiling and aggregating, by the graphics processing unit, outer products of the data matrix tiles to generate an aggregate value and approximating, by the graphics processing unit, an update to a user feature of the data matrix based on the aggregate value and the loaded item features.

## Claims

### Claim 1

A computer-implemented method, comprising:
loading, by a graphics processing unit operatively coupled to a processor, item features from a data matrix into a shared memory, the data matrix being a matrix based on one or more user features and item features;
tiling and aggregating, by the graphics processing unit, outer products of data matrix tiles to generate an aggregate value, wherein the tiling and aggregating comprises:
calculating an outer product of two of the data matrix tiles in a user feature of the data matrix, wherein the user feature is comprised within the one or more user features;
aggregating a result of the outer product into a memory register to generate the aggregate value; and
flushing the memory register into global memory based on the aggregating; and
approximating, by the graphics processing unit, an update to the user feature of the data matrix based on the aggregate value and the loaded item features.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
scaling, by the graphics processing unit, a reduced precision set of variables associated with the data matrix into associated ones of the data matrix tiles.

### Claim 3 (depends on 2)

The computer-implemented method of claim 2, wherein the reduced precision set comprises storage reduced by fifty percent compared to full precision.

### Claim 4 (depends on 2)

The computer-implementing method of claim 2, wherein the reduced precision set comprises precision reduced from 32-bit precision to 16-bit precision.

### Claim 5 (depends on 2)

The computer-implemented method of claim 2, wherein the scaling the reduced precision set of variables comprises normalizing the reduced precision set of variables.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the normalizing the reduced precision set of the variables comprises determining a variable as a function of a mean value and a standard deviation value.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the loading the item features comprises loading an item feature of the data matrix via a cache into a shared portion of memory separate from other item features of the data matrix.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the tiling and aggregating further comprises:
staging the one or more user features of the data matrix into a shared memory space in batches.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein the flushing the memory register comprises flushing the memory register based on aggregating the outer product based on all of the one or more user features of the data matrix.

### Claim 10 (depends on 1)

The computer-implemented method of claim 1, wherein the approximating the update comprises approximating the update employing an approximate solver that is of lower complexity than and with a convergence time less than or equal to the convergence time of an exact solver.
