diff --git a/dev/custom_xclbin/index.html b/dev/custom_xclbin/index.html index 88d00c7..3c093fe 100644 --- a/dev/custom_xclbin/index.html +++ b/dev/custom_xclbin/index.html @@ -11,4 +11,4 @@ "clocks" => Any[Object{Nothing, String}("port_name"=>"ap_clk", "id"=>"0", "requested_frequency"=>0, "achieved_frequency"=>0)] "reset_port_names" => Any["ap_rst_n"] "slr_resources" => Any[Object{Nothing, String}("slr_name"=>"SLR0", "resource_utilization"=>Any[Object{Nothing, String}("resource_name"=>"LUT", "used"=>"1328", "available"=>"439680"), Object{Nothing, String}("resource_name"=>"LUTAsLogic", "used"=>"975", "availabl… - + diff --git a/dev/examples/high_level_basics/index.html b/dev/examples/high_level_basics/index.html index d63f2bb..2713ec3 100644 --- a/dev/examples/high_level_basics/index.html +++ b/dev/examples/high_level_basics/index.html @@ -20,4 +20,4 @@ Bitstream.dummyKernel!(a, UInt8(1),1) # validate the execution results -@assert all(a .== UInt8(1)) +@assert all(a .== UInt8(1)) diff --git a/dev/examples/stream/index.html b/dev/examples/stream/index.html index 45dd6d2..5a77d2e 100644 --- a/dev/examples/stream/index.html +++ b/dev/examples/stream/index.html @@ -17,4 +17,4 @@ [ Info: Done device process sw_emu_device done Kernel Name: k1, CU Number: 0, Status: Shutdown -Kernel Name: k2, CU Number: 1, Status: Shutdown

Note, that the measured bandwidth is relatively low because software emulation is used. To execute the stream benchmark on hardware, the path to the bitstream has to be changed accordingly in the @prepare_bitstream line.

+Kernel Name: k2, CU Number: 1, Status: Shutdown

Note, that the measured bandwidth is relatively low because software emulation is used. To execute the stream benchmark on hardware, the path to the bitstream has to be changed accordingly in the @prepare_bitstream line.

diff --git a/dev/examples/xrt_api/index.html b/dev/examples/xrt_api/index.html index cea3c13..729558d 100644 --- a/dev/examples/xrt_api/index.html +++ b/dev/examples/xrt_api/index.html @@ -25,4 +25,4 @@ wait(r) # Read back and validate output data sync!(xa, XRT.XCL_BO_SYNC_BO_FROM_DEVICE) -@assert all(xa .== UInt8(1)) +@assert all(xa .== UInt8(1)) diff --git a/dev/high_level/index.html b/dev/high_level/index.html index 1a9ab60..73ac4f2 100644 --- a/dev/high_level/index.html +++ b/dev/high_level/index.html @@ -1,2 +1,2 @@ -High Level Execution · XRT.jl

High Level Abstractions for Kernel Executions

Based on our Custom XCLBIN Parser, XRT.jl provides a macro to generate ready-to-use functions for the execution of individual kernels in the bitstream: @prepare_bitstream.

This function will create a new module with a function for each kernel in the provided bitstream. Kernels can then be executed by calling the function with the required input parameters. If the input parameter is an AbstractArray, it will be automatically copied to the FPGA memory before execution and back after execution. All generated function come with a keyworkd parameter device which can be used to specify the device the kernel should be executed on. If the bitstream is not already programmed on the device, this will be done automatically before executing the kernel.

See Example: Auto-generated Kernel Interfaces and Example: STREAM Benchmark for examples, how this approach can be used to execute compute kernels on the FPGA.

+High Level Execution · XRT.jl

High Level Abstractions for Kernel Executions

Based on our Custom XCLBIN Parser, XRT.jl provides a macro to generate ready-to-use functions for the execution of individual kernels in the bitstream: @prepare_bitstream.

This function will create a new module with a function for each kernel in the provided bitstream. Kernels can then be executed by calling the function with the required input parameters. If the input parameter is an AbstractArray, it will be automatically copied to the FPGA memory before execution and back after execution. All generated function come with a keyworkd parameter device which can be used to specify the device the kernel should be executed on. If the bitstream is not already programmed on the device, this will be done automatically before executing the kernel.

See Example: Auto-generated Kernel Interfaces and Example: STREAM Benchmark for examples, how this approach can be used to execute compute kernels on the FPGA.

diff --git a/dev/index.html b/dev/index.html index 19dfcaf..cc167a5 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Installation · XRT.jl

XRT.jl

Installation

Note: Only Linux and Windows x86_64 systems are supported!

The package is not registered. You can use

] add https://github.com/pc2/XRT.jl

to add the package to your Julia environment.

The following dependencies have to be installed to use XRT.jl:

  • Xilinx Vitis for features like software or hardware emulation

XRT is contained in the xrt_jll package in version 2.17. If a native installation of XRT should be used, set the XILINX_XRT environment variable to the path of the local installation. XRT with the native C++ interface +2.14 are supported.

Known Issues

  • The build in XRT implementation is unable to find a device even when Vitis HLS is installed and the XCL_EMULATION_MODE variable is set.
+Installation · XRT.jl

XRT.jl

Installation

Note: Only Linux and Windows x86_64 systems are supported!

The package is not registered. You can use

] add https://github.com/pc2/XRT.jl

to add the package to your Julia environment.

The following dependencies have to be installed to use XRT.jl:

  • Xilinx Vitis for features like software or hardware emulation

XRT is contained in the xrt_jll package in version 2.17. If a native installation of XRT should be used, set the XILINX_XRT environment variable to the path of the local installation. XRT with the native C++ interface +2.14 are supported.

Known Issues

  • The build in XRT implementation is unable to find a device even when Vitis HLS is installed and the XCL_EMULATION_MODE variable is set.
diff --git a/dev/refs/api/index.html b/dev/refs/api/index.html index 56aaafe..7582769 100644 --- a/dev/refs/api/index.html +++ b/dev/refs/api/index.html @@ -1,9 +1,9 @@ API · XRT.jl

API

Index

References

XRT.XRTWrap.KernelMethod
Kernel(device, uuid, name)
-

Create a new kernel instance using a device, bitstream uuid, and kernel name.

source
XRT.XRTWrap.RunMethod
Run(kernel, arg1, args; autostart)
-

Execute a kernel with the given arguments. To automatically start the execution, set autostart to true. Otherwise, the execution has to be explicitly started by calling start(run::Run)

source
Base.waitMethod
wait(run)
-

Wait for a given Run object to complete execution. The method will return as soon as the execution is completed.

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
-

Set the argument for a kernel at the given index. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
-

Set the argument for a kernel at the given index to a given BOArray. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
-

Set the argument for a kernel at the given index to a given BO. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.BOArrayMethod
BOArray(device, userdata, mem; flags)
-

Array data type usable with XRT. Can be used like BO but supports indexing and automatic alignment of host buffers.

source
XRT.BOArrayMethod

Array data type usable with XRT. Can be used like BO but supports indexing and automatic alignment of host buffers.

source
XRT.get_kernel_infoMethod
get_kernel_info(xclbin_path::String)

Get information about contained kernels, instances, arguments and their register offsets...

source
XRT.get_section_stringMethod
get_section_string(xclbin_path::String, type::SectionType)

Get the specified raw section from the bitstream file xclbin_path.

source
XRT.get_system_infoMethod
get_system_info(xclbin_path::String)

Get information about resource utilization and connectivity

source
XRT.@prepare_bitstreamMacro

Parse a bitstream and generate functions for the included kernels. The functions will automatically copy all relevant buffers to the FPGA memory, and execute the Kernel.

It is recommended to generate the kernel functions in a separate module like this:

Julia module DummyBitstream using XRT @prepare_bitstream("my_bitstream.xclbin") end

Afterwards, you find the functions for each kernel in the module. To execute the kernel on a specific device, use the device keyword parameter:

Julia DummyBitstream.kernel_name!(args...; device=XRT.Device(0))

source
+

Create a new kernel instance using a device, bitstream uuid, and kernel name.

source
XRT.XRTWrap.RunMethod
Run(kernel, arg1, args; autostart)
+

Execute a kernel with the given arguments. To automatically start the execution, set autostart to true. Otherwise, the execution has to be explicitly started by calling start(run::Run)

source
Base.waitMethod
wait(run)
+

Wait for a given Run object to complete execution. The method will return as soon as the execution is completed.

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
+

Set the argument for a kernel at the given index. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
+

Set the argument for a kernel at the given index to a given BOArray. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.XRTWrap.set_arg!Method
set_arg!(run, index, val)
+

Set the argument for a kernel at the given index to a given BO. Note, that this is a thin wrapper to the C++ API, so the indices start at 0!

source
XRT.BOArrayMethod
BOArray(device, userdata, mem; flags)
+

Array data type usable with XRT. Can be used like BO but supports indexing and automatic alignment of host buffers.

source
XRT.BOArrayMethod

Array data type usable with XRT. Can be used like BO but supports indexing and automatic alignment of host buffers.

source
XRT.get_kernel_infoMethod
get_kernel_info(xclbin_path::String)

Get information about contained kernels, instances, arguments and their register offsets...

source
XRT.get_section_stringMethod
get_section_string(xclbin_path::String, type::SectionType)

Get the specified raw section from the bitstream file xclbin_path.

source
XRT.get_system_infoMethod
get_system_info(xclbin_path::String)

Get information about resource utilization and connectivity

source
XRT.@prepare_bitstreamMacro

Parse a bitstream and generate functions for the included kernels. The functions will automatically copy all relevant buffers to the FPGA memory, and execute the Kernel.

It is recommended to generate the kernel functions in a separate module like this:

Julia module DummyBitstream using XRT @prepare_bitstream("my_bitstream.xclbin") end

Afterwards, you find the functions for each kernel in the module. To execute the kernel on a specific device, use the device keyword parameter:

Julia DummyBitstream.kernel_name!(args...; device=XRT.Device(0))

source
diff --git a/dev/search/index.html b/dev/search/index.html index c5a703d..37ae765 100644 --- a/dev/search/index.html +++ b/dev/search/index.html @@ -1,2 +1,2 @@ -Search · XRT.jl

Loading search...

    +Search · XRT.jl

    Loading search...