A Brief Affair with FPGAs Zhipeng Zhao, Qi Guo, Tze Meng - - PowerPoint PPT Presentation

a brief affair with fpgas
SMART_READER_LITE
LIVE PREVIEW

A Brief Affair with FPGAs Zhipeng Zhao, Qi Guo, Tze Meng - - PowerPoint PPT Presentation

Carnegie Mellon BLIS A Brief Affair with FPGAs Zhipeng Zhao, Qi Guo, Tze Meng Low Carnegie Mellon University 1 Carnegie Mellon FPGAs System on Chip (SoC)


slide-1
SLIDE 1

Carnegie Mellon

A ¡Brief ¡Affair ¡with ¡FPGAs ¡

Zhipeng ¡Zhao, ¡Qi ¡Guo, ¡Tze ¡Meng ¡Low ¡ Carnegie ¡Mellon ¡University ¡

BLIS

1 ¡

slide-2
SLIDE 2

Carnegie Mellon

¡FPGAs ¡

2 ¡

DIY ¡Hardware ¡ System ¡on ¡Chip ¡(SoC) ¡

slide-3
SLIDE 3

Carnegie Mellon

Energy-­‑efficient ¡compuBng ¡ Heterogeneous ¡architecture ¡ Used ¡in ¡Datacenters ¡and ¡Cloud ¡Services ¡

3 ¡

slide-4
SLIDE 4

Carnegie Mellon 4 ¡

C ¡/ ¡OpenCL ¡ High ¡Level ¡Synthesis ¡ (HLS) ¡ RTL ¡

¡High ¡Level ¡Synthesis ¡

slide-5
SLIDE 5

Carnegie Mellon 5 ¡

C ¡/ ¡OpenCL ¡ High ¡Level ¡Synthesis ¡ (HLS) ¡ RTL ¡

¡High ¡Level ¡Synthesis ¡

Can ¡FPGA ¡design ¡be ¡efficiently ¡performed ¡ by ¡soSware ¡developers? ¡ ¡

slide-6
SLIDE 6

Carnegie Mellon

Naïve ¡ HPC ¡ HLS ¡ M ¡ N ¡ K ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡

4 ¡ 4 ¡ 4 ¡ 882 ¡ 5 ¡ 533 ¡ 884 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 4 ¡ 4 ¡ 8 ¡ 1626 ¡ 5 ¡ 537 ¡ 889 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 4 ¡ 8 ¡ 4 ¡ 1714 ¡ 5 ¡ 542 ¡ 895 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 4 ¡ 8 ¡ 8 ¡ 3162 ¡ 5 ¡ 547 ¡ 900 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 8 ¡ 4 ¡ 4 ¡ 1754 ¡ 5 ¡ 545 ¡ 895 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 8 ¡ 4 ¡ 8 ¡ 3234 ¡ 5 ¡ 550 ¡ 900 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 8 ¡ 8 ¡ 4 ¡ 3418 ¡ 5 ¡ 550 ¡ 906 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 8 ¡ 8 ¡ 8 ¡ 6306 ¡ 5 ¡ 554 ¡ 911 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡

6 ¡

for (int i = 0; i != m; ++i) for (int j = 0; j != n; ++j) for (int p = 0; p != k; ++p) c[i][j] += a[i][p]*b[p][j]

slide-7
SLIDE 7

Carnegie Mellon

Naïve ¡ HPC ¡ HLS ¡ M ¡ N ¡ K ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡

4 ¡ 4 ¡ 4 ¡ 882 ¡ 5 ¡ 533 ¡ 884 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 4 ¡ 4 ¡ 8 ¡ 1626 ¡ 5 ¡ 537 ¡ 889 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 4 ¡ 8 ¡ 4 ¡ 1714 ¡ 5 ¡ 542 ¡ 895 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 4 ¡ 8 ¡ 8 ¡ 3162 ¡ 5 ¡ 547 ¡ 900 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 8 ¡ 4 ¡ 4 ¡ 1754 ¡ 5 ¡ 545 ¡ 895 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 8 ¡ 4 ¡ 8 ¡ 3234 ¡ 5 ¡ 550 ¡ 900 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 8 ¡ 8 ¡ 4 ¡ 3418 ¡ 5 ¡ 550 ¡ 906 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 8 ¡ 8 ¡ 8 ¡ 6306 ¡ 5 ¡ 554 ¡ 911 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡

7 ¡

0.162 ¡FLOPS ¡/ ¡cycle ¡

for (int i = 0; i != m; ++i) for (int j = 0; j != n; ++j) for (int p = 0; p != k; ++p) c[i][j] += a[i][p]*b[p][j]

slide-8
SLIDE 8

Carnegie Mellon

Naïve ¡ HPC ¡ HLS ¡ M ¡ N ¡ K ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡

4 ¡ 4 ¡ 4 ¡ 882 ¡ 5 ¡ 533 ¡ 884 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 4 ¡ 4 ¡ 8 ¡ 1626 ¡ 5 ¡ 537 ¡ 889 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 4 ¡ 8 ¡ 4 ¡ 1714 ¡ 5 ¡ 542 ¡ 895 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 4 ¡ 8 ¡ 8 ¡ 3162 ¡ 5 ¡ 547 ¡ 900 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 8 ¡ 4 ¡ 4 ¡ 1754 ¡ 5 ¡ 545 ¡ 895 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 8 ¡ 4 ¡ 8 ¡ 3234 ¡ 5 ¡ 550 ¡ 900 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 8 ¡ 8 ¡ 4 ¡ 3418 ¡ 5 ¡ 550 ¡ 906 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 8 ¡ 8 ¡ 8 ¡ 6306 ¡ 5 ¡ 554 ¡ 911 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡

8 ¡

for (int i = 0; i != m; ++i) for (int j = 0; j != n; ++j) for (int p = 0; p != k; ++p) c[i][j] += a[i][p]*b[p][j]

2% ¡of ¡available ¡resources ¡

slide-9
SLIDE 9

Carnegie Mellon

Naïve ¡ HPC ¡ HLS ¡ M ¡ N ¡ K ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡

4 ¡ 4 ¡ 4 ¡ 882 ¡ 5 ¡ 533 ¡ 884 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 4 ¡ 4 ¡ 8 ¡ 1626 ¡ 5 ¡ 537 ¡ 889 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 4 ¡ 8 ¡ 4 ¡ 1714 ¡ 5 ¡ 542 ¡ 895 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 4 ¡ 8 ¡ 8 ¡ 3162 ¡ 5 ¡ 547 ¡ 900 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 8 ¡ 4 ¡ 4 ¡ 1754 ¡ 5 ¡ 545 ¡ 895 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 8 ¡ 4 ¡ 8 ¡ 3234 ¡ 5 ¡ 550 ¡ 900 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 8 ¡ 8 ¡ 4 ¡ 3418 ¡ 5 ¡ 550 ¡ 906 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 8 ¡ 8 ¡ 8 ¡ 6306 ¡ 5 ¡ 554 ¡ 911 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡

9 ¡

18.96 ¡FLOPS ¡/ ¡cycle ¡

#pragma HLS ARRAY_PARTITION variable=C block factor=4 dim=1

slide-10
SLIDE 10

Carnegie Mellon

Naïve ¡ HPC ¡ HLS ¡ M ¡ N ¡ K ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡ Cycle ¡ DSP ¡ FF ¡ LUT ¡

4 ¡ 4 ¡ 4 ¡ 882 ¡ 5 ¡ 533 ¡ 884 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 33 ¡ 44 ¡ 5407 ¡ 8964 ¡ 4 ¡ 4 ¡ 8 ¡ 1626 ¡ 5 ¡ 537 ¡ 889 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 53 ¡ 44 ¡ 5411 ¡ 8970 ¡ 4 ¡ 8 ¡ 4 ¡ 1714 ¡ 5 ¡ 542 ¡ 895 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 34 ¡ 85 ¡ 10908 ¡ 17578 ¡ 4 ¡ 8 ¡ 8 ¡ 3162 ¡ 5 ¡ 547 ¡ 900 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 54 ¡ 85 ¡ 10912 ¡ 17585 ¡ 8 ¡ 4 ¡ 4 ¡ 1754 ¡ 5 ¡ 545 ¡ 895 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 34 ¡ 85 ¡ 10748 ¡ 17581 ¡ 8 ¡ 4 ¡ 8 ¡ 3234 ¡ 5 ¡ 550 ¡ 900 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 54 ¡ 85 ¡ 10752 ¡ 17589 ¡ 8 ¡ 8 ¡ 4 ¡ 3418 ¡ 5 ¡ 550 ¡ 906 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 34 ¡ 167 ¡ 21142 ¡ 34547 ¡ 8 ¡ 8 ¡ 8 ¡ 6306 ¡ 5 ¡ 554 ¡ 911 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡ 54 ¡ 167 ¡ 21146 ¡ 34555 ¡

10 ¡

#pragma HLS ARRAY_PARTITION variable=C block factor=4 dim=1 #pragma HLS PIPELINE II=5 #pragma HLS UNROLL

slide-11
SLIDE 11

Carnegie Mellon 11 ¡

slide-12
SLIDE 12

Carnegie Mellon 12 ¡

slide-13
SLIDE 13

Carnegie Mellon

+ ¡ = ¡

mr nr

kc

13 ¡

slide-14
SLIDE 14

Carnegie Mellon

+ ¡ = ¡

mr nr

kc

14 ¡

mrnr ≥ NFMALFMANvec

FMA ¡ FMA ¡ FMA ¡

LFMA

slide-15
SLIDE 15

Carnegie Mellon

mrnr ≥ NFMALFMANvec

FMA ¡ FMA ¡ FMA ¡

LFMA

+ ¡ = ¡

mr nr

kc

  • Key ¡Differences ¡

– Variable ¡architecture ¡ – Fixed ¡problem ¡size ¡ – Dependent ¡on ¡HLS ¡ implementabon ¡for ¡

mr nr

15 ¡

LFMA

slide-16
SLIDE 16

Carnegie Mellon

500 1000 1500 2000 2500 3000 3500 4000 4500 (4,4,256) (4,8,128) (8,8,64) Execution CyclesgivenDifferentNumberofPEs

Cycles

16 ¡

0 ¡ 0.5 ¡ 1 ¡ 1.5 ¡ 2 ¡ 2.5 ¡ (4,4,256) ¡ (4,8,128) ¡ (8,8,64) ¡ Power ¡Efficiency ¡given ¡Different ¡Number ¡of ¡PEs ¡

Normalized ¡Cycle*Power ¡Number ¡

slide-17
SLIDE 17

Carnegie Mellon 17 ¡

slide-18
SLIDE 18

Carnegie Mellon 18 ¡

~

s ¡ ¡

¡ ¡ ¡Data ¡Movement ¡

Registers ¡ BRAM ¡ DRAM ¡

slide-19
SLIDE 19

Carnegie Mellon 19 ¡

~

s ¡ ¡

¡ ¡ ¡Data ¡Movement ¡

Registers ¡ BRAM ¡ DRAM ¡

+ ¡ = ¡

mr nr

kc

slide-20
SLIDE 20

Carnegie Mellon 20 ¡

~

s ¡ ¡

¡ ¡ ¡Data ¡Movement ¡

Registers ¡ BRAM ¡ DRAM ¡

slide-21
SLIDE 21

Carnegie Mellon 21 ¡

~

s ¡ ¡

¡ ¡ ¡Data ¡Movement ¡

Registers ¡ BRAM ¡ DRAM ¡

slide-22
SLIDE 22

Carnegie Mellon 22 ¡

slide-23
SLIDE 23

Carnegie Mellon 23 ¡

slide-24
SLIDE 24

Carnegie Mellon 24 ¡ 86 ¡ 88 ¡ 90 ¡ 92 ¡ 94 ¡ 96 ¡ 98 ¡ 100 ¡ 0 ¡ 500 ¡ 1000 ¡ 1500 ¡ 2000 ¡

Percentage ¡of ¡TheoreBcal ¡Peak ¡ Matrix ¡Size, ¡MC=100, ¡KC=100 ¡

Percentage ¡of ¡peak ¡as ¡matrix ¡size ¡ increases ¡

v1_NC_100 ¡ v1_NC_5 ¡

Based ¡on ¡4 ¡FMA ¡units ¡

mr = 4 nr = 5 kc = 100 mc = 20

slide-25
SLIDE 25

Carnegie Mellon 25 ¡

Compute ¡ Store ¡ Compute ¡ Store ¡

slide-26
SLIDE 26

Carnegie Mellon 26 ¡

Compute ¡ Store ¡ Compute ¡ Store ¡

slide-27
SLIDE 27

Carnegie Mellon 27 ¡ 86 ¡ 88 ¡ 90 ¡ 92 ¡ 94 ¡ 96 ¡ 98 ¡ 100 ¡ 0 ¡ 500 ¡ 1000 ¡ 1500 ¡ 2000 ¡

Percentage ¡of ¡TheoreBcal ¡Peak ¡ Matrix ¡Size, ¡MC=100, ¡KC=100 ¡

Percentage ¡of ¡peak ¡as ¡matrix ¡size ¡ increases ¡

v1_NC_100 ¡ v1_NC_5 ¡

Based ¡on ¡4 ¡FMA ¡units ¡

mr = 4 nr = 5 kc = 100 mc = 20

slide-28
SLIDE 28

Carnegie Mellon 28 ¡ 86 ¡ 88 ¡ 90 ¡ 92 ¡ 94 ¡ 96 ¡ 98 ¡ 100 ¡ 0 ¡ 500 ¡ 1000 ¡ 1500 ¡ 2000 ¡

Percentage ¡of ¡TheoreBcal ¡Peak ¡ Matrix ¡Size, ¡MC=100, ¡KC=100 ¡

Percentage ¡of ¡peak ¡as ¡matrix ¡size ¡ increases ¡

v1_NC_100 ¡ v1_NC_5 ¡ v3_NC_5 ¡

Based ¡on ¡4 ¡FMA ¡units ¡

mr = 4 nr = 5 kc = 100 mc = 20

slide-29
SLIDE 29

Carnegie Mellon 29 ¡ 86 ¡ 88 ¡ 90 ¡ 92 ¡ 94 ¡ 96 ¡ 98 ¡ 100 ¡ 0 ¡ 500 ¡ 1000 ¡ 1500 ¡ 2000 ¡

Percentage ¡of ¡TheoreBcal ¡Peak ¡ Matrix ¡Size, ¡MC=100, ¡KC=100 ¡

Percentage ¡of ¡peak ¡as ¡matrix ¡size ¡ increases ¡

v1_NC_100 ¡ v1_NC_5 ¡ v3_NC_5 ¡ v3_NC_5_KC_200 ¡

Based ¡on ¡4 ¡FMA ¡units ¡

mr = 4 nr = 5 kc = 100 mc = 20 200

slide-30
SLIDE 30

Carnegie Mellon 30 ¡ 86 ¡ 88 ¡ 90 ¡ 92 ¡ 94 ¡ 96 ¡ 98 ¡ 100 ¡ 0 ¡ 500 ¡ 1000 ¡ 1500 ¡ 2000 ¡

Percentage ¡of ¡TheoreBcal ¡Peak ¡ Matrix ¡Size, ¡MC=100, ¡KC=100 ¡

Percentage ¡of ¡peak ¡as ¡matrix ¡size ¡ increases ¡

v1_NC_100 ¡ v1_NC_5 ¡ v3_NC_5 ¡ v3_NC_5_KC_200 ¡

Based ¡on ¡4 ¡FMA ¡units ¡

mr = 4 nr = 5 kc = 100 mc = 20

Double ¡buffer ¡the ¡ movement ¡of ¡A ¡

200

slide-31
SLIDE 31

Carnegie Mellon

Summary ¡

  • Analybcal ¡models ¡for ¡BLIS ¡are ¡good ¡starbng ¡

points ¡for ¡FPGAs ¡

  • Data ¡movement ¡requirements ¡change ¡how ¡

kernels ¡are ¡wrijen ¡

  • Next, ¡parallel ¡BLIS ¡implementabons ¡ ¡

31 ¡

slide-32
SLIDE 32

Carnegie Mellon

Quesbons? ¡

32 ¡