# US 8,786,617 B2 · Parallelization of random number generation processing by employing GPU

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

- Number: US 8,786,617 B2
- Document ID: US8786617B2
- Status: Granted
- Kind: B2
- Application number: 13/038,813
- Filed: 2011-03-02
- Published: 2012-05-03
- Granted: 2014-07-22
- Earliest claimed: 2010-10-28
- Assignees: Mizuho-Dl Financial Technology Co., Ltd.
- Applicants: Tomohisa Yamakami
- Inventors: Tomohisa Yamakami
- Web page: https://patentgrep.com/patent/US8786617B2

## CPC

- G06F 7/582: {Pseudo-random number generators}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of carrying out random number generation processing uses a GPU including a plurality of blocks each including at least one core, the random number generation processing including update processing of updating state vectors and conversion processing of converting the updated state vectors into random numbers having another distribution. The method includes carrying out, by one of the plurality of blocks, the update processing (S3), and carrying out, by the plurality of blocks, the conversion processing in parallel based on results of the update processing (S9). Therefore, it is possible to more efficiently generate a random number sequence which is the same as the one obtained through random number generation processing performed in a serial manner, by parallelizing a single random number generator in a GPU.

## Claims

### Claim 1

A method of carrying out random number generation processing by using a GPU including a plurality of blocks each including at least one core, the random number generation processing including: update processing of updating state vectors; and conversion processing of converting the updated state vectors into random numbers having another distribution, comprising:
carrying out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carrying out, by the plurality of blocks, the conversion processing in parallel based on results of the update processing.

### Claim 2 (depends on 1)

A method according to claim 1, wherein a number of threads, which are generated by the plurality of blocks when carrying out the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.

### Claim 3

A method of carrying out random number generation processing by using a GPU including a plurality of blocks each including at least one core, the random number generation processing including: update processing of updating state vectors; tempering processing of converting the updated state vectors into integer random numbers; and conversion processing of converting the integer random numbers generated as results of the conversion into random numbers having another distribution, comprising:
carrying out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carrying out, by the plurality of blocks, the tempering processing and the conversion processing in parallel based on results of the update processing.

### Claim 4 (depends on 3)

A method according to claim 3, wherein a number of threads, which are generated by the plurality of blocks when carrying out the tempering processing and the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.

### Claim 5

A nontransitory computer readable medium encoded with a computer program for causing a GPU including a plurality of blocks each including at least one core to carry out random number generation processing including: update processing of updating state vectors; and conversion processing of converting the updated state vectors into random numbers having another distribution,
the computer program causing the GPU to:
carry out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carry out, by the plurality of blocks, the conversion processing in parallel based on results of the update processing.

### Claim 6 (depends on 5)

The nontransitory computer readable medium encoded with a computer program according to claim 5, wherein a number of threads, which are generated by the plurality of blocks when carrying out the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.

### Claim 7

A nontransitory computer readable medium encoded with a computer program for causing a GPU including a plurality of blocks each including at least one core to carry out random number generation processing including: update processing of updating state vectors; tempering processing of converting the updated state vectors into integer random numbers; and conversion processing of converting the integer random numbers generated as results of the conversion into random numbers having another distribution,
the computer program causing the GPU to:
carry out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carry out, by the plurality of blocks, the tempering processing and the conversion processing in parallel based on results of the update processing.

### Claim 8 (depends on 7)

The nontransitory computer readable medium encoded with a computer program according to claim 7, wherein a number of threads, which are generated by the plurality of blocks when carrying out the tempering processing and the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.

### Claim 9

A computing device, which comprises a GPU including a plurality of blocks each including at least one core, and carries out random number generation processing including: update processing of updating state vectors; and conversion processing of converting the updated state vectors into random numbers having another distribution,
wherein the computing device is configured to:
carry out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carry out, by the plurality of blocks, the conversion processing in parallel based on results of the update processing.

### Claim 10 (depends on 9)

A computing device according to claim 9, wherein a number of threads, which are generated by the plurality of blocks when carrying out the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.

### Claim 11

A computing device, which comprises a GPU including a plurality of blocks each including at least one core, and carries out random number generation processing including: update processing of updating state vectors; tempering processing of converting the updated state vectors into integer random numbers; and conversion processing of converting the integer random numbers generated as results of the conversion into random numbers having another distribution,
wherein the computing device is configured to:
carry out, by parallel processing in a single one of the plurality of blocks, the update processing; and
carry out, by the plurality of blocks, the tempering processing and the conversion processing in parallel based on results of the update processing.

### Claim 12 (depends on 11)

A computing device according to claim 11, wherein a number of threads, which are generated by the plurality of blocks when carrying out the tempering processing and the conversion processing, is larger than a number of threads, which are generated by the one of the plurality of blocks when carrying out the update processing.
