IP Library › Granted Patent US 8,533,697
Granted Patent B2
US 8,533,697 · App. 12/894,544 · Granted Sep 10, 2013

Graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment

Inventors: Halldor N. Stefansson (Natick, MA); Edric Ellis (Cambs, GB); Jocelyn Luke Martin (Burwell, GB)
Assignee: The MathWorks, Inc.
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 8,533,697
App. No.
12/894,544
Granted
Sep 10, 2013
Kind
B2
Abstract

A device initiates a technical computing environment (TCE), and receives, via the TCE, a program command that permits the TCE to access a graphical processing unit that is remote to the device, where the program command permits the TCE to seamlessly transfer data to the remote GPU. The device transforms, via the TCE, the program command into a program command that is executable by the remote GPU, and provides the transformed program command to the remote GPU for execution. The device also receives, from the remote GPU, one or more results associated with execution of the transformed program command by the remote GPU, and utilizes the one or more results via the TCE.

Claims (79)

1. A method implemented by a computing device, the method comprising:

initiating, via the computing device, a technical computing environment;

receiving, by the computing device and via the technical computing environment, a program command to be executed by a graphical processing unit (GPU) that is remote to the computing device,

the program command permitting the technical computing environment to transfer data to the remote graphical processing unit;

transforming, by the computing device and via the technical computing environment, the program command into a program command that is executable by the remote graphical processing unit;

determining, by the computing device, data associated with execution of the transformed program command by the remote graphical processing unit;

providing, by the computing device, the data and the transformed program command to the remote graphical processing unit for execution,

the remote graphical processing unit being to provide the data to another remote graphical processing unit; and

receiving, by the computing device and from the remote graphical processing unit, one or more results associated with execution of the transformed program command by the remote graphical processing unit.

2. The method of claim 1 , where the program command includes one or more of:

one or more algorithms to be executed by the remote graphical processing unit;

technical computing environment code to be executed by the remote graphical processing unit; or

a technical computing environment file to be executed by the remote graphical processing unit.

3. The method of claim 1 , where the program command enables at least one of:

data parallel processing,

task parallel processing, or

stream parallel processing.

4. The method of claim 1 , further comprising:

creating, via the technical computing environment and based on the program command, a kernel to be executed by the remote graphical processing unit;

receiving, via the technical computing environment, host-side code for allocating memory of the remote graphical processing unit;

transforming the kernel and the host-side code into another kernel executable by the remote graphical processing unit; and

providing the other kernel to the remote graphical processing unit for execution.

5. The method of claim 1 , where providing the transformed program command includes:

determining a number of remote graphical processing units available for executing the transformed program command;

selecting a remote graphical processing unit from the number of remote graphical processing units; and

providing the transformed program command to the selected remote graphical processing unit for execution.

6. The method of claim 1 , where the program command is created using the technical computing environment.

7. The method of claim 1 , where the remote graphical processing unit is provided in a device other than the computing device.

8. A non-transitory computer-readable media storing instructions, the instructions comprising:

one or more instructions which, when executed by at least one processor, cause the at least one processor to:

provide a technical computing environment;

receive, via the technical computing environment, a program command to be executed by a graphical processing unit (GPU) that is remote to a device containing the media,

the program command permitting the technical computing environment to transfer data to the remote graphical processing unit;

transform, via the technical computing environment, the program command into a program command that is executable by the remote graphical processing unit;

determine data associated with execution of the transformed program command by the remote graphical processing unit;

provide the data and the transformed program command to the remote graphical processing unit for execution; and

receive, from the remote graphical processing unit, one or more results associated with execution of the transformed program command by the remote graphical processing unit.

9. The non-transitory computer-readable media of claim 8 , further comprising:

one or more instructions to create, based on the program command, a kernel to be executed by the remote graphical processing unit;

one or more instructions to transform the kernel into another kernel executable by the remote graphical processing unit; and

one or more instructions to provide the other kernel to the remote graphical processing unit for execution.

10. The non-transitory computer-readable media of claim 8 , further comprising:

one or more instructions to receive, via the technical computing environment, a kernel to be executed by the remote graphical processing unit;

one or more instructions to receive, via the technical computing environment, host-side code for allocating memory of the remote graphical processing unit;

one or more instructions to transform the kernel and the host-side code into another kernel executable by the remote graphical processing unit; and

one or more instructions to provide the other kernel to the remote graphical processing unit for execution.

11. The non-transitory computer-readable media of claim 8 , further comprising:

one or more instructions to determine a number of remote graphical processing units available for executing the transformed program command;

one or more instructions to select a remote graphical processing unit from the number of remote graphical processing units; and

one or more instructions to provide the transformed program command to the selected remote graphical processing unit for execution.

12. The non-transitory computer-readable media of claim 8 , where the program command includes a gpuArray command.

13. A device comprising:

a memory to store a plurality of instructions; and

a processor to execute the plurality of instructions in the memory to:

initiate a technical computing environment,

receive, via the technical computing environment, a program command that permits the technical computing environment to access a graphical processing unit (GPU) that is remote to the device,

the program command permitting the technical computing environment to transfer data to the remote graphical processing unit,

transform, via the technical computing environment, the program command into a program command that is executable by the remote graphical processing unit,

determine data associated with execution of the transformed program command by the remote graphical processing unit,

provide the data and the transformed program command to the remote graphical processing unit for execution,

receive, from the remote graphical processing unit, one or more results associated with execution of the transformed program command by the remote graphical processing unit, and

utilize the one or more results via the technical computing environment.

14. The device of claim 13 , where the program command further includes:

one or more algorithms to be executed by the remote graphical processing unit.

15. The device of claim 13 , where the program command further includes:

technical computing environment code to be executed by the remote graphical processing unit.

16. The device of claim 13 , where the program command further includes:

a technical computing environment file to be executed by the remote graphical processing unit.

17. The device of claim 13 , where the processor is further to execute instructions in the memory to:

create, via the technical computing environment and based on the program command, a kernel to be executed by the remote graphical processing unit,

receive, via the technical computing environment, host-side code for allocating memory of the remote graphical processing unit,

transform the kernel and the host-side code into another kernel executable by the remote graphical processing unit, and

provide the other kernel to the remote graphical processing unit for execution.

18. The device of claim 13 , where the processor is further to execute instructions in the memory to:

determine a number of remote graphical processing units available for executing the transformed program command,

select a remote graphical processing unit from the number of remote graphical processing units, and

provide the transformed program command to the selected remote graphical processing unit for execution.

19. The device of claim 13 , where the remote graphical processing unit is provided in another device separate from the device.

20. The device of claim 13 , where the program command includes a gpuArray command.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2010
From: STEFANSSON, HALLDOR N.; ELLIS, EDRIC; MARTIN, JOCELYN LUKE
To: THE MATHWORKS, INC.
Reel/Frame 025209/0792 →
Continuity (10)
Continuation In Part 12254618 · Oct 20, 2008
Continuation In Part 12254572 · Oct 20, 2008
Continuation In Part 11748938 · May 15, 2007
Continuation In Part 11748947 · May 15, 2007
Continuation In Part 11748938
Continuation In Part 11748947
Continuation In Part 11706805 · Feb 14, 2007
Continuation In Part 11706805
Provisional Application 61322131 · Apr 8, 2010
Related Publication 20110035736A1 · Feb 10, 2011