1) To build an OpenCL application one would have to point out the CL sources folder and link against libOpenCL.so. Trouble is (as far as i see it) every platform can see another platform yet of course i'm only linking the library (libOpenCL.so) once. How can one platform detect another platform ? What are the necessary files that need to be present ? Linking against libOpenCL.so makes a difference right ? (i mean i can't use libOpenCL.so from nvidia to compile and execute on an amd gpu)
2) Given a set of devices (Amd CPU, Intel CPU, Amd GPU, Nvidia GPU, Amd APU) what would be the best way to handle execution on one specific unit ? For instance today i compiled against the Nvidia SDK an application, listed the platforms (2 in my case Nvidia & Amd) and ran on the Amd CPU.
3) If libOpenCL.so do make a difference how would i manage multiple instances of them ? Amd for instance places them in $PATH_SDK/lib/... whlist Nvidia places them directly in /lib and /lib64 of the system as symbolic links. Wouldn't this also be a threat if i would link a libOpenCL.so from Amd ? ( i mean wouldn't the system look in /lib first and find the nvidia one ? )
4) Cross platform communication through simple C/C++ should be possible right ? (for instance a device from Nvidia communicating with a device from Amd through RAM)
Thank you in advance