Forum Discussion

JLAMB3's avatar
JLAMB3
Icon for New Contributor rankNew Contributor
7 years ago
Solved

Power/Energy Measurements with Arria 10 and OpenCL SDK

I am trying to get an accurate power measurement to estimate energy consumption for an application using an Arria 10 device and Nallatech board (p510t_sch_ax115) and the Intel OpenCL SDK (Version 17.1.0 Build 240)

For example, with the hello_world example I've tried the following:

$user: aoc device/hello_world.cl -o bin/hello_world.aocx --board p510t_sch_ax115
$user: cd bin/hello_world
$user: quartus_pow top.qpf

Here's an example of the error I'm encountering:

Info: *******************************************************************
Info: Running Quartus Prime Power Analyzer
Info: Command: quartus_pow top.qpf
Info: Using INI file ~/hello_world/bin/hello_world/quartus.ini
Info (16677): Loading final database
Info (16734): Loading "final" snapshot for partition "root_partition".
Info (16734): Loading "final" snapshot for partition "root_partition_2cedade0".
Info (16734): Loading "final" snapshot for partition "kernel"
Warning (17912): Partition "freeze_wrapper_inst|kernel_system_inst" contains an output port, "kernel_mem1_address[0]~OPORT", that connects to partition and has no routing. It is possible that the destination logic was swept away.  Consider modifying your design by inserting Wire LUTs so that every partition output has a routed destination.
Warning (17912): .... several more like the previous
Info (16678): Successfully loaded final database: elapsed time is 00:00:17
Error: Quartus Prime Power Analyzer was unsuccessful. 0 errors, 14 warnings
    Error: Peak virtual memory: 1247 megabytes
    Error: Processing ended: Tue Sep  4 12:22:02 2018
    Error: Elapsed time: 00:00:22
    Error: Total CPU time (on all processors): 00:00:22

Does anyone have any suggestions or advice? Is running quartus_pow top.qpf appropriate for the Arria 10 device, or are there other approaches I can try? I read about this approach from a different post on this forum. Let me know if any more information is needed.

Thank you,

Jacob

  • You probably came across my advice on the forum. However, I only had success using quartus_pow on the placed and routed OpenCL design on Stratix V and could not use it on Arria 10 since it failed with some error similar to your case. Good news is, most Arria 10 boards have on-board power sensors which can be used to get accurate power readings. Since you are using a Nallatech board, they provide an MMD layer function which allows you to read the sensor in a C application. There is an example of how to use the function in "Nallatech OpenCL A10 BSP Reference Guide, Section 7.5 - MMD Layer Functions". I have written a header based on this function which can be used alongside with OpenCL application. You can find the header here:

    https://github.com/zohourih/rodinia_fpga/blob/master/common/power_fpga.h

    You can check the benchmarks inside of the repository to see how the header can be used. Please note that the header is made for the Nallatech 385A board but it should also work with the 510T board if the board name is corrected in the header. Furthermore, the header uses the old "altera"-based naming scheme used up until Quartus v16.1.2. I think the function names have been changed in the newer versions.

1 Reply

  • HRZ's avatar
    HRZ
    Icon for Frequent Contributor rankFrequent Contributor

    You probably came across my advice on the forum. However, I only had success using quartus_pow on the placed and routed OpenCL design on Stratix V and could not use it on Arria 10 since it failed with some error similar to your case. Good news is, most Arria 10 boards have on-board power sensors which can be used to get accurate power readings. Since you are using a Nallatech board, they provide an MMD layer function which allows you to read the sensor in a C application. There is an example of how to use the function in "Nallatech OpenCL A10 BSP Reference Guide, Section 7.5 - MMD Layer Functions". I have written a header based on this function which can be used alongside with OpenCL application. You can find the header here:

    https://github.com/zohourih/rodinia_fpga/blob/master/common/power_fpga.h

    You can check the benchmarks inside of the repository to see how the header can be used. Please note that the header is made for the Nallatech 385A board but it should also work with the 510T board if the board name is corrected in the header. Furthermore, the header uses the old "altera"-based naming scheme used up until Quartus v16.1.2. I think the function names have been changed in the newer versions.