Computer cluster |
Set of interconnected computers controlled by a centralized scheduler |
Require minimal changes to the existing source code of CPU programs, with the exception of possible modifications necessary for message passing |
Expensive, characterized by relevant energy consumption and requires maintenance |
MIMD |
Grid computing |
Set of geographically distributed and logically organized (heterogeneous) computing resources |
Require minimal changes to the existing source code of CPU programs, with the exception of possible modifications necessary for message passing |
Generally based on ‘volunteering’: computer owners donate resources (e.g. computing power, storage) to a specific project; no guarantee about the availability of remote computers: some allocated tasks could never be processed and need to be reassigned; remote computers might not be completely trustworthy |
MIMD |
Cloud computing |
Pool of computation resources (e.g. computers, storage) offered by private companies, attainable on demand and ubiquitously over the Internet |
Mitigate some problems like the costs of the infrastructure and its maintenance |
Data are stored on servers owned by private companies; issues of privacy, potential piracy, espionage, international legal conflicts, continuity of the service (e.g. owing to some malfunctioning, DDoS attacks, or Internet connection problems) |
MIMD |
GPU |
Dedicated parallel co-processor, formerly devoted to real-time rendering of computer graphics, nowadays present in every common computer |
High number of programmable computing units allow the execution of thousands simultaneous threads. Availability of high-performance local memories |
Based on a modified SIMD computing paradigm: conditional branches imply serialization of threads’ execution. GPU’s peculiar architecture generally requires code rewriting and algorithms redesign |
SIMD (although temporary divergence is allowed) |
MIC |
Dedicated parallel co-processor installable in common desktop computers, workstations and servers |
Similar to GPUs but based on the conventional ×86 instructions set: existing CPU code, in principle, might be ported without any modification. All cores are independent |
Fewer cores with respect to latest GPUs. To achieve GPU-like performances, modification of existing CPU code to exploit vector instructions are required |
MIMD |
FPGA |
Integrated circuits containing an array of programmable logic blocks |
Able to implement a digital circuit, which directly performs purpose-specific tasks (unlike general-purpose software tools). Such tasks are executed on a dedicated hardware without any computational overhead (e.g. those related to the operating system) |
Generally programmed using a descriptive language (e.g. VHDL, Verilog [18]), which can be cumbersome. Debugging using digital circuits simulators might be complicated and not realistic. Experience with circuit design optimization might be necessary to execute tasks using the highest clock frequency |
Dedicated hardware |