I used to participate pretty heavily in the old Byte Magazine online forums. One particular thread I was actively involved in was Reconfigurable Computing. The premise we followed was that of Field Programmable Gate Arrays becoming so powerful they could be used as CPUs on a desktop computer. Most people felt this was doable, but inefficient, more likely a FPGA as a reconfigurable co-processor might be better. Enter OpenCL, the way of parsing out tasks to the right tool. In some ways I see a strong correlation to the old Reconfigurable CPU discussion where you used the best tool for the job. In FPGA worlds, you would reconfigure cores to match a particular workload on demand. So if you were playing a Game, you might make the CPU into a GPU until you were done with the game. If you were recording audio, you would reconfigure the FPGA into a DSP, and so on.
OpenCL seems much more lightweight and less risky on the implementation side because it just takes advantage of what’s there. Not anything like the ideas we had of earth shaking changes in architecture (using an FPGA instead of a CPU). Reading what OpenCL might allow in a diverse multi processor desktop computer, it makes me want to strike up the argument for co-processors at least. In an OpenCL world you could easily have an FPGA available as a co-processor and a nice robust nVidia GPU chugging away without discriminating architecturally against either. OpenCL would help parse out the task. Mix in some FPGA level support in the OS as a re-configurable processor, and Voila, you get a DSP or whatever else you might want at any point in the clock cycle.
Given Intel’s drive towards multi-core CPUs, nVidia’s parallel processors, and somewhat less impressive gains on the FPGA front, you could have an AI right on your desktop. Now someone had better get started on those OpenCL drivers and hooks for the kernel! I wish sometimes I could be that person. But it’s too far out of my ability to make it happen.