Is it possible to use ocl with 2 of more different gpus under linux? I am interested in mixing two Rad_vii, with two 280x and
even one or two 7950.
Yes, you can mix multiple GPUs provided the installed driver is compatible (including OpenCL support) with all those GPUs. Otherwise, OpenCL runtime will not recognize the unsupported GPUs and they won't be available as valid OpenCL device.
It seems that the tahiti and rad_vii use different drivers. So it is a no in this case.
Is ocl code running on the tahiti going to run on the rad_vii straight off or it needs mods and optimizations?
The code is expected to run fine on Radeon VII, however the performance might be different.
Generally newer generation cards provide more advanced feature sets to benefit the applications in certain scenarios. Usually compilers handle most of the architecture specific optimizations to take advantage of these new feature sets. However, there are some cases where a programmer may need to manually tune the code to use a new feature or to help/hint the compiler to apply better optimization.
So, here my suggestion would be:
First run the code on Radeon VII without any modification. Observe the performance. If the performance needs to be improved, then only go for code tuning and modifications. Before applying any architecture specific optimization, please try to use common optimizations techniques recommended by the AMD OpenCL optimization guide.