I have linux-based server with NVIDIA GPUs and x86 CPUs on which I have installed both NVIDIA and ATI OpenCL implementations. I have thus two OpenCL platforms on that machine (ATI and NVIDIA). Now, what I noticed is that I can use ATI OpenCL API to even use NVIDIA Platform and vice-versa. Maybe, I am missing some point as I thought it should not be possible.
For example, when I am compiling with ATI, I am giving something like:
g++ -c -I/opt/amdstream/include map.cpp -o map.o
g++ -o map -L/opt/amdstream/lib/x86_64 -lOpenCL map.o
and I run it with NVIDIA platform("NVIDIA Corporation"). What is the argument here, as it means that the API are interchangable from platform's perspective?