IP Library Granted Patent US 9,794,343
Granted Patent B2
US 9,794,343 · App. 14/809,644 · Granted Oct 17, 2017

Reconfigurable cloud computing

Inventors: Stephen M. Hebert (Houston, TX); Robert L. Sherrard (McKinney, TX); Leonardo E. Reiter (Allen, TX)
Assignee: Nimbix, Inc.
H04L67/1097G06F9/5038G06F9/5072H04L67/10H04L67/20
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,794,343
App. No.
14/809,644
Granted
Oct 17, 2017
Kind
B2
Abstract

A method, system, and computer-readable storage medium for using a reconfigurable computing system are disclosed. For example, one method involves identifying a first application to be executed, configuring a computing node in a first configuration, and executing, according to a first workflow, at least a portion of a first application and at least another portion of the first application. The method also involves identifying a second application to be executed, configuring the computing node in a second configuration, and executing, according to a second workflow, at least a portion of a second application and at least another portion of the second application.

Claims (201)

1. A method comprising:

identifying a first application to be executed;

configuring a computing node in a first configuration, wherein

the computing node comprises a plurality of computing resources,

the configuring the computing node in the first configuration comprises

configuring a first computing resource of the plurality of computing resources to execute at least a portion of the first application according to a first workflow, and

configuring a second computing resource of the plurality of computing resources to execute at least another portion of the first application according to the first workflow,

the first computing resource is of a first type of a plurality of types of computing resources, and

the second computing resource is of a second type of the plurality of types of computing resources;

executing, according to the first workflow, the at least the portion of the first application and the at least the another portion of the first application;

identifying a second application to be executed;

configuring the computing node in a second configuration, wherein

the configuring the computing node in the second configuration comprises

configuring the first computing resource to execute at least a portion of the second application according to a second workflow, and

configuring the second computing resource to execute at least another portion of the second application according to the second workflow; and

executing, according to the second workflow, the at least the portion of the second application and the at least the another portion of the second application.

2. The method of claim 1 , wherein

the configuring the computing node in the first configuration further comprises

selecting a first computing resource of the plurality of computing resources, and

selecting a second computing resource of the plurality of computing resources, and

the configuring the computing node in the second configuration further comprises

selecting the first computing resource, and

selecting the second computing resource.

3. The method of claim 2 , wherein

the first workflow and the second workflow are different portions of a single workflow.

4. The method of claim 2 , wherein

receiving the at least the portion of the first workflow at the computing node, wherein

the at least the portion of the first workflow comprises

a first plurality of scripts;

accessing a first configuration file, wherein

the first plurality of scripts references the first configuration file, and

the first computing resource is configured in the first configuration based on configuration information in the first configuration file;

receiving the at least the portion of the second workflow at the computing node, wherein

the at least the portion of the first workflow comprises

a second plurality of scripts; and

accessing a second configuration file, wherein

the second plurality of scripts references the second configuration file, and

the second computing resource is configured in the second configuration based on configuration information in the second configuration file.

5. The method of claim 4 , further comprising:

identifying a first job script, wherein

the first plurality of scripts comprises the first job script, and

the first job script identifies the at least the portion of the first application, the first computing resource, and a first configuration script;

identifying a second job script, wherein

the second plurality of scripts comprises the second job script, and

the second job script identifies the at least the portion of the second application, the first computing resource, and a second configuration script; and

accessing at least one control script, wherein

the at least one control script indicates that the first job script is to be executed before the second job script,

the at least one control script indicates that the first computing resource is to be configured in the first configuration prior to executing the at least the portion of the first application, and

the at least one control script indicates that the first computing resource is to be configured in the second configuration prior to executing the at least the portion of the second application.

6. The method of claim 1 , wherein

the first computing resource comprises a reconfigurable logic device, and

the first computing resource is selected to execute the at least the portion of the first application by

determining that one or more attributes of the reconfigurable logic device satisfy a resource requirement for the at least the portion of the first application, and

determining that the reconfigurable logic device can be configured to execute the at least the portion of the first application according to the first workflow, prior to executing the at least the portion of the first application.

7. The method of claim 6 , wherein

the reconfigurable logic device is a field-programmable gate array (FPGA), and

the configuring the first computing resource according to the first workflow comprises

changing a bit stream of the FPGA.

8. The method of claim 1 , wherein

the first computing resource comprises a graphics processing unit (GPU), and

the first computing resource is selected to execute the at least the portion of the first application by

determining that one or more attributes of the GPU satisfy a resource requirement for the at least the portion of the first application, and

determining that the GPU can be configured to execute the at least the portion of the first application according to the first workflow, prior to executing the at least the portion of the first application.

9. The method of claim 8 , wherein

the configuring the first computing resource according to the first workflow comprises

reconfiguring one or more registers of the GPU and/or changing an operation mode of the GPU.

10. The method of claim 1 , wherein

the plurality of types of computing resources comprises at least one of

a field-programmable gate array (FPGA),

a graphics processing unit (GPU),

a digital signal processor (DSP), or

a central processing unit (CPU).

11. The method of claim 1 , wherein

the at least the portion of the first application and the at least another portion of the first application are different portions of the first application.

12. A system comprising:

a computing node, wherein

the computing node comprises

a plurality of computing resources,

a computer-readable storage medium, coupled to the plurality of computing resources,

a configurator, stored in the computer-readable storage medium, and

a resource manager, stored in the computer-readable storage medium,

the configurator is configured to

identify a first application to be executed,

configure the computing node in a first configuration by virtue of being configured to

configure a first computing resource of the plurality of computing resources to execute at least a portion of the first application according to a first workflow, and

configure a second computing resource of the plurality of computing resources to execute at least another portion of the first application according to the first workflow,

the first computing resource is of a first type of a plurality of types of computing resources, and

the second computing resource is of a second type of the plurality of types of computing resources,

the resource manager is configured to

cause execution, according to the first workflow, of the at least the portion of the first application and the at least the another portion of the first application,

the configurator is further configured to

identify a second application to be executed, and

configure the computing node in a second configuration, wherein

the computing node is configured in the second configuration by virtue of being configured to

 configure the first computing resource to execute at least a portion of the second application according to a second workflow,

 configure the second computing resource to execute at least another portion of the second application according to the second workflow, and

the resource manager is further configured to

cause execution of the at least the portion of the second application and the at least the another portion of the second application.

13. The system of claim 12 , wherein

the configurator is further configured to

configure the computing node in the first configuration by virtue of being further configured to

select the first computing resource, and

select the second computing resource, and

configure the computing node in the second configuration by virtue of being further configured to

select the first computing resource, and

select the second computing resource.

14. The system of claim 13 , wherein the computing node is configured to:

receive the at least the portion of the first workflow at the computing node, wherein

the at least the portion of the first workflow comprises

a first plurality of scripts;

access a first configuration file, wherein

the first plurality of scripts references the first configuration file, and

the first computing resource is configured in the first configuration based on configuration information in the first configuration file;

receive the at least the portion of the second workflow at the computing node, wherein

the at least the portion of the second workflow comprises

a second plurality of scripts;

access a second configuration file, wherein

the second plurality of scripts references the second configuration file, and

the second computing resource is configured in the second configuration based on configuration information in the second configuration file;

identify a first job script, wherein

the first plurality of scripts comprises the first job script, and

the first job script identifies the at least the portion of the first application, the first computing resource, and a first configuration script;

identify a second job script, wherein

the second plurality of scripts comprises the second job script, and

the second job script identifies at least one portion of the second application, the first computing resource, and a second configuration script; and

access at least one control script, wherein

the at least one control script indicates that the first job script is to be executed before the second job script,

the at least one control script indicates that the first computing resource is to be configured in the first configuration prior to executing the at least one portion of the first application, and

the at least one control script indicates that the first computing resource is to be configured in the second configuration prior to executing the at least one portion of the second application.

15. The system of claim 12 , wherein

the first computing resource comprises a reconfigurable logic device, and

the first computing resource is selected to execute the at least the portion of the first application by

determining that one or more attributes of the reconfigurable logic device satisfy a resource requirement for the at least the portion of the first application, and

determining that the reconfigurable logic device can be configured to execute the at least the portion of the first application according to the first workflow, prior to executing the at least the portion of the first application.

16. The system of claim 15 , wherein

the reconfigurable logic device is a field-programmable gate array (FPGA), and

the configurator is configured to configure the first computing resource according to the first workflow by virtue of being configured to

change a bit stream of the FPGA.

17. The system of claim 12 , wherein

the first computing resource comprises a graphics processing units (GPU),

the GPU is selected to execute at least one portion of the first application by

determining that attributes of the GPU satisfy a resource requirement for the at least one portion of the first application, and

determining that the GPU can be configured in the first configuration prior to executing the at least one portion of the first application, and

the configurator is configured to configure the GPU in the second configuration by reconfiguring one or more registers of the GPU and/or changing an operation mode of the GPU.

18. A computer program product comprising:

a plurality of instructions, that, when executed by a hardware processor of a computer system, are configured to cause the hardware processor to identify a first application to be executed,

configure a computing node in a first configuration, wherein

the computing node comprises a plurality of computing resources,

the instructions configured to cause the hardware processor to configure the computing node in the first configuration comprise a plurality of instructions configured to

configure a first computing resource of the plurality of computing resources to execute at least a portion of the first application according to a first workflow, and

configure a second computing resource of the plurality of computing resources to execute at least another portion of the first application according to the first workflow,

the first computing resource is of a first type of a plurality of types of computing resources, and

the second computing resource is of a second type of the plurality of types of computing resources,

execute, according to the first workflow, the at least the portion of the first application and the at least the another portion of the first application,

identify a second application to be executed,

configure the computing node in a second configuration by virtue of being further configured to

configure the first computing resource to execute at least a portion of the second application according to a second workflow, and

configure the second computing resource to execute at least another portion of the second application according to the second workflow

execute, according to the second workflow, the at least the portion of the second application and the at least the another portion of the second application; and

a non-transitory computer-readable storage medium, wherein the instructions are encoded in the non-transitory computer-readable storage medium.

19. The computer program product of claim 18 , wherein

the plurality of instructions are further configured to configure the computing node in the first configuration are further configured to

select a first computing resource of the plurality of computing resources, and

select a second computing resource of the plurality of computing resources, and

the plurality of instructions are further configured to configure the computing node in the second configuration are further configured to

select the first computing resource, and

select the second computing resource.

20. The computer program product of claim 19 ,

wherein the plurality of instructions are further configured to:

receive the at least the portion of the first workflow at the computing node, wherein

the at least the portion of the first workflow comprises

a first plurality of scripts;

access a first configuration file, wherein

the first plurality of scripts references the first configuration file, and

the first computing resource is configured in the first configuration based on configuration information in the first configuration file;

receive the at least the portion of the second workflow at the computing node, wherein

the at least the portion of the first workflow comprises

a second plurality of scripts;

access a second configuration file, wherein

the second plurality of scripts references the second configuration file, and

the second computing resource is configured in the second configuration based on configuration information in the second configuration file;

identify a first job script, wherein

the first plurality of scripts comprises the first job script, and

the first job script identifies at least one portion of the first application, the first computing resource, and a first configuration script;

identify a second job script, wherein

the second plurality of scripts comprises the second job script, and

the second job script identifies the at least one portion of the second application, the first computing resource, and a second configuration script; and

access at least one control script, wherein

the at least one control script indicates that the first job script is to be executed before the second job script,

the at least one control script indicates that the first computing resource is to be configured in the first configuration prior to executing the at least one portion of the first application, and

the at least one control script indicates that the first computing resource is to be configured in the second configuration prior to executing the at least one portion of the second application.

21. The computer program product of claim 18 , wherein

the first computing resource comprises a reconfigurable logic device, and

the first computing resource is selected to execute the at least the portion of the first application by

determining that one or more attributes of the reconfigurable logic device satisfy a resource requirement for the at least the portion of the first application, and

determining that the reconfigurable logic device can be configured to execute the at least the portion of the first application according to the first workflow, prior to executing the at least the portion of the first application.

22. The computer program product of claim 18 , wherein

the first computing resource comprises a graphics processing unit (GPU), and

the first computing resource is selected to execute the at least the portion of the first application by

determining that one or more attributes of the GPU satisfy a resource requirement for the at least the portion of the first application, and

determining that the GPU can be configured to execute the at least the portion of the first application according to the first workflow, prior to executing the at least the portion of the first application.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2022
From: NIMBIX, INC.
To: AGARIK SAS
Reel/Frame 060681/0171 →
RELEASE OF SECURITY INTEREST Recorded Jul 30, 2021
From: COMERICA BANK
To: NIMBIX, INC.
Reel/Frame 057040/0865 →
CHANGE OF ADDRESS Recorded Apr 16, 2019
From: NIMBIX, INC.
To: NIMBIX, INC.
Reel/Frame 048918/0378 →
SECURITY INTEREST Recorded Mar 29, 2018
From: NIMBIX, INC.
To: COMERICA BANK
Reel/Frame 045381/0976 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2015
From: REITER, LEONARDO E.
To: NIMBIX, INC.
Reel/Frame 036782/0774 →
Continuity (3)
Continuation 14282407 · May 20, 2014
Continuation 13449003 · Apr 17, 2012
Related Publication 20160028822A1 · Jan 28, 2016