Miscellaneous

Although the XRT.jl package offers many simplifying functions and types, all types and functions provided by the native C++ API are available in the XRT.XRTWrap submodule.

Configuration file

XRT allows the user to set several parameters to control logging, execution flow and debugging. Therefore, an xrt.ini file will be detected, just as the native C++ API does. In addition, the interface offers a function with which these parameters can be set at runtime, as long as they have not yet been used during the execution of a kernel. The XRTConfiguration module provides a list of available parameter keys, which can be given into the XRT.set! function:

julia> XRT.set!(XRT.XRTConfiguration.RUNTIME_LOG, "foo.log")

More about this in section Configuration File xrt.ini.

Enum types

XRTs native C++ API uses some enum types as flags for functions and structs, such as device information, synchronization directions, etc. To maintain these enums and keep them organized, each is housed in its own submodule. The values of an enum are always of type XRT.[submodule].Type, where [submodule] is one of:

  • DeviceInformationParameters
  • BOFlags
  • ErtCmdState
  • BOSyncDirection
  • CVStatus
  • LogLevel

And especially for Xclbin type relevant:

  • ComputeUnitAccessMode,
  • TargetType
  • ControlType
  • MemoryType
  • IPType

As an example:

julia> typeof(XRT.BOSyncDirection.FROM_DEVICE)
XRT.BOSyncDirection.Type

julia> XRT.BOSyncDirection.FROM_DEVICE
FROM_DEVICE