In contrast to scientific computing, real-time applications constantly receive new data. Unlike control flow, software synchronization mechanisms in dataflow problems must maintain deterministic performance to avoid data overruns from sensors that do not have the option of turning off. This heterogenous mix is one result of the embedded systems' requirement for high utilization rates. Embedded systems are also constrained financially. The medical imaging market, for example, is highly cost sensitive.
Scientific vendors can build monster machines.
Unfortunately, at utilization rates acceptable within the scientific market, such machines become physically too big and too expensive for embedded applications. In the embedded world, investments made at design time to increase system utilization are typically offset by reduced packaging and acquisition costs that translate into increased sales. All of this is why scientific programming tools are typically not used by embedded programmers. The topics above illustrate nontrivial differences between scientific and real-time computing. Our challenge is to move forward while maintaining significant commonalty between two important branches of supercomputing.