4.2. Running single node applications

4.2.1. Running on QDMA-based FPGAs

See Alveo hardware setup to setup the hardware requisites for Alveo devices.

Loading the bitstream

Bitstreams can be loaded via JTAG through a USB connection with the FPGA board.

Run the following commands in Vivado interactive mode:

vivado -nolog -nojournal -mode tcl
open_hw_manager
connect_hw_server
open_hw_target
foreach {dev} [get_hw_devices] {
  current_hw_device ${dev}
  set_property PROGRAM.FILE <BITSTREAM_PATH> ${dev}
  program_hw_devices ${dev}
}
exit

Set up qdma queues

For DMA transfers to be performed between system main memory and the FPGA memory, qdma queues has to be set up by the user prior to any execution.

In this case dma-ctl tool is used. For instance, in order to create and start a memory mapped qdma queue with index 1 run:

dma-ctl qdmab3000 q add idx 1 mode mm dir bi
dma-ctl qdmab3000 q start idx 1 mode mm dir bi

OmpSs-2@FPGA runtime system expects an mm queue at index 1, which can be created with the commands listed above.

In the same fashion, these queues can also be removed:

dma-ctl qdmab3000 q stop idx 1 mode mm dir bi
dma-ctl qdmab3000 q del idx 1 mode mm dir bi

For more information, see

dma-ctl --help

4.2.2. Running on System-on-Chips

Loading bistreams

The FPGA bitstream needs to be loaded before the application can run. Xilinx provides the fpgautil utility in order to simplify bitstream loading.

fpgautil -b bitstream.bin