it is not possible create context from devices which are from different platforms. but you can look at this. http://www.alphaworks.ibm.com/tech/ocr
you can use #ifdef cl_amd_printf or any another extension. refer to section 9.1 of OpenCL specification.
you can specify image read_only or write_only. currently read_write is not possible.
implicit conversion is possible only with scalar types. refer to section 6.2.1
Thanks, nou, that helps. I'm still not sure what the use is of passing a platform when creating a context if there's only one choice and the runtime system can find it out itself. But for multiple platforms, I'll create multiple contexts and/or look at IBM's 'ocr'.
As for read_write, I was not aware it is specific to image parameters and I'm still not sure, as I've also used it for __global parameters. There I noticed that read_write is not accepted, so I removed it. You can have 2 image paras, one ro, the other wo, and pass the same image, but that'll likely be undefined behavior.