Patents by Inventor Lance G. Thompson

Lance G. Thompson has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20190384578
    Abstract: An accelerator image generator includes a synthesis block and a simulation block. The accelerator image generator receives a hardware description language representation for a desired function, inputs the hardware description language representation for the desired function to the synthesis block and to the simulation block so the synthesis block and simulation block work in parallel, monitors progress of the synthesis block and the simulation block, and when a defined threshold is reached in the synthesis block, halts the simulation block while the synthesis block continues until the synthesis block outputs an accelerator image for deployment to a programmable device. When an error is detected in the synthesis block following halting of the simulation block, the simulation block may be resumed, and the defined threshold may be adjusted. The accelerator image can be deployed to a programmable device to provide a hardware accelerator corresponding to the accelerator image.
    Type: Application
    Filed: June 13, 2018
    Publication date: December 19, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190384654
    Abstract: An accelerator deployment tool determines resource requirements for one or more accelerator images, determines feature sets of a plurality of programmable devices, compares the resource requirements to the feature sets, determines whether the feature sets satisfy the resource requirements, and when the feature sets satisfy the resource requirements, selects one or more of the plurality of programmable devices that has a feature set that satisfies the resource requirements, and deploys the accelerator image(s) to the selected programmable device(s) to provide one or more accelerators corresponding to the accelerator image(s). A call can then be made to the one or more accelerators. The accelerator deployment tool thus automatically selects one or more programmable devices based on their feature sets and can automatically deploy one or more accelerator images to the one or more programmable devices.
    Type: Application
    Filed: June 13, 2018
    Publication date: December 19, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190384737
    Abstract: An on-chip accelerator manager manages multiple accelerators in a programmable device. In one specific implementation, the multiple accelerators are identical accelerators. The accelerator manager and the multiple accelerators are deployed to the programmable device. One or more calls to a software library in a virtual function table are replaced with one or more calls to the on-chip accelerator manager. The on-chip accelerator manager receives an accelerator call, and in response, allocates the accelerator call to one of the multiple accelerators, performs load balancing to the multiple accelerators, and performs failover when one of the accelerators fails by allocating work that was allocated to the failed accelerator to a different accelerator. The on-chip accelerator can push work to the multiple accelerators in a first mode of operation, and the multiple accelerators can pull work from the on-chip accelerator manager in a second mode of operation.
    Type: Application
    Filed: June 13, 2018
    Publication date: December 19, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Patent number: 10496586
    Abstract: An accelerator manager manages multiple accelerators in multiple programmable devices. An accelerator cast out policy specifies criteria for casting out accelerators in the programmable devices. The accelerator manager monitors usage of the accelerators by one or more computer programs, and generates a historical log from the monitored usage. When the conditions in the historical log satisfy criteria in the accelerator cast out policy for casting out an accelerator, the accelerator manager casts out the accelerator, and updates a virtual function table to replace calls to the accelerator that was cast out with calls to the software library.
    Type: Grant
    Filed: April 27, 2018
    Date of Patent: December 3, 2019
    Assignee: International Business Machines Corporation
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190361746
    Abstract: Hardware accelerators are scored according to various metrics and attributes that characterize the accelerators. Examples of suitable accelerator scoring criteria include whether the software simulation of the accelerator is complete, whether hardware testing is complete, whether the accelerator is currently deployed, the number of times the accelerator has been deployed to a private cloud, the number of times the accelerator has been deployed to a public cloud, ratings by users, number of failures, number of executions, space utilization and efficiency, code metrics, power consumption, speed, and image characteristics, including space used, resources used, use of dedicated functions on a programmable device, etc. These accelerator scoring criteria are tracked for each accelerator in an accelerator scoring catalog.
    Type: Application
    Filed: May 25, 2018
    Publication date: November 28, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190347152
    Abstract: An accelerator manager monitors hardware accelerators that are called by one or more computer programs. A virtual function table includes multiple entries, where each entry correlates a call from a computer program to a corresponding call to either a software library or a hardware accelerator. A call by the computer program to a function in the virtual function table results in the call being routed to either the software library or to a hardware accelerator depending on the contents of the corresponding entry in the virtual function table. The accelerator manager, in response to a detected failure in an accelerator, replaces one or more calls in the virtual function table to the failed accelerator with calls to the software library. The accelerator manager can then retry the call that caused the accelerator to fail, which will then be executed by the software library.
    Type: Application
    Filed: May 14, 2018
    Publication date: November 14, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190332517
    Abstract: A cloud-based accelerator manager manages cloud-based hardware accelerators. The accelerator manager monitors computer programs running in the cloud and generates a trace that indicates which accelerators were used and when. The trace may be for a single computer program or may be for multiple computer programs. Thus, the trace can be program-specific, showing all accesses to accelerators by a single program, or may be accelerator-specific, showing all accesses to each accelerator by all computer programs. The cloud-based accelerator manager detects a failure in one of the computer programs executing in the cloud. The cloud-based accelerator manager provides the trace to a user, who can then analyze the trace to determine whether the failure was due to an accelerator. The cloud-based accelerator manager thus helps detect when cloud-based accelerators are the reason for failures for computer programs running in a cloud.
    Type: Application
    Filed: April 27, 2018
    Publication date: October 31, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190332163
    Abstract: A thermal manager manages programmable devices that include one or more accelerators. The thermal manager may be part of an accelerator manager that manages multiple accelerators in multiple programmable devices. The thermal manager monitors the temperature of a programmable device and casts out one or more accelerators when the temperature of the programmable device exceeds a threshold. Where there are multiple accelerator images that have different thermal effects for a given function the thermal manager may replace the cast out accelerator with another accelerator image for the same function that uses less power.
    Type: Application
    Filed: April 27, 2018
    Publication date: October 31, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190332564
    Abstract: An accelerator manager manages multiple accelerators in multiple programmable devices. An accelerator cast out policy specifies criteria for casting out accelerators in the programmable devices. The accelerator manager monitors usage of the accelerators by one or more computer programs, and generates a historical log from the monitored usage. When the conditions in the historical log satisfy criteria in the accelerator cast out policy for casting out an accelerator, the accelerator manager casts out the accelerator, and updates a virtual function table to replace calls to the accelerator that was cast out with calls to the software library.
    Type: Application
    Filed: April 27, 2018
    Publication date: October 31, 2019
    Inventors: Paul E. Schardt, Jim C. Chen, Lance G. Thompson, James E. Carey
  • Publication number: 20190187966
    Abstract: A computer program includes calls to a software library. A virtual function table is built that includes the calls to the software library in the computer program. A programmable device includes one or more currently-implemented accelerators. The available accelerators that are currently-implemented are determined. The calls in the software library that correspond to a currently-implemented accelerator are determined. One or more calls to the software library in the virtual function table are replaced with one or more corresponding calls to a corresponding currently-implemented accelerator. When a call in the software library could be implemented in a new accelerator, an accelerator image for the new accelerator is dynamically generated. The accelerator image is then deployed to create the new accelerator. One or more calls to the software library in the virtual function table are replaced with one or more corresponding calls to the new accelerator.
    Type: Application
    Filed: December 20, 2017
    Publication date: June 20, 2019
    Inventors: James E. Carey, Jim C. Chen, Paul E. Schardt, Lance G. Thompson
  • Publication number: 20190187979
    Abstract: A code portion in a computer program is identified that will be improved from being deployed to a hardware accelerator to enhance the run-time performance of the computer program. An accelerator catalog includes a listing of currently-implemented accelerators, along with available resources on one or more programmable devices. When the catalog does not include the needed accelerator, the available resources are determined from the catalog, and when the available resources are insufficient to deploy the needed accelerator, one or more of the existing accelerators is cast out of the programmable device according to specified ranking criteria to make room for the needed accelerator. The needed accelerator image is dynamically generated and deployed, the identified code portion of the computer program is replaced with a call to the deployed hardware accelerator, the newly-generated accelerator is stored in the catalog, and the available resources data in the catalog is updated.
    Type: Application
    Filed: December 20, 2017
    Publication date: June 20, 2019
    Inventors: James E. Carey, Jim C. Chen, Paul E. Schardt, Lance G. Thompson
  • Publication number: 20190163447
    Abstract: A computer program is monitored as it executes. A code portion in the computer program is identified that will be improved from being deployed to a hardware accelerator. In a first implementation, a hardware accelerator is dynamically generated, and the identified code portion is replaced with a call to the hardware accelerator. In a second implementation, a catalog of previously-generated accelerators is maintained, and when a previously-generated accelerator can be used, a hardware accelerator is dynamically generated in a programmable device using the previously-generated accelerator image specified in the catalog, and the identified code portion of the computer program is replaced with a call to the hardware accelerator. When the catalog of previously-generated accelerators does not include a needed accelerator, the needed accelerator image is dynamically generated and deployed, and the identified code portion of the computer program is replaced with a call to the hardware accelerator.
    Type: Application
    Filed: November 30, 2017
    Publication date: May 30, 2019
    Inventors: James E. Carey, Jim C. Chen, Paul E. Schardt, Lance G. Thompson