I've looked at some comparisons betwen C++ AMP and OpenCL, and OpenCL is what I want to develop for, for many reasons. Mainly it being cross-platform and not as hardware specific as AMP or CUDA. It also well written code seems to perform better than it does on AMP, while CUDA is a non-starter being Nvidia only.
Anyway, my question would be how to properly develop/release OpenCL applications. I noticed there are Intel, AMD, ARM, and Nvidia SDKs. For now, I'm mostly concerned with developing for AMD and Intel APUs, I'm not much interested at all in GPUs. Mostly because the type of programs I would write would require very good shrared memory performance, and APUs have it even if they don't have as fast or as many cores. I believe the APU will be the true successor to the math co-processor that we have had since the days of the 386, what we call an FPU today.
Anyway, my concern is, what is the difference between the AMD and Intel OpenCL SDKs? Will the same OpenCL code (minus specific optimizations) run on both SDKs? I'm planning to compile my OpenCL applications as DLLs seperately, and call them from a VC++ applicatoin after profiling the target's system. The idea would be to use a binary produced by the AMD SDK for an AMD CPU/APU and an the Intel SDK for an Intel CPU/APU. The two "projects" would share much of the same source-code, while having differences in their headers / kernel classes. I'm just wanting to confirm that this approach would be reasonable or if it has been documented.
I would also be very much interested in any books/literature on this topic. If anyone has anything else I should be aware of please, let me know. Thank you.