From 63849288b55bf1a371d95041cb843840fc590233 Mon Sep 17 00:00:00 2001 From: "Michael J. Klaiber" Date: Thu, 4 Aug 2022 14:01:53 +0200 Subject: [PATCH] [UMA RFC] added discussion beyoond UMA_v1.0 --- ...A_Unified_Modular_Accelerator_Interface.md | 97 ++++++++++++++++++ rfcs/assets/0060/uma_strawberry.drawio | 1 + rfcs/assets/0060/uma_strawberry.png | Bin 0 -> 12041 bytes rfcs/assets/0060/uma_vanilla.drawio | 1 + rfcs/assets/0060/uma_vanilla.png | Bin 0 -> 7428 bytes 5 files changed, 99 insertions(+) create mode 100644 rfcs/assets/0060/uma_strawberry.drawio create mode 100644 rfcs/assets/0060/uma_strawberry.png create mode 100644 rfcs/assets/0060/uma_vanilla.drawio create mode 100644 rfcs/assets/0060/uma_vanilla.png diff --git a/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md b/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md index 6b402a52..91cbcd25 100644 --- a/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md +++ b/rfcs/0060_UMA_Unified_Modular_Accelerator_Interface.md @@ -388,3 +388,100 @@ Below is a list of currently planned configuration parameters for the initial ve |Parameter|Type|Description| |---------|----|-----------| |merge_compiler_regions|bool (default: True)|Enables/disables the `MergeCompilerRegions` pass during partitioning.| + + +## TVMC integration + +Proposals: + - Add uma_cli functionality that is currently only used for the tutorial + - possibility to compile with tvmc + - integrate the UMA targets with the tvmc run command + +## Tutorial + +Three mock-accelerators: see $TVM_HOME/gallery/tutorial/uma.py for details + +### Vanilla + See tutorial + +### Strawberry + +differences to Vanilla: + - show how a TIR pass is implemented and used in UMA + +Propose hardware architecture: + +![](assets/0060/uma_strawberry.png) + + +Pseudo-code of run.py example: + +``` +main(){ + layer1(); + layer2(); + layer3-conv2d-uma(); + layer4(); +} + +layer3-conv2d-uma(){ + dma_copy(ifmap); + dma_copy(weights); + strawberry_calculate(); + dma_copy(ofmap); +} +``` + + + +### UMA chocolate + +Proposed topics to be covered in Chocolate part of tutorial: + - tiling + - tuning + - configuration (via configure_stub) + - irq handling / polling + +Propose hardware architecture: + +TDB + +Pseudo-code of run.py example: +``` +main{ + layer1(); + layer2(); + layer3-conv2-uma(); + layer4(); +} + +layer3-conv2d-uma(){ + for (tilex){ + for (tiley){ + dma_copy(ifmap); + dma_copy(weights); + strawberry_conv2d_calculate(); + dma_copy(ofmap); + } + } +} + +strawberry_conv2d_calculate(*ifmap,*weight,*ofmap, kx, ky, ci, ...){ + configure_stub(); + exeucute_stub(**args); + irq_stub(); +} + +exucute_stub(){ + //c implementation of conv2d +} + +configure_stub(){ + //empty for first shot +} + +irq_stub(){ + //empty for first shot +} +``` + diff --git a/rfcs/assets/0060/uma_strawberry.drawio b/rfcs/assets/0060/uma_strawberry.drawio new file mode 100644 index 00000000..98225c95 --- /dev/null +++ b/rfcs/assets/0060/uma_strawberry.drawio @@ -0,0 +1 @@ +5VjbcpswEP0aHusRV8Njgp2kM/U0LdMmfVSQAswAokI2uF9fqQhzkR07GdtxW48fVmd13XPYFWimn9W3FBbxgiCcagZAtWbONMPQLcPQxB+gdYNMbQlENEGyUwcEyS8sQSDRZYJwOejICElZUgzBkOQ5DtkAg5SSatjtmaTDVQsYYQUIQpiq6EOCWNygrg06/A4nUdyurAPpyWDbWQJlDBGpepA510yfEsIaK6t9nIrgtXFpxt3s8G42RnHODhkw979k6OdddZVnnz775c1376vzQZdsrGC6lCeWu2XrNgR844Uwn1NcX4mQauY1zpE0Z2EKyzIJOVgySJkKxyxLOaBzk5JljrDYEOAt9QTyUBgNSJHnucUkw4yueYeqo2IT8LhPQwtSnEKWrIZkQqmJaDPhZo17kvC9GEDq13TsZohUr9uS2U5RkiUNsRzVD/6eiSx3NBEPXYSZMhE3egfvoD/cvoZnU+HZv/+mUN3xI9iq4oThoICh8Fb8+R6SuZO+FaYM1y8S2Ho9MAiLDWSY+gQbWwh2wG4qB7F7daCsLQ+Ek/Jlr1Gy4mYkzIBRWD1hKhZsnHyxnn/LkBZ6omPkMoZemBKcluF9StBPJwVnf248Sh7kUaPrx37jh2hM7LY5q/vO2fqY+dPeElP7SNlzOuLU8iZe//e2XGpZo2ntM+fS6bl0USfsUXqE3VMFb3WiEI29mmiie0CJuBDxWGDEsmu/tfSOaoxpvaTCU4vH/TfFY/0f4pla5801hlqDgpjzgzi2wBmRZe49K/c4HdsHV+7xHfholdtQM/RscfXukVJuu+6BkTrZFcf4K7PRhSQZUx8lGeBNpkfKM44OJsZorlOnGk/RwsecYZrDVH2LCEIKWRgXEKm+C8lLBhin7i3vlts+Hoyvkwc8bbzZfchpCOk+h5nz3w== \ No newline at end of file diff --git a/rfcs/assets/0060/uma_strawberry.png b/rfcs/assets/0060/uma_strawberry.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2dce432af208b31dda288e356a4249b26d1fcc GIT binary patch literal 12041 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 literal 0 HcmV?d00001 diff --git a/rfcs/assets/0060/uma_vanilla.drawio b/rfcs/assets/0060/uma_vanilla.drawio new file mode 100644 index 00000000..ee685b27 --- /dev/null +++ b/rfcs/assets/0060/uma_vanilla.drawio @@ -0,0 +1 @@ +5VdNc5swEP01HNsBCez4mGInOTTTtJ6myVGDNkYzAlEhG+ivryjCIIiLncnXtDM+7D5JK+m9x2IcHCblpSRZfC0ocAe5tHTw0kHI8xFy6p9LqwaZBwbYSEbNpA5Ys19gQNegW0YhtyYqIbhimQ1GIk0hUhZGpBSFPe1BcHvXjGxgBKwjwsfoD0ZV3KBngdvhV8A2cbuz55qRhLSTDZDHhIqiB+GVg0MphGqipAyB1+S1vDTrLg6M7g8mIVXHLFiFXxP686o4T5PPX8L84nbxbfbBVNkRvjUXNodVVcuAPndWhw8cyvOaUQd/gpSacBlxkucs0mCuiFRjOFYJ14CnQym2KYX6PK7OxhcwpwFqaWKucwkiASUrPaHolNjzHfdVaEEJnCi2s7UkxhKbfcH9HjeC6bMg19gXz4JmiTGvjwK7RC62MgKzqs/9RCHkDQpp6jagRoV00Lt4B/2R9gSZ0Ujm8Ob7SOlOnlqsImYK1hmJ6tFCP922lgfV24FUUP5Vv3Z04dqs+Cbv64se0XfmHlbSou5UnvCIp1uSMs7Ju+MKB2/NlT/iah3rG1KNXUMizA5vyZnvD/yFj+TMO3sp0ubT/fZZeqsmTVZ3/eS+Tj4Gbbos+4PLaqonNw1q2g6n9O7gEeqDZ+rc88HjggaKHtu5/WBQaD4o9MKde/FahimZujMjddyzi846t9TJpFkacqffR+/ELL5ra+w/1Sx4Nmg4r2yW9k/zP+YW/H+4BQ/fOk92i06774pmevd1hle/AQ== \ No newline at end of file diff --git a/rfcs/assets/0060/uma_vanilla.png b/rfcs/assets/0060/uma_vanilla.png new file mode 100644 index 0000000000000000000000000000000000000000..b3487c0debbc01d0773b1d5086d38baddcfc500c GIT binary patch literal 7428 zcmdT}2~bnnnvU9TETTXIZqVWaqJ(UOfGiS12y576YXw6HNq}qw5`rMM2#SD+8z`H~ zLz{MMr7<9z$`X+PA`LW#RS;Bmk$sy3vETHYsaG{M^=77~in{mQdrtmy&VT>^JKz5i z=jdQ1FSAVs0)fa|6L8KD$SN*qzumA7TniF^U_c<>oeHt^2w{Zz(}O6Gy+{jbYcB#u zV{t?FB5`{W2ojqO^`n!h!6XJ3%A|yVSD>H4@}v9HDSpy12p9sP3&ZHbP_A(JUZlA` z0$kt*P(uX5OFEuJr7*u4)Q7@=0d03W(~rgH?w9scLP%7pEhdNQ;2yx$N0}q^LvU6U zx_Jm+I)+CH=F(ZrKc|Euph#&)h=5IzzV)N<=w!FD29YHmTKqTnw4 zaI&W#%io7ZpnC>MjW9`!Z$=!!Vs+tCBl>QB4rF~U-_j8VCpd7i7L;%l!^)aTbaizN zu|YEgZdN#lK+kaVAWNFnUIdoT3l;=eSXNbjyU=4Mc}Dy7ZMp86c!jt=E4{jp>(`+01@wL14mgfodgVot)~at(bj+% zMkDjtd_0HbZW~JG2hz=5js!cB2&^E7fN+AppBu^2(uQe4M{o^}1cuRUef`M z0_|&01y1q^N7*pwu2#GNzO8|?1sY*bwGHQR!2%4OEeL@)CpH@$K%zRc++Z-f5ER%u z9^q_Ab@75731DD|z6LJDAR;q}!?k93+QMlJ8*~WX!V!dU5Y^uefx;g-;;8S&Lwdnb ze#=&|7QQ?*ic5ic_%jGWzAmg#{Uc1Cg*6)<>SE6|un7f2>}|0iS?~@)uHZ^1(U8Gb za9anDBlh%gbA6t`i^&5Sh8N%iz*tv%B9hC7h59a!_4o3kaJURtH!l$4c#6w%e*ntL z*O#?CGs@A9#9=WV_;3z_ie?%T4XBnB4i2OmHkgdT5CW)Fk}V-5R3H4-9qUBGp;(6Y zwtgTl@OTo49i5F zPk(0PN@{}VZ(xJ8eA%9{69Q2)v&NabhNTa+o6%fG)J0?C7WQA{R_#B%=S`&?6#BI5 zk{kyfeGIxvRn;7UldDzK-eiAs^6;Inr!9^i-GNp8RQcf`)>fsuvho(e`r4%vCAv_5 zHX>q}JrXw~xfAISUN@6jFT2`I($|~T|7oPXhaMomdFJ=d#YqF9)em3f%7<2+gJ!$x z>{5xp<*HL?B9p8I>+3zl>MX4+IWhHSh{qY}Fe#3lYaU8IcT|*m`BB8|*Nw@9?|e!l zRzV_WzN`i9EYrwf0YZ}x@9W(z5{W##y{m?YhhItfeE#F&;)I?aa>~Bl!5U)%UcApWQWX& zi2-+9wv)%T&|7n!*J5a>^N)PWpfrT$2uWOh`Q*ZE%-qySPi>k(%Cn_30~UK}F>-!( zqNcn0TyY#+ix~c;cjNiW+s*Lvm71Bxg7XD$Ewg6z0dXmMY2?C-j6OrMsOY*^;5#O#vhpOCc>S&BN2v z{Gf^jG^M<|ySq)~E3OXJ^Dchgc$fI7_i?6aPoF-$c?J8}qXP67P63Y}$@h|1P&a-)(pmPXckJZSV&ZxQ^_y<@j#c-} zm}fVfa+Vnw7~on)Kdb`=n_F6LUBPBIV8+Q?xxuxfB#m2FUe=`OIpw<6mDG|mdx|4w z6m9lL%ujP()W4Z~Dikh9*}_7k(CQX)aAbrm5Nwr5BuKMZxR!ea2#klL?+nUQM_ig< z39>tIA`(K368r13h>>O>O4-S&jWfV(vcuhW^=Rm> z3<4V__DUDZL5}+mZQzsw!-?Mkr9ji`d{P& zPxf8bgZ0&EtHgWw`0!821wWsioqc77H<&<{wKL06_IoZ{FaDk)VvU9EsPw%fzfcSc4TxO1|u(n@$pwKu}|EL2{Ho zPdt;5b-yD&)Jv%$1qRj(!C#sG_~Vb!ohJ@Wi_J_-EYWEof3WwOf*F`+#cuavTyVc_MpldnDTfKx+XL4 zw=?v7FGriWnLFC#hg1-(Cr+GTCYj6rDiodt0j+k2e%n#Iz(hg!@GZwv^c&2i?hRE( z>py?iA^veDAm7X5*s+*oyL}|jYm)Idt39s8_#r+`s$DoPo~ZDJmm=(cW(w!ZQZ9;m zILs%GllyF+rw+j7)-0Ut9D>tU%`TKKaJAa}atH0Nor1TNhbA*Nb1&JxUPSbT7eJrD z`&RuxiQ39FIjY*KHV(P?q%5IO{b77if&fBj^{G0l&|-=lZ?11KWvO2_h zGG)b1B3uEof37BVp!?aYs?_zTt}IZ*6YOJtWbvBA|9bP!jpydZ`|A&+;zq`#%dMy= zZVh@zTo+6FA*(*AIBGhw(XtbBDTh|m2I@(Wv?660XhT4Yg)HCcW@mAQr zefx$O>^Yn!)K1@ee+(OwV3UK;|NN%~(;bu_?>26o>CN~)@X)k*T;a|!!k*JKluVAY zU1JF6nOQ*owkyujg;m*gEAHx>OO-UJn;yvW_qu1%rO&Wb#)6(I?nwlWXk*JJ?du#1&xZ^ zR)G&6p~3AM4D93e*2mBMMkbsuWEg*LdE{gDz>Os%y!NeQ`3}ziKVeR07ff-9UvE%JFnZld~#4o zy|wn&gR<3rZ-?MJUaYv!Uu~USBg#ozxh*qB<))+dbCkVM#0HoLk}{2?275PzzT!;F z_hQytYyyzsXmhKbS!8m4x7tc(%axy61(^unnd|y`Nbt%$*HvaBydBssU$KooX9)4j z^8_b>LI19^;07Lmae$1#xP%}k5{Uo^lWlUssw?k$Jy3DZResWX(1A#7R~G?nT!xF? zaADIxsCJH{w(@aLm1pfxpR>bG3nw+&nX1<)w;Z((@8A3R?Q7Tyo;=NkuRp~rl5a!- zP}`Cu8p?vcuZ2Y-~hTM&xm~Ne5nsYkiS6(N*aY(ce%2;Xk|T{L$LV2{=gnxhVk9j*k=J zNVBTy)TE`f*{A+_8_QvDK85T!aew@eB*THBIGpeM$T-~l*ZoIPU{e-a{{SxzNqrk_ z_Ma&yx$0cab>i#v#o<=308&7{5$35o+0>YLw~-`{YYVxaD%p~R(>#aIcC>kcs0$rbveIx2`*T*$EEU(GIF<|6!doGieKr8r z+NF3dvaFlDX-P1RY3$&;iPLKPUPUU!RdmIlH);G$v^5GkIX)a>i2JO|Exc&<_Na~(=oDho z)ksSa+G^NfKIZuRlh=Y2Pe?*~jARUWqo}B;-}C~QPEUKX)2NDy8Nl?6%W1f*2aJc) zfE)+M1Yr+CF$3&oc~i?snR#zv;itqzd8>M{NIq*-mg;zSjb1ECoG>%3Dm&NwDP-M9 zUTb%{e#$}t@HIQGvb4T)X>sa$5;r-u{s!Gme72wSUNPQ8K}xD5RoQ@fhyEUrFa2V% zG?dX6PMQ*2qYQUEPw!az_v2%EE%E8s6^g{y3r+a@E}Q4IrVIQ{hZf^8$mMU?V>n^& z0V1ad0T;G9Da2qmoGt$rHrQKn=OpPyNR86_tB?22j(fs2%ud+vQACnW7cq^)haw_p zi&GV%xWUu)JuTw18vUB^EOeu1eQoK|eZ4&?pax-mtY~W zz;4IF=A$%TrD^@0?A~r?`b_k{xk_3Av$So1PX2}ChLX`YEXq2qgpwGFr?#>T0Cew1 zMJCNy=~0nbG5__ea%+$Zfbs`!HMNBwFa0xMuJ_L)+-+pmS!}Yt+xW^q53oyZDZHAC z2PTZ1bFWCoFGhpg&$du0n8%Wy(}WU0=HH%&J#dq?*$?kjmQp*U+?rVW4X_+$Jyv!Z z>u=nVkTIuMfVmbXrv~O!oJH=BD+i>%VEbWdN`%?j)1GihZzq`=_>&7 zxuyCHwU1MC%Ld+{iSPN_xs<1Ov`osH7}1Fqh$ZfzaJj4Qir<3g}WsH$vQHt{Tv^- z?KGU6j{4s)km(+1j#~eb4eOfEw8V<5Vl9r9JMXRS>_J?8KzwW zl&UtlFOK#&QCEU<{FwM&lMdp#_*Irt+;?*2hXL0WY#-GUPpX~*XG_77Fa2>lZ{Hq&I`-$XpnW{rP{BUMxH#m8?!b>d8fHV0)P<>n8t*KA zP1NGJhFa`TWs9@22Fy0KneDOetR8M`dG`y|n|Tj&CG%frBCZ0GGy?@Z@|1!Ve;RR~ zq;{byqWST{%L~VIoXz(rZWTanZEcxJ2Jf36{21LjI4}cvyD^dv0TJj^)mG|yslGqC zzW=Uw4^O9$x>KT8_2{~S)xzw=064j!4pV^eTA;RNoGVC_et;CXa7|zovT<=;j&3pm zqcWa%VMw)cvgJa!wlWs8gGc(s8XVRus4FER5nH(srIbU1tkds)60RAppj`75O~&U< z3R?zl9fcO1-A;glbNC9tv zMB@8c4Fc;^SK z5$VQ0nV8eI}W!9$Nkrv?@`6VTZAx1-!Y9Sjxg=_<=ixSIVg^tfV`H%oA170qa zFq05XLRKe8_rB6&d-_xjhryG|yj{rvzzcxS#uig?KqLg@+c;`5;`5w5AAE|= zfJs)+AD-g%AQnhZT~i~S?q9;nqL!+n*DE;QYkJr_Hh;5$c6fix#6)OmPy^Y)!Qt1^ z(oH$PSLlD?M5ktDW@@I@YF@P&yA)5%_tO2F^L|h$q-SP6GpTFyE)M(YE-}lynrsp| zs|n6$47@Sq-$%(B=56crG+K`&PSv7{jM z(ghI4zWmPaWymPptBwoYpBqq2R zT)T$bi^8UcGj@x1f6)Q@Wq;E>_ptft$Gb)0^V4welJF0&9-k{tkczU^ugo+t7TCg76pZIbv5zO?PV^m3mT~N3CC1rjV>nTPEqi(0gFmrE_X_BG4F!(dU6y zy$O)j@