IP Library Granted Patent US 12,493,454
Granted Patent B2
US 12,493,454 · App. 17/692,413 · Granted Dec 9, 2025

Incremental just-in-time (JIT) performance refinement for programmable logic device offload

Inventors: Michael Kinsner (Halifax, CA); John Freeman (Waterloo, CA); Ben J. Ashbaugh (Folsom, CA); Rajesh Poornachandran (Portland, OR)
Assignee: Altera Corporation
G06F8/41G06F9/541
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 12,493,454
App. No.
17/692,413
Granted
Dec 9, 2025
Kind
B2
Abstract

An apparatus to facilitate incremental just-in-time (JIT) performance refinement for programmable logic device offload is disclosed. The apparatus includes a processor to: initiate multiple just-in-time (JIT) compilation iterations of an application; program a first architecture of a first compilation of the multiple JIT compilation iterations to a programmable logic device and execute the application on the first architecture, wherein the first compilation comprises a faster compilation time amongst the multiple JIT compilation iterations; identify a hotspot; determine that a second compilation of the multiple JIT compilation iterations is complete, wherein the second compilation comprises a slower compilation time than the first compilation; and program a second architecture of the second compilation of the multiple JIT compilation iterations to the programmable logic device and execute the application on the second architecture.

Claims (42)

1 . An apparatus comprising:

a processor to:

initiate multiple just-in-time (JIT) compilation iterations of an application, wherein a data parallel programming compiler to generate the multiple JIT compilation iterations of the application;

program a first architecture of a first compilation of the multiple JIT compilation iterations to a programmable logic device;

execute the application on the first architecture, wherein the first compilation comprises a faster compilation time amongst the multiple JIT compilation iterations;

identify a hotspot corresponding to a runtime metric of the application meeting a threshold condition;

determine that a second compilation of the multiple JIT compilation iterations is complete,

wherein the second compilation comprises a slower compilation time than the first compilation;

program a second architecture of the second compilation of the multiple JIT compilation iterations to the programmable logic device; and

execute the application on the second architecture.

2 . The apparatus of claim 1 , wherein a data parallel programming runtime is to perform the initiating, the programming the first architecture, the identifying, the determining, and the programming the second architecture.

3 . The apparatus of claim 2 , wherein the data parallel programming runtime is further to orchestrate, based on a task graph of the application, a re-programming operation to reconfigure a region of the programmable logic device.

4 . The apparatus of claim 3 , wherein the data parallel programming runtime is to generate the task graph of the application using compiled code of the application, the task graph to represent at least one of a relationship or dependency of the code.

5 . The apparatus of claim 1 , wherein the multiple JIT compilation iterations comprise at least one of a soft instruction set architecture (ISA) processor compilation, an ISA hardened processor compilation, an overlay compilation, a soft coarse grained reconfigurable array (CGRA) compilation, or a full custom datapath compilation.

6 . The apparatus of claim 1 , wherein the runtime metric of the application meeting the threshold condition comprises at least one of a runtime latency of the application exceeding a determined latency threshold or a runtime throughout of the application exceeding a determined throughput threshold.

7 . The apparatus of claim 1 , wherein the processor is further to terminate one or more of the multiple JIT compilation iterations for the application in response to determining that one of the multiple JIT compilation iterations is to remain programmed on the programable logic device.

8 . The apparatus of claim 1 , wherein the programmable logic device comprises at least one a graphic processing unit (GPU), a central processing unit (CPU), or a programmable integrated circuit (IC).

9 . The apparatus of claim 8 , wherein the programmable IC comprises at least one of a field programmable gate array (FPGA), a programmable array logic (PAL), a programmable logic array (PLA), a field programmable logic array (FPLA), an electrically programmable logic device (EPLD), an electrically erasable programmable logic device (EEPLD), a logic cell array (LCA), or a complex programmable logic devices (CPLD).

10 . A method comprising:

initiating, by a processor, multiple just-in-time (JIT) compilation iterations of an application, wherein a data parallel programming compiler to generate the multiple JIT compilation iterations of the application;

programming, by the processor, a first architecture of a first compilation of the multiple JIT compilation iterations to a programmable logic device;

executing the application on the first architecture, wherein the first compilation comprises a faster compilation time amongst the multiple JIT compilation iterations;

identifying a hotspot corresponding to a runtime metric of the application meeting a threshold condition;

determining that a second compilation of the multiple JIT compilation iterations is complete, wherein the second compilation comprises a slower compilation time than the first compilation;

programming, by the processor, a second architecture of the second compilation of the multiple JIT compilation iterations to the programmable logic device; and

executing the application on the second architecture.

11 . The method of claim 10 , wherein the multiple JIT compilation iterations comprise at least one of a soft instruction set architecture (ISA) processor compilation, an ISA hardened processor compilation, an overlay compilation, a soft coarse grained reconfigurable array (CGRA) compilation, or a full custom datapath compilation.

12 . The method of claim 11 , wherein a data parallel programming runtime of the processor is further to orchestrate, based on a task graph of the application, a re-programming operation to reconfigure a region of the programmable logic device, and wherein the data parallel programming runtime is to generate the task graph of the application using compiled code of the application, the task graph to represent at least one of a relationship or dependency of the code.

13 . The method of claim 10 , wherein the runtime metric of the application meeting the threshold condition comprises at least one of a runtime latency of the application exceeding a determined latency threshold or a runtime throughout of the application exceeding a determined throughput threshold.

14 . The method of claim 10 , wherein the processor is further to terminate one or more of the multiple JIT compilation iterations for the application in response to determining that one of the multiple JIT compilation iterations is to remain programmed on the programmable logic device.

15 . A non-transitory machine-readable storage medium comprising instructions that, when executed, cause at least one processor to at least:

initiate multiple just-in-time (JIT) compilation iterations of an application, wherein a data parallel programming compiler to generate the multiple JIT compilation iterations of the application;

program a first architecture of a first compilation of the multiple JIT compilation iterations to a programmable logic device;

execute the application on the first architecture, wherein the first compilation comprises a faster compilation time amongst the multiple JIT compilation iterations;

identify a hotspot corresponding to a runtime metric of the application meeting a threshold condition;

determine that a second compilation of the multiple JIT compilation iterations is complete, wherein the second compilation comprises a slower compilation time than the first compilation;

program a second architecture of the second compilation of the multiple JIT compilation iterations to the programmable logic device; and

execute the application on the second architecture.

16 . The non-transitory machine readable storage medium of claim 15 , wherein the multiple JIT compilation iterations comprise at least one of a soft instruction set architecture (ISA) processor compilation, an ISA hardened processor compilation, an overlay compilation, a soft coarse grained reconfigurable array (CGRA) compilation, or a full custom datapath compilation.

17 . The non-transitory machine readable storage medium of claim 16 , wherein a data parallel programming runtime of the at least one processor is further to orchestrate, based on a task graph of the application, a re-programming operation to reconfigure a region of the programmable logic device, and wherein the data parallel programming runtime is to generate the task graph of the application using compiled code of the application, the task graph to represent relationships and dependencies of the code.

18 . The non-transitory machine readable storage medium of claim 15 , wherein the runtime metric of the application meeting the threshold condition comprises at least one of a runtime latency of the application exceeding a determined latency threshold or a runtime throughout of the application exceeding a determined throughput threshold.

19 . The non-transitory machine readable storage medium of claim 15 , wherein the processor is further to terminate one or more of the multiple JIT compilation iterations for the application in response to determining that one of the multiple JIT compilation iterations is to remain programmed on the programmable logic device.

Assignments (3)
SECURITY INTEREST Recorded Sep 12, 2025
From: ALTERA CORPORATION
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 073431/0309 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2025
From: INTEL CORPORATION
To: ALTERA CORPORATION
Reel/Frame 072704/0307 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2022
From: KINSNER, MICHAEL; FREEMAN, JOHN; ASHBAUGH, BEN J.; POORNACHANDRAN, RAJESH
To: INTEL CORPORATION
Reel/Frame 059796/0023 →