What is the difference between POCL(Portable Computing Language) and OpenCL, and what are the advantages POCL? http://pocl.sourceforge.net/
Does POCL have a C-like language, which is different from OpenCL, a different compiler (Clang> = 3.2), different backend (llvm), better portability, or something else?
And when we need to use the (hard-linking) OCL, and when need to use the ICD? http://streamcomputing.eu/blog/2013-07-08/installing-and-using-pocl/
Pocl is like any other opencl platform. It provides a opencl cpu device on x86/arm and many more systems. It is almost compliant to opencl 1.2 standards, except it doesn't have stuffs like cl_gl sharing etc. It uses clang/llvm to utilize all cpu cores and vector units in the cpu.
opencl is a spec and pocl implements this spec to give you a platform with cpu devices
coming to ICD, you link against ICD when you have more than one opencl platforms installed. Compile this icd code from khronos http://www.khronos.org/registry/cl/specs/opencl-icd-1.2.11.0.tgz and you will have an icd loader which can load any opencl platform. Hardlinking to a platform ".so" is possible say libpocl.so, but other installed platforms will not be visible in clGetPlatformIDs call. So ICD is better