# US 2017/0286284 A1 · Data composite for efficient memory transfer in a behavioral recognition system

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

- Number: US 2017/0286284 A1
- Document ID: US20170286284A1
- Status: Published application
- Kind: A1
- Application number: 15/090,366
- Filed: 2016-04-04
- Published: 2017-10-05
- Earliest claimed: 2016-04-04
- Assignees: Omni AI, Inc.
- Applicants: Omni AI, Inc.
- Inventors: Lon W. RISINGER; Kishor Adinath SAITWAL
- Web page: https://patentgrep.com/patent/US20170286284A1

## CPC

- G06T 1/60: Memory management
- G06F 3/061: {Improving I/O performance}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 12/023: {Free address space management}
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06V 10/96: Management of image or video recognition tasks
- G06V 20/40: in video content (extracting overlay text G06V20/62; video retrieval G06F16/70; processing of video elementary streams in video servers H04N21/234; processing of video elementary streams in video clients H04N21/44)
- G06F 2212/1016: Performance improvement
- G06F 2212/154: Networked environment
- G06F 2212/263: Network storage, e.g. SAN or NAS
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06V: IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING

## Abstract

Techniques are disclosed for dynamic memory allocation in a behavioral recognition system. According to one embodiment of the disclosure, one or more variable-sized chunks of memory is allocated from a device memory for a memory pool. An application allocates at least one of the chunks of memory from the memory pool for processing a plurality of input data streams in real-time. A request to allocate memory from the memory pool for input data is received. Upon determining that one of the chunks is available in the memory pool to store the input data, the chunk is allocated from the memory pool in response to the request.

## Claims

### Claim 1

A computer-implemented method comprising:
allocating, from a device memory, one or more variable-sized chunks of memory for a memory pool, wherein an application allocates at least one of the chunks of memory from the memory pool for processing a plurality of input data streams in real-time;
receiving a request to allocate memory from the memory pool for input data; and
upon determining that one of the chunks is available in the memory pool to store the input data, allocating the chunk from the memory pool in response to the request .

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
upon determining that the chunk is not available in the memory pool, allocating the memory in response to the request from available memory in the device.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
returning the variable-sized chunk to the memory pool.

### Claim 4 (depends on 1)

The method of claim 1, wherein each of the allocated variable-sized chunks are associated with a time decay constant.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
releasing at least one of the allocated variable-sized chunks from the memory pool after the variable-sized chunk is unused after a specified amount of time based on the time decay constant.

### Claim 6 (depends on 1)

The method of claim 1, wherein the device is a graphics processing unit (GPU).

### Claim 7 (depends on 1)

The method of claim 1, wherein the one or more variable-sized chunks is allocated based a total device memory size.

### Claim 8

A non-transitory computer-readable storage medium having instructions, which, when executed on a processor, performs an operation, comprising:
allocating, from a device memory, one or more variable-sized chunks of memory for a memory pool, wherein an application allocates at least one of the chunks of memory from the memory pool for processing a plurality of input data streams in real-time;
receiving a request to allocate memory from the memory pool for input data; and
upon determining that one of the chunks is available in the memory pool to store the input data, allocating the chunk from the memory pool in response to the request.

### Claim 9 (depends on 8)

The computer-readable storage medium of claim 8, wherein the operation further comprises:
upon determining that the chunk is not available in the memory pool, allocating the memory in response to the request from available memory in the device.

### Claim 10 (depends on 8)

The computer-readable storage medium of claim 8, wherein the operation further comprises:
returning the variable-sized chunk to the memory pool.

### Claim 11 (depends on 8)

The computer-readable storage medium of claim 8, wherein each of the allocated variable-sized chunks are associated with a time decay constant.

### Claim 12 (depends on 11)

The computer-readable storage medium of claim 11, wherein the operation further comprises:
releasing at least one of the allocated variable-sized chunks from the memory pool after the variable-sized chunk is unused after a specified amount of time based on the time decay constant.

### Claim 13 (depends on 8)

The computer-readable storage medium of claim 8, wherein the device is a graphics processing unit (GPU).

### Claim 14 (depends on 8)

The computer-readable storage medium of claim 8, wherein the one or more variable-sized chunks is allocated based a total device memory size.

### Claim 15

A system, comprising:
a processor; and
a memory storing code, which, when executed on the processor, performs an operation, comprising:
allocating, from a device memory, one or more variable-sized chunks of memory for a memory pool, wherein an application allocates at least one of the chunks of memory from the memory pool for processing a plurality of input data streams in real-time,
receiving a request to allocate memory from the memory pool for input data, and
upon determining that one of the chunks is available in the memory pool to store the input data, allocating the chunk from the memory pool in response to the request.

### Claim 16 (depends on 15)

The system of claim 15, wherein the operation further comprises:
upon determining that the chunk is not available in the memory pool, allocating the memory in response to the request from available memory in the device.

### Claim 17 (depends on 15)

The system of claim 15, wherein the operation further comprises:
returning the variable-sized chunk to the memory pool.

### Claim 18 (depends on 15)

The system of claim 15, wherein each of the allocated variable-sized chunks are associated with a time decay constant.

### Claim 19 (depends on 18)

The system of claim 18, wherein the operation further comprises:
releasing at least one of the allocated variable-sized chunks from the memory pool after the variable-sized chunk is unused after a specified amount of time based on the time decay constant.

### Claim 20 (depends on 15)

The system of claim 15, wherein the device is a graphics processing unit (GPU).
