05-09-2018 12:55 PM
Hello Everyone,
I want to increase the performance of a custom software using FPGA based accelerator.
In order to begin with, I would like to determine how much speed up I can achieve using the FPGA. I have learned the software and I know which algorithms of the software can be deployed to the FPGA.
Is there an efficient way where I can determine the execution time of the different algorithms of the software so that I can come up with a good estimate of the performance improvement I can achieve?
I have used the Break() command before but I don't know how accurate it is?
Thank you
05-10-2018 11:07 PM
SDAccel requires the ap_opencl license feature. So the sdx tool will only allow sdsoc if you don't have the other licenses.
You can try Nimbix or AWS to use the dev environment and run on available platforms.
The way you estimated in HLS is about the right way to understand how long it takes to execute. But HLS only is aware of what exists in the C code created, and you would have to estimate based on the larger FPGA design how much time would be spent on communication overhead. SDAccel takes those into consideration and if you look at the UG:
Going to page 55 and looking at "Figure 23: Application Timeline Window"
Would give you an idea of what SDAccel would provide you in terms of run time including host to FPGA overhead. And the ability to drill into where time might be wasted in a design to allow further speedup.
05-10-2018 12:01 AM
05-10-2018 06:23 PM
Hi vivek,
Have you used SDAccel's HW_Emulation? It should give you a CPU cycles estimation of how long it took to run, and you can compare it to your standard C implementation. Which should let you estimate the performance speedup.
If you are looking for something specific from the profiling tools in SDAccel or the emulation, let us know, and we can hopefully provide how to do it.
Regards,
Evan
05-10-2018 10:08 PM
@evant and @florentw - Great guys.
Is there a free version or trial version for SDAccel tool?
I downloaded the SDx (which is a combination of SDSoC as well as SDAccel) but wasn't able to create a project in SDAccel.
I wrote some of the software algorithms in C++ and I was able to find the execution time. I converted the same C++ code into RTL using Vivado hls and used the same test vectors and found the latency. In that way, I determined the execution time = latency * clock cycles. But I didn't take into account the communication overhead between the FPGA and the host computer. Is this a fair way to estimate the speed up? Is there a way where I can make an educative guess in the communication overhead without using SDAccel or other tool?
Thank you.
05-10-2018 11:07 PM
SDAccel requires the ap_opencl license feature. So the sdx tool will only allow sdsoc if you don't have the other licenses.
You can try Nimbix or AWS to use the dev environment and run on available platforms.
The way you estimated in HLS is about the right way to understand how long it takes to execute. But HLS only is aware of what exists in the C code created, and you would have to estimate based on the larger FPGA design how much time would be spent on communication overhead. SDAccel takes those into consideration and if you look at the UG:
Going to page 55 and looking at "Figure 23: Application Timeline Window"
Would give you an idea of what SDAccel would provide you in terms of run time including host to FPGA overhead. And the ability to drill into where time might be wasted in a design to allow further speedup.
05-11-2018 08:27 AM
How do I purchase or get the ap_opencl license?