Application Acceleration With FPGAs
Programmable Acceleration Cards (PACs), DCP, FPGA AI Suite, Software Stack, and Reference Designs
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
504 Discussions

Getting "HAL Kern Error: Read/Write failed from addr x, read y expected z" when running multithread OpenCL application on CycloneV SoC

TSchw11
Beginner
3,543 Views

To ensure, that I didn't just write an incorrect program, I used the standard multithread example: https://www.intel.com/content/www/us/en/programmable/support/support-resources/design-examples/design-software/opencl/multithreaded-vector-operation.html

 

As there is no arm32 version of that example, I checked the difference between exm_opencl_hello_world_arm32_linux and exm_opencl_hello_world_x64_linux from https://www.intel.com/content/www/us/en/programmable/support/support-resources/design-examples/design-software/opencl/hello-world.html.

 

As the only difference was the Makefile, I applied the same changes to the Makefile of exm_opencl_multithread_vector_operation_x64_linux.

 

diff exm_opencl_hello_world_x64_linux/hello_world/Makefile exm_opencl_hello_world_arm32_linux/hello_world/Makefile 43,44c43,44 < AOCL_COMPILE_CONFIG := $(shell aocl compile-config ) < AOCL_LINK_CONFIG := $(shell aocl link-config ) --- > AOCL_COMPILE_CONFIG := $(shell aocl compile-config --arm) > AOCL_LINK_CONFIG := $(shell aocl link-config --arm) 53,54c53,54 < # Compiler < CXX := g++ --- > # Compiler. ARM cross-compiler. > CXX := arm-linux-gnueabihf-g++

Using the changed Makefile, I compiled the multithread example:

cd exm_opencl_multithread_vector_operation_x64_linux/multithread_vector_operation/ PATH="/opt/intelFPGA/19.1/embedded/ds-5/sw/gcc/bin/:$INTELFPGAOCLSDKROOT/bin:$PATH" \ AOCL_BOARD_PACKAGE_ROOT="$INTELFPGAOCLSDKROOT/board/de10_standard" \ VERBOSE=1 make PATH="/opt/intelFPGA/19.1/embedded/ds-5/sw/gcc/bin/:$INTELFPGAOCLSDKROOT/bin:$PATH" \ AOCL_BOARD_PACKAGE_ROOT="$INTELFPGAOCLSDKROOT/board/de10_standard" \ aoc -board=de10_standard_sharedonly -v device/vector_op.cl -o bin/vector_op.aocx

Running the program sometimes succeeds, but often results in a crash:

root@socfpga:~# ./host Initializing OpenCL Platform: Intel(R) FPGA SDK for OpenCL(TM) Using 1 device(s) de10_standard_sharedonly : Cyclone V SoC Development Kit Using AOCX: vector_op.aocx Reprogramming device [0] with handle 1 Thread1 created successfully Thread2 created successfully Instantiating a new problem with args: N=100000 kernel_name=vector_mult Instantiating a new problem with args: N=100000 kernel_name=vector_add Launching for device 0 (100000 elements) Launching for device 0 (100000 elements) HAL Kern Error: Read failed from addr 1080, read -1234493200 expected 4 HAL Kern Error: Read failed from addr 20, read -1234493200 expected 4   Time: 20.714 ms Kernel time (device 0): 1.098 ms HAL Kern Error: Write failed to addr 1080 with value 0, wrote -1234493200 expected 4 HAL Kern Error: Read failed from addr 20, read -1234493200 expected 4 Segmentation fault

 

Is multithreadding not supported on arm32?

0 Kudos
7 Replies
AnilErinch_A_Intel
3,337 Views

Hi ,

Can you please post the results of "lsmod" command in the device terminal after the issue has happened.

 

0 Kudos
TSchw11
Beginner
3,337 Views

Hi,

​thank you for your response.

The output of lsmod seems to always be:

root@socfpga:~# lsmod Module Size Used by aclsoc_drv 8916 0 root@socfpga:~#

While reproducing the error, I observed one additional erroneous behavior:

Sometimes, the application just doesn't finish and instead hangs. I've attached the output of several program executions. If the program didn't finish, I aborted it with control-C, the application did still react to that. In the attached log these cases can be identified by the "^C" at the end of the program output.

0 Kudos
AnilErinch_A_Intel
3,337 Views

Hi are you using a custom made board for running the openCL.

In that case please use the following api in the code aocl_mmd_get_info

and let us know the results.

In particular we would be interested in results with following

AOCL_MMD_BOARD_NAME

AOCL_MMD_CONCURRENT_READS Number of parallel reads( A value of 1 indicates serial reads.)

AOCL_MMD_CONCURRENT_WRITES Number of parallel writes (A value of 1 indicates serial writes).

AOCL_MMD_CONCURRENT_READS_OR_WRITE S Total number of concurrent read and write operations .

Please refer here

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/opencl-sdk/ug_aocl_custom_platform_toolkit.pdf

0 Kudos
jackgreen
Novice
3,231 Views

Hi I am having a similar problem on the de10 nano board. After checking the corresponding source code, I found out that the MMD library is of version 14.1 and it does not have AOCL_MMD_CONCURRENT_READS and AOCL_MMD_CONCURRENT_WRITES defined. So I guess it might be the problem? And how shall we update this library? Is there any off-the-shelf code I could take advantage of?

Thanks!

0 Kudos
jackgreen
Novice
3,231 Views

Hi I am having a similar problem on the de10 nano board. After checking the corresponding source code, I found out that the MMD library is of version 14.1 and it does not have AOCL_MMD_CONCURRENT_READS and AOCL_MMD_CONCURRENT_WRITES defined. So I guess it might be the problem? And how shall we update this library? Is there any off-the-shelf code I could take 

0 Kudos
TSchw11
Beginner
3,337 Views

Hi,

sorry I can't currently get that Information as the University is currently closed (because of corona) and I'm at home without FPGA.

 

Using a chroot environment I could however find out that AOCL_MMD_VERSION is only 14.1 so this is likely to be the problem, I think.

0 Kudos
AnilErinch_A_Intel
3,337 Views

Hi ,

Please let us know the results , after you get a chance to update the MMD .

Stay Safe

Regards

Anil

0 Kudos
Reply