Developer Guide


Mapping Source Code Instructions to Hardware

For fixed architectures such as CPUs and GPUs, the source code is compiled by the compiler into a set of instructions that run on functional units that have a fixed functionality. For these fixed architectures to be useful in a broad range of applications, some of their available functional units are not useful to every program. Unused functional units mean that your program does not fully occupy the fixed architecture hardware.
FPGAs are not subject to these restrictions of fixed functional units. On an FPGA, you can synthesize a specialized hardware datapath that can be fully occupied for an arbitrary set of instructions, which means you can be more efficient with the silicon area of your chip.
By implementing your algorithm in hardware, you can fill your chip with custom hardware that is always (or almost always) working on your problem instead of having idle functional units.
Intel® oneAPI
maps statements from the source code to individual specialized hardware operations, as shown in the example in the following image:
Mapping Source Code Instructions to Hardware
Mapping a Source Code Instruction to a Hardware Operation
In general, each instruction maps to its own unique instance of a hardware operation. However, a single statement may map to more than one hardware operation, or multiple statements may combine into a single hardware operation when the compiler finds that it can generate hardware that is more efficient.
The latency of hardware operations is dependent on the complexity of the operation and the target f
The compiler then takes these hardware operations and connects them into a graph based on their dependencies. When operations are independent, the compiler automatically infers parallelism by executing those operations simultaneously in time.
The following figure illustrates a dependency graph created for the hardware datapath:
Dependency Graph
Creating a Dependency Graph for the Hardware Datapath
The dependency graph illustrates how the instruction is mapped to hardware operations and how the hardware operations are connected based on their dependencies. The loads in this example instruction are independent of each other and can therefore run simultaneously.

Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at