1
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Evolution of Computing
Pedro Moura TrancosoCASPER Research Group
Department of Computer ScienceUniversity of Cyprus
1
Computer Science & EngineeringChalmers University of Technology
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Evolution…
2
2
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution
3
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution (part 2)
4
3
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution (part 3)
5
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution (part 4)
6
4
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution (part 5)
7
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
CPU Evolution (part 6)
8
5
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Multicore – Manycore - Manytype
9
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
• Use GPUs to drive cars!• Use mobile phone CPUs to build supercomputers!
What to do?
• Ignore all! • Continue to develop more complex and
sophisticated architectures…• Languages and systems that are more
difficult to use…• Crazy ideas:
10
6
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Possible Solutions
• Get lower – Near-Threshold Computing• Get closer – Near-Memory Computing
• Get parallel – Lightweight Runtime• Get tolerant – Approximate Computing• Get smarter – Cognitive Computing
11
HW
SW
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Get Parallel –Lightweight Runtime
• Dataflow… and Tasks on commodity systems• Yet another language/system? Not really
• Research Work:– TFlux, TFluxSoft, TFluxHard, TFluxCell, TFluxSCC…– New scalable (manycore) lightweight system under
review! (no impact on productivity)12
Sequential program Code with directives
User
TFlux parallel
Code
High Level Code
Parallel Binary
Preprocessor Compiler
TFlux Parallel Code
#include <stdio.h>
int main(){ int i=0; int a[10000];
#pragma ddm for for(i=0;i<100;i++) { a[i]=i*i+i; } #pragma ddm endfor
printf(“DONE”);}
#include <stdio.h>
int main(){ int i=0; int a[10000];
for(i=0;i<100;i++) { a[i]=i*i+i; }
printf(“DONE”);}
7
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Get lower – Near-Threshold Computing
• Reduce energy consumption• Work with aggressive margins• Logic voltage-frequency and Memory refresh
rate• Close feedback loops for error detection and
correction• May lead to errors, faults (see approximate
computing)• Project:
– UniServer (H2020)13
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Get closer – Near-Memory Computing• Improve memory bandwidth and latency• Move computation into memory• Challenge:
– Computation elements - granularity, capabilities, placement, visibility, access
– Detect regions of code that can operate in memory• Project:
– Memoryland (CF15), determine computation requirements and memory allocation/placement
– Future directions: non-von Neumann in-memory processing with large number of small processing elements.
14
8
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Get tolerant – Approximate Computing
• System aging, process, near-threshold operation may result in errors
• Tolerate errors at application level• Avoid correction cost/overhead• Projects:
– Getting Ready for Approximate Computing: Trading Parallelism for Accuracy for DSS Workloads (CF14),
– UniServer (H2020)
15
MULTIPROG 2017, HiPEAC 2017, Stockholm, 24 January 2017
Get smarter – Cognitive Computing
• Use prediction and cognitive methods to drive all of the above!– Determine safe and efficient thresholds– Assign code for in memory execution– Parallelizing code– Estimate tolerable errors– Estimate error propagation and selection factor– …
16
9
CASPER GROUPComputer Architecture Systems Performance Evaluation Researchwww.cs.ucy.ac.cy/carch/casper
Tack så mycket !
17