WHY IS IT EXCITING?
Ever imagined traveling the world with JARVIS by your side? Things could be so much simpler, so much fun and so much more peaceful! Just imagine something is taking care of everything- right from making sure that your maid had come on time to attending business meetings and briefing you about it later. For all of you who are not Iron man fans, JARVIS is a super advanced digital personal assistant. Well, you might think of this as a utopian idea, more of a wishful thinking, but you are about to be surprised. JARVIS can be a reality sooner rather than later. Enabling High-Performance Computing (HPC) on Embedded Systems is one such avenue which can trigger its conceptualization to reality.
JARVIS is actually one such application among many others. In the domain of automotive computing, we have collision avoidance systems. Imagine, a small embedded system can avoid collisions, talking about smart cars, are we? Some of the other applications include- military, aerospace and medical industry. In the military domain, image processing to detect enemy in real time can be of immense help. Medical industry can get a tremendous boost too- instruments with such capacity can be created which can be inserted in the patients’ body and can help doctors while they are performing surgery. But are its applications limited to such exotic industries only? The answer is no. It has been noted that a mid-size truck owner installed HPC enabled device below his trucks to calculate the precise size of mud flaps in order to cut down his cost of gasoline.
What is HPC?
High-Performance Computing or more commonly known as HPC, refers to extremely fast computation. Any device which can perform a large number (say several GigaFLOPS) of floating point operations per second (FLOPS), where floating point operations refer to- addition, subtraction, multiplication and division, is said to be having HPC power. It’s not hard to envisage the kind of impact such computational power in an embedded system can have.
If such is the power of enabling HPC on the embedded system, then what is preventing it? You may wonder. Sure, there is a plethora of applications and also the requisite technology at our disposal, but there are bottlenecks which are creating a problem. Here are a few:-
- Programming Specialized Devices Is Difficult
For HPC, there are a few specialized devices which are good at doing certain tasks. Let’s take the example of General Purpose Graphics Processing Unit (GP-GPUs). GP-GPUs has a thousand cores in a single processor and it aims to efficiently compute repetitive tasks like floating point operations. This efficiency is brought by parallel programming. Programming for GPUs involves parallel programming which is certainly not trivial.
Some other specialized devices we have are FPGA and DSP which are equally complex to program, if not more.
- Programming A Hetrogenous Computing Platform Is Difficult
As we have seen, programming for such devices in itself is very complex. Imagine a scenario wherein these individual devices are made to work together in a single system? Extremely difficult!
- Cost Gets High
Let’s assume that some super intelligent team is able to make such a system work. But the software development cost of the resultant product involving such complexity might be well over 50% of what the entire system cost.
- Portability Is An Issue
Nobody wants to reinvent the wheel every time a new hardware platform is announced. It is often seen that in order to boost performance, things are hand-coded in assembly language. Whoever builds such applications would like them to run on newer, better hardware, without having to do it all over again!
Bringing High-Performance Computing for Embedded Systems is an interesting idea which can open up numerous opportunities. However, what needs to be seen now is how well we overcome the bottlenecks.