I am working on an Intel Mini PC NUC6i55YK with a Sky Lake chip set and I'm getting an intermittent hang in a very complicated piece of kernel code. What is the best way to determine where the code is hanging? When it doesn't hang the output is fine. This code works well on an Nvidia card in another Ububtu 14.04.3 LTS system.
Ubuntu 14.04.4 LTS, Intel_sdk_for_opencl_2016_184.108.40.2069_x64, opencl_runtime_16.1_x64_ubuntu_220.127.116.1102
Thanks in advance
I don't know if this is your problem but I just ported a bunch of optimized CUDA kernels to OpenCL and the only tricky issue that I found was that the CUDA __syncthreads() primitive has a more relaxed behavior than an OpenCL barrier(LOCAL) on Intel.
The unexplained hanging in my kernels was fixed once I made sure that all local work items in the work group participated in the OpenCL barrier(LOCAL)/work_group_barrier(LOCAL). Once I understood the problem, I was able to improve the kernel structure even more by using OpenCL 2.0 non-uniform work groups.
Thanks for the reply. I did see your post earlier and unfortunately this is not the issue. My code is also a port from CUDA however the hangs are in areas where clFinish() is being called on the work queue to wait for all threads to complete before moving on to the next process. It also appears to happen much more frequently with higher levels of data to process, multiple workgroups.