IP Library › Granted Patent US 10,713,581
Granted Patent B2
US 10,713,581 · App. 15/255,779 · Granted Jul 14, 2020

Parallelization and synchronization of procedures to enable overhead hiding

Inventor: Jun Doi (Tokyo, JP)
Assignee: International Business Machines Corporation
G06N10/00G06F9/52
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,713,581
App. No.
15/255,779
Granted
Jul 14, 2020
Kind
B2
Abstract

A computer-implemented method is provided for hiding overheads on a parallel computing platform. The computer-implemented method includes loading a first kernel overhead and a second kernel overhead in a queue of a second thread, and loading a dummy kernel overhead between the first and second kernel overheads in the queue of second thread. The computer-implemented method further includes loading a waiting process in the queue of a first thread, the waiting process remaining active until a previous kernel of the first and second kernel overheads ends. The computer-implemented method furthers include allocating memory copy overheads related to the previous kernel in the queue of the first thread and allocating a stop process in the queue of the first thread, the stop process configured to stop a dummy kernel, the dummy kernel related to the dummy kernel overhead.

Claims (44)

1. A computer-implemented method executed on a processor for hiding overheads on a parallel computing platform, the method comprising:

loading a first overhead process and a second overhead process into a queue of a second thread of a processor;

loading a dummy overhead process between the first overhead process and second overhead process into the queue of the second thread;

loading a waiting process into a queue of a first thread of the processor, the waiting process remaining active until a previous kernel associated with the first overhead process and second overhead process ends;

allocating memory copy overhead processes related to the previous kernel in the queue of the first thread;

allocating a stop process in the queue of the first thread, the stop process configured to stop a dummy kernel associated with the dummy overhead process; and

copying the first overhead process and second overhead process to a queue of a main stream of an accelerator while the previous kernel executes on the accelerator.

2. The method of claim 1 , wherein the first overhead process is a kernel launch overhead process and the second overhead process is a memory copy overhead process.

3. The method of claim 1 , wherein the dummy overhead process is loaded when the first overhead process and second overhead process have a data dependency.

4. The method of claim 1 , wherein the accelerator executes the first overhead process, the second overhead process, and the dummy overhead process.

5. The method of claim 4 , wherein the accelerator is a graphical processing unit (GPU).

6. The method of claim 5 , wherein the first overhead process and the second overhead process are hidden behind computations of the GPU.

7. The method of claim 6 , wherein the first thread is an extra thread created on a host to be synchronized with the GPU.

8. The method of claim 1 , wherein the dummy kernel waits in a spin loop until a counter is set to a predetermined value.

9. The method of claim 8 , wherein, after a kernel procedure of the first thread is completed, the first thread launches a special kernel to set the counter to the predetermined value.

10. The method of claim 1 , wherein the first overhead process and second overhead process relate to lattice sites of quantum chromodynamics (QCD) lattices.

11. A non-transitory computer readable storage medium comprising a computer readable program for hiding overheads on a parallel computing platform, wherein the computer readable program when executed on a computer causes the computer to perform the steps of:

loading a first overhead process and a second overhead process into a queue of a second thread of a processor;

loading a dummy overhead process between the first overhead process and second overhead process into the queue of the second thread;

loading a waiting process into a queue of a first thread of the processor, the waiting process remaining active until a previous kernel associated with the first overhead process and second overhead process ends;

allocating memory copy overhead processes related to the previous kernel in the queue of the first thread;

allocating a stop process in the queue of the first thread, the stop process configured to stop a dummy kernel associated with the dummy overhead process; and

copying the first overhead process and second overhead process to a queue of a main stream of an accelerator while the previous kernel executes on the accelerator.

12. The non-transitory computer readable storage medium of claim 11 , wherein the first overhead process is a kernel launch overhead process and the second overhead process is a kernel memory copy overhead process.

13. The non-transitory computer readable storage medium of claim 11 , wherein the dummy overhead process is loaded when the first overhead process and second overhead process have a data dependency.

14. The non-transitory computer readable storage medium of claim 11 , wherein the accelerator executes the first overhead process, the second overhead process, and the dummy overhead process.

15. The non-transitory computer readable storage medium of claim 14 , wherein the accelerator is a graphical processing unit (GPU).

16. The non-transitory computer readable storage medium of claim 15 , wherein the first overhead process and the second overhead process are hidden behind computations of the GPU.

17. The non-transitory computer readable storage medium of claim 16 , wherein the first thread is an extra thread created on a host to be synchronized with the GPU.

18. The non-transitory computer readable storage medium of claim 11 ,

wherein the dummy kernel waits in a spin loop until a counter is set to a predetermined value; and

wherein, after a kernel procedure of the first thread is completed, the first thread launches a special kernel to set the counter to the predetermined value.

19. A computer system for hiding overheads on a parallel computing platform, the computer system comprising:

a memory; and

a processor in communication with the memory, wherein the processor is configured to:

load a first overhead process and a second overhead process into a queue of a second thread of the processor;

load a dummy overhead process between the first overhead process and second overhead process into the queue of the second thread;

load a waiting process into a queue of a first thread of the processor, the waiting process remaining active until a previous kernel associated with the first overhead process and second overhead process ends;

allocate memory copy overhead processes related to the previous kernel in the queue of the first thread;

allocate a stop process in the queue of the first thread, the stop process configured to stop a dummy kernel associated with the dummy overhead process; and

copy the first overhead process and second overhead process to a queue of a main stream of an accelerator while the previous kernel executes on the accelerator.

20. The computer system of claim 19 ,

wherein the first overhead process is a kernel launch overhead process and the second overhead process is a kernel memory copy overhead process; and

wherein the dummy overhead process is loaded when the first overhead process and second overhead process have a data dependency.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: DOI, JUN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039623/0427 →
Continuity (1)
Related Publication 20180067894A1 · Mar 8, 2018