Xilinx U280
The Xilinx xrt driver allows to measure power using a standalone command line tool. The specific tool invocation and output format depends on the xrt version (module xilinx/xrt and configuration constraint xilinx_u280_xrt...
).
We recommend to run kernels for at least ~1s and automatically perform repeated invocations to the command line tool concurrently in order to get reasonably accurate results. Further effects of increased power consumption due to thermal effects can be observed after multiple minutes of load on the cards, but are comparably minor.
provides power measurements via a hwmon interface. It can be queried by simply reading from a corresponding file, which returns the current power consumption in µW:
Code Block |
---|
# Location: /sys/bus/pci/devices/$BDF/hwmon/hwmon*/power1_input,
# where BDF is one of 0000:a1:00.1, 0000:81:00.1 or 0000:01:00.1
[tester@n2fpga01 ~]$ cat /sys/bus/pci/devices/0000\:01\:00.1/hwmon/hwmon7/power1_input
58360411 |
For a more convenient interface, we provide a dedicated tool named xilinx_power
:
Code Block |
---|
[tester@n2fpga01 ~]$ xilinx_power
0000:a1:00.1: 41.35W
0000:81:00.1: 39.22W
0000:01:00.1: 58.28W
[tester@n2fpga01 ~]$ xilinx_power -c2
0000:01:00.1: 58.22W
[tester@n2fpga01 ~]$ xilinx_power -c 0000:01:00.1
0000:01:00.1: 57.95W |
Run with --help
to get a list of command line arguments. -c
allows specifying a specific card by either index or BDF.
You can also use the XRT API to query electrical information, including the current power consumption, as JSON. The following example uses Boost to parse that JSON data:
Code Block |
---|
#include <boost/property_tree/json_parser.hpp>
#include <xrt/xrt_device.h>
[...]
// Assuming `device` being an instance of or a reference to a valid xrt::device
auto json = std::stringstream{};
json << device.get_info<xrt::info::device::electrical>();
// parse JSON into a property tree
auto props = boost::property_tree::ptree{};
boost::property_tree::read_json(json, props);
auto watts = props.get<float>("power_consumption_watts", 0.0f);
std::cout << watts << "W\n"; |
Lastly, you can also use xbutil to query those electrical information. Usage example and sample output for xrt 2.12, after selecting querying the first card. During this example, the card is idle and configured with the validation bitstream. Total card power in line 17.:
Code Block |
---|
[tester@n2fpga02 ~]$ ml fpga [tester@n2fpga02 ~]$ ml xilinx/xrt/2.12 [tester@n2fpga02 ~]$ xbutil examine ... Devices present [0000:a1:00.1] : xilinx_u280_xdma_201920_3 user(inst=129) [0000:81:00.1] : xilinx_u280_xdma_201920_3 user(inst=130) [0000:01:00.1] : xilinx_u280_xdma_201920_3 user(inst=128) [tester@n2fpga02 ~]$ xbutil examine -d 0000:a1:00.1 --report electrical ----------------------------------------------- 1/1 [0000:a1:00.1] : xilinx_u280_xdma_201920_3 ----------------------------------------------- Electrical Max Power : 225 Watts Power : 33.793573 Watts Power Warning : false Power Rails : Voltage Current 12 Volts Auxillary : 12.199 V, 1.363 A 12 Volts PCI Express : 12.192 V, 1.408 A 3.3 Volts PCI Express : 3.286 V 3.3 Volts Auxillary : 3.292 V Internal FPGA Vcc : 0.851 V, 5.076 A DDR Vpp Bottom : 2.500 V DDR Vpp Top : 2.500 V 5.5 Volts System : 5.488 V Vcc 1.2 Volts Top : 1.212 V Vcc 1.2 Volts Bottom : 1.204 V 1.8 Volts Top : 1.808 V 0.9 Volts Vcc : 0.901 V 12 Volts SW : 12.235 V Mgt Vtt : 1.203 V |
Genenal notes:
We recommend to run kernels for at least ~1s and automatically perform repeated invocations to the command line tool concurrently in order to get reasonably accurate results. Further effects of increased power consumption due to thermal effects can be observed after multiple minutes of load on the cards, but are comparably minor.
Power consumption values are only updated once per second. Querying with a higher frequency therefore does not provide any additional data.
Bittware 520N
The Bittware driver allows to measure power using a standalone command line tool that queries the board power via the i2c bus. It's available on all FPGA nodes with Bittware 520N cards (irrespective of the constraint).
...