I’m working on my Master’s Thesis in computer engineering, with a focus on GPU computing.
As part of my work I’m evaluating the feasibility of migrating an existing Monitoring and Control application from DSP to GPU. This application and several others which are of interest have hard real-time requirements (executing a kernel every millisecond or even more often).
Are there any plans for a Real-Time friendly branch of the OpenCL spec, akin to OpenGL SC?
I am also interested in problems in this domain. What do you see as needing to change in the spec to enable RT in CL? If no spec changes are required, what do you see as needing to change in current implementations?
Well, in order to satisfy any hard real-time requirements, the executed code needs to have specified worst-case execution times. That way a developer who uses OpenCL can sit down and calculate the WCET of her own methods (which depend upon calls to OpenCL).
This would probably depend heavily on the hardware used (e.g. different graphics accelerators, APUs, etc.) and might be implemented not as a simple table of WCETs but as a way to measure the worst possible execution time with a guarantee that it is.
This would entail each implementation supplying a way to test, for each function offered, the guaranteed worst selection of input (given the input size the developer wishes to use, for example).
On the other hand, maybe hardware designers with more insight into the implementation are able to simply produce a table of WCETs for their devices.