# US 10,120,602 B2 · Device and method for determining data placement destination, and program recording medium

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

- Number: US 10,120,602 B2
- Document ID: US10120602B2
- Status: Granted
- Kind: B2
- Application number: 15/563,762
- Filed: 2016-03-22
- Published: 2018-03-22
- Granted: 2018-11-06
- Earliest claimed: 2015-03-30
- Assignees: NEC Corporation
- Applicants: NEC Corporation
- Inventors: Takamichi Miyamoto
- Web page: https://patentgrep.com/patent/US10120602B2

## CPC

- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0673: {Single storage device}
- G06F 3/0683: {Plurality of storage devices}
- G06F 9/505: {considering the load}
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data placement destination determination device enables efficiency improvement of the execution time of a program that is executed in a system mounted with a plurality of memories having differing memory bandwidth. This device includes: a program information acquisition unit acquiring required bandwidth and memory size; a system information acquisition unit acquiring the memory bandwidth and size of a candidate memory at a placement destination; a priority setting unit setting priority based on required bandwidth and priority; a first placement destination determination unit determining a placement destination for the data of the program concerned within a range that does not exceed memory size and bandwidth based on the set priorities; and a second placement destination determination unit determining a placement destination within a range that does not exceed memory size based on the set priorities, the required bandwidth of the program concerned, and the memory bandwidth of the candidate memory.

## Claims

### Claim 1

A data placement destination determination device comprising:
a memory storing instructions; and
one or more processors configured to execute the instructions to:
acquire a required bandwidth and a required size of a memory for each of target programs which is a target to be determined a placement destination of data used for each of the target programs;
acquire a memory bandwidth and a memory size for each of candidate memories which is a candidate of a placement destination of data used for the target programs;
set a priority for each of the target programs based on the required bandwidth and setting a priority for each of the candidate memories based on the memory bandwidth;
determine a placement destination of data used for each of the target programs from the candidate memories, based on the priorities, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories; and
determine a placement destination of a placement destination undetermined program whose placement destination is not determined, based on the priority of the placement destination undetermined program, a required bandwidth of each of the target programs, and a memory bandwidth of each of the candidate memories, in a range not exceeding the memory size of each of the candidate memories.

### Claim 2 (depends on 1)

The data placement destination determination device according to claim 1, wherein
the one or more processors are further configured to execute the instructions to:
determine as a placement destination of the placement destination undetermined program, a candidate memory which minimizes an increase of a total execution time of the target program due to an excess of the bandwidth.

### Claim 3 (depends on 2)

The data placement destination determination device according to claim 2, wherein
the one or more processors are further configured to execute the instructions to:
acquire program information including at least information about the required bandwidth and the required size for each of partial processes obtained by dividing the target program,
set the priority based on the required bandwidth for each of the partial processes of the target program, and sets the priority based on the memory bandwidth for each of the candidate memories,
determine a data placement destination for each of the partial processes of the target program, based on the priority, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories, and
determine a placement destination of a placement destination undetermined partial process whose placement destination is not determined, based on the priority of the placement destination undetermined partial process, the required bandwidth of the partial process, and the memory bandwidth of the candidate memory, in a range not exceeding the memory size of each of the candidate memories.

### Claim 4 (depends on 2)

The data placement destination determination device according to claim 2, wherein
the one or more processors are further configured to execute the instructions to:
acquire program information including at least information about the required bandwidth and a variable to be used, for each of the partial processes obtained by dividing the target program,
set the priority based on the required bandwidth for each of the variables used in the partial processes of the target program, and sets the priority based on the memory bandwidth for each of the candidate memories,
determine a placement destination of each of the variables used in the partial processes of the target program, based on the priority, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories, and
determine a placement destination of a placement destination undetermined variable whose placement destination is not determined, based on the priority of the placement destination undetermined variable, the required bandwidth of the partial process using the variable, and the memory bandwidth of the candidate memory, in a range not exceeding the memory size of each of the candidate memories.

### Claim 5 (depends on 1)

The data placement destination determination device according to claim 1, wherein
the one or more processors are further configured to execute the instructions to:
acquire program information including at least information about the required bandwidth and the required size for each of partial processes obtained by dividing the target program,
set the priority based on the required bandwidth for each of the partial processes of the target program, and sets the priority based on the memory bandwidth for each of the candidate memories,
determine a data placement destination for each of the partial processes of the target program, based on the priority, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories, and
determine a placement destination of a placement destination undetermined partial process whose placement destination is not determined, based on the priority of the placement destination undetermined partial process, the required bandwidth of the partial process, and the memory bandwidth of the candidate memory, in a range not exceeding the memory size of each of the candidate memories.

### Claim 6 (depends on 1)

The data placement destination determination device according to claim 1, wherein
the one or more processors are further configured to execute the instructions to:
acquire program information including at least information about the required bandwidth and a variable to be used, for each of the partial processes obtained by dividing the target program,
set the priority based on the required bandwidth for each of the variables used in the partial processes of the target program, and sets the priority based on the memory bandwidth for each of the candidate memories,
determine a placement destination of each of the variables used in the partial processes of the target program, based on the priority, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories, and
determine a placement destination of a placement destination undetermined variable whose placement destination is not determined, based on the priority of the placement destination undetermined variable, the required bandwidth of the partial process using the variable, and the memory bandwidth of the candidate memory, in a range not exceeding the memory size of each of the candidate memories.

### Claim 7 (depends on 6)

The data placement destination determination device according to claim 6, wherein
the one or more processors are further configured to execute the instructions to:
determine a placement destination of the placement destination undetermined program, the placement destination undetermined partial process, or the placement destination undetermined variable, based on a memory bandwidth excess degree indicating a degree of exceeding a memory bandwidth in the candidate memory after placement, in each of the candidate memories in which the placement destination undetermined program, the placement destination undetermined partial process, or the placement destination undetermined variable is placeable.

### Claim 8 (depends on 7)

The data placement destination determination device according to claim 7, wherein
the one or more processors are further configured to execute the instructions to:
calculate, for each of the candidate memories in which the placement destination undetermined program, the placement destination undetermined partial process, or the placement destination undetermined variable is placeable, an increase rate of a total execution time of the target programs which set the candidate memory depending on a memory bandwidth excess degree of the candidate memory after placement, as a data placement destination, and determines a candidate memory with the smallest increase rate as a placement destination.

### Claim 9 (depends on 8)

The data placement destination determination device according to claim 8, wherein
the one or more processors are further configured to execute the instructions to:
calculate, for each of the candidate memories in which the placement destination undetermined program, the placement destination undetermined partial process, or the placement destination undetermined variable is placeable, an increase rate of a total execution time of the target programs which set the candidate memory as a data placement destination, by using a memory bandwidth excess degree in the candidate memory after placement, and an execution time of the target program which sets the candidate memory as a data placement destination, and determines a candidate memory with the smallest increase rate as a placement destination.

### Claim 10 (depends on 7)

The data placement destination determination device according to claim 7, wherein
the one or more processors are further configured to execute the instructions to:
calculate, for each of the candidate memories in which the placement destination undetermined program, the placement destination undetermined partial process, or the placement destination undetermined variable is placeable, an increase rate of a total execution time of the target programs which set the candidate memory as a data placement destination, by using a memory bandwidth excess degree in the candidate memory after placement, and an execution time of the target program which sets the candidate memory as a data placement destination, and determines a candidate memory with the smallest increase rate as a placement destination.

### Claim 11 (depends on 1)

The data placement destination determination device according to claim 1, wherein
the one or more processors are further configured to execute the instructions to:
output a determined placement destination.

### Claim 12

A data placement destination determination method performed by an information processing device comprising:
acquiring a required bandwidth and a required size of a memory for each of target programs which is a target to be determined a placement destination of data used for each of the target programs, and a memory bandwidth and a memory size for each of candidate memories which is a candidate of a placement destination of data used for the target programs;
setting a priority for each of the target programs based on the required bandwidth and setting a priority for each of the candidate memories based on the memory bandwidth;
determining a placement destination of data used for each of the target programs from the candidate memories, based on the priorities of the target programs and the priorities of the candidate memories, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories; and
determining a placement destination of a placement destination undetermined program whose placement destination is not determined, based on the priority of the placement destination undetermined program, a required bandwidth of each of the target programs, and a memory bandwidth of each of the candidate memories, in a range not exceeding the memory size of each of the candidate memories.

### Claim 13

A storage medium storing a data placement destination determination program that causes a computer to execute:
a process that acquires a required bandwidth and a required size of a memory for each of target programs which is a target to be determined a placement destination of data used for each of the target programs;
a process that acquires a memory bandwidth and a memory size for each of candidate memories which is a candidate of a placement destination of data used for the target programs;
a process that sets a priority for each of the target programs based on the required bandwidth and setting a priority for each of the candidate memories based on the memory bandwidth;
a process that determines a placement destination of data used for each of the target programs from the candidate memories, based on the priorities of the target programs and the priorities of the candidate memories, in a range not exceeding the memory size and the memory bandwidth of each of the candidate memories; and
a process that determines a placement destination of a placement destination undetermined program whose placement destination is not determined, based on the priority of the placement destination undetermined program, a required bandwidth of each of the target programs, and a memory bandwidth of each of the candidate memories, in a range not exceeding the memory size of each of the candidate memories.
