Power and Energy Measurements of FPGAs

Xilinx U280

The Xilinx xrt driver 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:

# 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/hwmon*/power1_input 58360411

For a more convenient interface, we provide a dedicated tool named xilinx_power which is avilable on all Xilinx FPGA nodes:

[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:

#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, querying the first card. Power consumption is shown in line 17:

 

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).

  • 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.

Usage example and sample output:

Run with --help to get a list of command line arguments. For example, with -c the 520N card of interest can be selected.