IP Library Granted Patent US 9,292,340
Granted Patent B2
US 9,292,340 · App. 13/723,014 · Granted Mar 22, 2016

Applicaton interface on multiple processors

Inventors: Aaftab AbdulLatif Munshi (Los Gatos, CA); Jeremy Sandmel (San Mateo, CA)
Assignee: Apple Inc.
G06F9/4843G06F8/314G06F8/41G06F9/505G06F9/5027G06F9/541G06F8/445
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 9,292,340
App. No.
13/723,014
Granted
Mar 22, 2016
Kind
B2
Abstract

A method and an apparatus that execute a parallel computing program in a programming language for a parallel computing architecture are described. The parallel computing program is stored in memory in a system with parallel processors. The parallel computing program is stored in a memory to allocate threads between a host processor and a GPU. The programming language includes an API to allow an application to make calls using the API to allocate execution of the threads between the host processor and the GPU. The programming language includes host function data tokens for host functions performed in the host processor and kernel function data tokens for compute kernel functions performed in one or more compute processors, e.g GPUs or CPUs, separate from the host processor.

Claims (37)

1. A parallel computing system comprising:

a host processor, the host processor receiving a processing task for an application program, the processing task comprising multiple threads;

a set of compute processors comprising at least one CPU and at least one GPU coupled to the host processor, the set of compute processors configured as a plurality of logical compute devices having different capabilities;

a memory coupled to the host processor, storing a parallel computing program comprising executable instructions to cause the host processor,

to determine one or more logical compute devices from the plurality of logical compute devices that satisfy capabilities specified to the host processor by the application program for the processing task by evaluating capabilities of the at least one CPU and the at least one GPU;

in response to an execution request from the application program, to allocate the threads among the compute processors in the logical compute device identified in the execution request, the identified logical compute device selected by the application from the one or more logical compute devices determined by the host processor as satisfying the specified capabilities, wherein at least two of the compute processors in the identified logical compute device are of different characteristics and the instructions further cause the host processor to allocate two threads between the at least two compute processors for parallel execution based on the characteristics, with at least one thread being allocated to either the at least one CPU and the at least one GPU.

2. The parallel computing system of claim 1 , wherein one of the at least two compute processors comprises graphics texture mapping hardware to map texture maps onto surfaces to be displayed on a display device.

3. The parallel computing system of claim 1 , wherein the parallel execution of the threads is based on two or more executables compiled from a program source of the application program, and wherein separate executables of the two or more executables are executed on the at least two compute processors concurrently.

4. The parallel computing system of claim 1 , wherein one of the at least two compute processors is a multi-core processor from one vendor and the other of the at least two compute processors is a multi-core processor from a different vendor.

5. The parallel computing system of claim 1 , wherein one of the at least two compute processors supports double precision floating point arithmetic.

6. The parallel computing system of claim 1 , wherein the different characteristics are different types of compute processors.

7. The parallel computing system of claim 1 , wherein the different characteristics of a compute processors includes different versions of computer processors.

8. A computerized method comprising:

determining, by a host processor, one or more logical compute devices from a plurality of logical compute devices that satisfy capabilities specified to the host processor by an application program for a processing task by evaluating capabilities of at least one CPU and at least one GPU;

receiving, by the host processor, an identification of a logical compute device in an execution request from the application program, the identified logical compute device selected by the application from the one or more logical compute devices that the host processor determined satisfies the specified capabilities, the processing task comprising multiple threads and the identified logical compute device comprising a plurality of compute processors, wherein at least two compute processors in the identified logical compute device have different characteristics; and

allocating, by the host processor in response to the execution request, two threads between the at least two compute processors for parallel execution based on the characteristics, with at least one thread being allocated to either the at least one CPU and the at least one GPU.

9. The computerized method of claim 8 , wherein one of the at least two compute processors comprises graphics texture mapping hardware to map texture maps onto surfaces to be displayed on a display device.

10. The computerized method of claim 8 , wherein one of the at least two compute processors is a multi-core processor from one vendor and the other of the at least two compute processors is a multi-core processor from a different vendor.

11. The computerized method of claim 8 , wherein one of the at least two compute processors supports double precision floating point arithmetic.

12. The computerized method of claim 8 , wherein the different characteristics of the compute processors include different types.

13. The computerized method of claim 8 , wherein the different characteristics of compute processors include different versions.

14. The computerized method of claim 8 , wherein the parallel execution of the threads is based on two or more executables compiled from a program source of the application program, and wherein separate executables of the two or more executables are executed on the at least two compute processors concurrently.

15. A non-transitory computer readable medium having stored thereon executable instructions that cause a host processor to perform operations comprising;

determining, by the host processor, one or more logical compute devices from a plurality of logical compute devices that satisfy capabilities specified to the host processor by an application program for a processing task by evaluating capabilities of at least one CPU and at least one GPU;

receiving, from the application program, an execution request including an identification of a logical compute device, the identified logical compute device selected by the application program from the one or more logical compute devices determined by the host processor as satisfying the specified capabilities, the processing task comprising multiple threads and the identified logical compute device comprising a plurality of compute processors, wherein at least two compute processors in the identified logical compute device have different characteristics; and

allocating, in response to the execution request, execution of two threads between the at least two compute processors for parallel execution based on the characteristics, with at least one thread being allocated to either the at least one CPU and the at least one GPU.

16. The non-transitory computer readable medium of claim 15 , wherein one of the at least two compute processors comprises graphics texture mapping hardware to map texture maps onto surfaces to be displayed on a display device.

17. The non-transitory computer readable medium of claim 15 , wherein one of the at least two compute processors is a multi-core processor from one vendor and the other of the at least two compute processors is a multi-core processor from a different vendor.

18. The non-transitory computer readable medium of claim 15 , wherein one of the at least two compute processors supports double precision floating point arithmetic.

19. The non-transitory computer readable medium of claim 15 , wherein the different characteristics of the compute processors include different types.

20. The non-transitory computer readable medium of claim 15 , wherein the different characteristics of compute processors include different versions.

21. The non-transitory computer readable medium of claim 15 , wherein the execution of the threads is based on two or more executables compiled from a program source of the application program, and wherein separate executables of the two or more executables are executed on the at least two compute processors concurrently.

22. A computerized method comprising:

receiving, by a host processor, a plurality of processing tasks, each processing task corresponding to an application program and having multiple threads, wherein each application program specifies capabilities for the corresponding task;

determining, by the host processor, one or more logical compute devices from a plurality of logical compute devices that satisfy the specified capabilities by evaluating capabilities of at least one CPU and at least one GPU;

receiving, by the host processor, identifications of a plurality of logical compute devices in execution requests from the application programs, each identified logical compute device selected by one of the corresponding application programs from the one or more logical compute devices determined by the host processor as satisfying the specified capabilities specified by the corresponding application program, and each identified logical compute device comprising a plurality of compute processors, wherein at least two compute processors in two identified logical compute devices have different characteristics;

allocating, by the host processor in response to the execution requests, the processing tasks to the identified logical compute devices, wherein at least two threads for each processing task allocated to one of the two identified logical computer devices are allocated concurrently to the at least two compute processors in the two identified logical compute devices for parallel execution based on the characteristics, with at least one thread being allocated to either the at least one CPU and the at least one GPU.

Assignments (2)
CHANGE OF NAME Recorded Oct 30, 2015
From: APPLE COMPUTER, INC.
To: APPLE INC.
Reel/Frame 036925/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2012
From: WU, HUNG-HSIN; SHANMUGAVADIVELU, KARTHIKEYAN; LIU, SHIZHONG; MA, WAN SHUN VINCENT; GOLIKERI, ADARSH ABHAY
To: QUALCOMM INCORPORATED
Reel/Frame 028953/0014 →
Continuity (4)
Continuation 11800183 · May 3, 2007
Provisional Application 60925574 · Apr 20, 2007
Provisional Application 60923030 · Apr 11, 2007
Related Publication 20130132934A1 · May 23, 2013