cancel
Showing results for 
Search instead for 
Did you mean: 

OpenCL

youngerliu
Journeyman III

parameter passing for pipes in nested loop(deviceEnqueue)

Im trying to implementation G-DBSCN in Qcom mobile platform(845/865), when in BFS part i just refrenced the sample code in DeviceEnqueueBFS in OpenCL SDK 3.0. 
At first: at Qcom mobile GPU platform(845/865):  i encountered "Segmentation fault" when starting "deviceEnqueueBFSKernel", btw: there's no compile error for the whole program. and i found out that this is caused by "null pointer dereference"
pastedImage_1.png
If i remove the 2  "pipe" Args from the deviceEnqueueDummyKernel(), then the program will not crash. So possibly i think something wrong when transfer the pipe args.
Then: i tried on intel CPU platform. and the kernel complier directly indicate the passing of parameter is incompatible.
pastedImage_2.png
As i had no AMD GPU at hand, i could not do the checking on AMD platform. I want to confirm that pipes in nested loop implementation is hw/vendor dependent? 
pastedImage_3.png
pastedImage_2.png
pastedImage_4.png

0 Likes
3 Replies
dipak
Big Boss

Thank you for the above query. I'll take a look at the sample code and get back to you shortly. 

By the way, the pre-built sample binary ("DeviceEnqueueBFS.exe" inside "\opencl\bin" folder) seems working fine on my AMD laptop.

Thanks.

0 Likes
dipak
Big Boss

After reading the spec, it looks like compiler can enforce the pipe access qualifier when a pipe is passed to a child kernel. So, the above error is not unexpected. In fact, our new compiler (clang based LC compiler) also reports a similar error for this sample. The HSAIL compiler tool-chain, which I used earlier to test the sample binary, seems to permit it.

Thanks.

yeh, agree with you that this issue is compiler related. And i will have a look around at "HSAIL compiler tool-chain". Thanks for you time man.

0 Likes