High Performance Computing
High Performance Computing (HPC) permits scientists and engineers to resolve complex science, engineering problems. HPC applications require high bandwidth, low latency networking, and very high compute capability engines.
HPC Explores the problems of designing of computing clusters, high performance storage systems, including usage of GPU and FPGA accelerators, Infiniband interconnect.
We focus over some generic techniques to exploit the parallelism inherent in the algorithms employed.
Task Level Parallelism:
There are several levels of parallelism to address. A good starting point is to structure the HPC application for multi-threaded execution suitable for parallel execution across a grid of processors. This is task-level parallelism, exploited by cluster computing. There are software packages available that can take legacy applications and transform them into a structure suitable for parallel execution.
Data Level Parallelism:
The system having a fine-grained architecture is best suited for parallel execution. Such system, such as FPGAs, can be configured to perform a set of operations on a large number of data sets simultaneously. This parallel execution performs the equivalent work of numerous conventional processors all in a single device.
Instruction Level Parallelism:
Conventional processors support the simultaneous execution of a limited number of instructions. FPGAs offer much deeper pipelining, and therefore can support a much larger number of simultaneously executing “in-flight” instructions.
Unal Color of Education Research & Development