Graphics Processing Unit (GPU) has proven itself as a viable
technology for a wide variety of applications to exploit its massive
computing capability. It allows an application to be programmed
as thousands of threads running the same code in a lock-step manner,
in which warps of 32 threads can be scheduled for execution in
every cycle with zero switching overhead.