It might be acceptable for some subset of "embarrassingly parallel" problems. For other problems, writing OpenCL code that even approaches hardware potential is very hard. We might need other intermediary languages than it.
Currently LLVM is a better fit than OpenCL in general.
If you want the last 50% of performance, hand coding seems to be unfortunately the only way. Very little code needs to be that fast, though.