FPGA timing violation with oneAPI for BittWare IA-840F
Hi,
I have a timing violation issue given in the attached log.
I manage to compile the vector-add oneAPI example for FPGA. The quartus logs show the compile succeeded apart from the timing violation.
The 10 ps timing violation is very small and is not expected to affect runtime performance. However, the resultant binary (vector-add-buffers.fpga) gets deleted when the error is found. I tried changing the seed as suggested but it has no effect.
I managed to get make to ignore the error and not delete the file by running with
make -i fpga
(which ignores errors), but running the file with the FPGA seems to fail with this error:
Running on device: ofs_ia840fr0_usm : Intel OFS Platform (ofs_ef00000)
Vector size: 10000
An exception is caught for vector add.
terminate called after throwing an instance of 'sycl::_V1::runtime_error'
what(): Native API failed. Native API returns: -42 (PI_ERROR_INVALID_BINARY) -42 (PI_ERROR_INVALID_BINARY)
Aborted (core dumped)
I don't know if the '-42' is related to the "42" error code reported by icpx at the build stage or if it's a different issue. Any help would be appreciated.
Yours,
Karol.
Hi Hareesh,
I think I have solved my problem. I misunderstood the meaning on page 15 of the technical document for the BSP.
ofs_ia840fr0 and ofs_ia840fr0_usm are different devices and only one can be used at a time.
When I both commands as listed in the document, only the last one to be executed matters.
aocl initialize acl0 ofs_ia840fr0
aocl initialize acl0 ofs_ia840fr0_usmThe vector-add program uses buffers rather than USM by default so, the report -42 (CL_INVALID_BINARY) implies that the wrong device has been initialised.
If I only run `aocl initialize acl0 ofs_ia840fr0`, then I can run the program.The first run of the program crashes (and this is listed as a known problem), but successive runs are successful:
testfpga@fpgadev01$ aocl initialize acl0 ofs_ia840fr0
aocl initialize: Running initialize from /opt/intel/oneapi/board/ia840f/linux64/libexec
Configuring locked memory setting
Configuring udev rules for DFL FPGA device permission
Configuring system with 2048 2M hugepages
Finished setup_permissions.sh script. All configuration settings are persistent.
Program succeed.testfpga@fpgadev01$ ./vector-add-buffers.fpga
Running on device: ofs_ia840fr0 : Intel OFS Platform (ofs_ef00000)
Vector size: 10000
Segmentation fault (core dumped)testfpga@fpgadev01$ ./vector-add-buffers.fpga
Running on device: ofs_ia840fr0 : Intel OFS Platform (ofs_ef00000)
Vector size: 10000
[0]: 0 + 0 = 0
[1]: 1 + 1 = 2
[2]: 2 + 2 = 4
...
[9999]: 9999 + 9999 = 19998
Vector add successfully completed on device.I hope this is helpful.
Karol.