CAE CAE $ $ $ • – → – • • $ → → $ m $ … $ • $ – • → $ → • $ $ • – $ – RISC $ • $ – … メモリ 16レジスタ ロード ストア ユニット ベクトルレジスタ 64要素 16 レ ジ ス タ スカラ レジスタ 16 レ ジ ス タ ALU 分岐 機構 レジスタ 管理 ユニット ADD ADD ADD ADD ADD ADD MULT MULT MULT MULT DIV DIV DIV DIV アドレス ジェネレータ 命令発行ユニット • ADD $ ADD 演算器 管理 ユニット Zynq Processing System(PS) Flash Controler DRAM Controler I/O Mux $ ARM I2C UART GPIO USB NEON FPU NEON FPU A9 core A9 core AMBA Interconect SPI GigE General Purpose AXI Ports High Performance AXI Ports Programable Logic(PL) • PL Zynq • PL $ $ – – – VP$ • PS2VP $ PS $ – PL ARM Dual Port BRAM VP • 256x256 – Zynq $ ARM $ – VP $ • ARM 666MHz$ – – $0.433[sec]$ $44.301[sec]$ • VP 100MHz$ – $0.477[sec]$ void$dmatmul_vector(double$a[][N],$double$b[][N],$ double$c[][N],$int$n){$ $$int$i,$j,$k;$ $$for$(i=0;$i<1;$i++)${$ $$$$/*$vload$c[i][j=0:n21]$*/$ $$$$for$(k=0;$k<n;$k++)${$ $$$$$$/*$sload$a[i][k]$*/$ $$$$$$/*$vload$b[k][j=0:n21]$*/$ $$$$$$for$(j=0;$j<n;$j++)${$ $$$$ $$$c[i][j]$+=$a[i][k]$*$b[k][j];$ $$$$$$}$ $$$$$$/*$vmul$vtmp$=$s_to_v(a[i][k])$*$b[k][j=0:n21]$*/$ $$$$$$/*$vadd$c[i][j=0:n21]$=$c[i][j=0:n21]$+$vtmp$*/$ $$$$}$ $$$$/*$vstore$c[i][j=0:n21]$*/$ $$}$ $$return;$ } SpMV$Kernel@VP SpMV$Kernel ##DATA$Transfer$##$ ##csr_val,$b_val$to$PL##$ VL$VR1$=$csr_val$ VL$VR2$=$b_val$ VMLT$VR0$=$VR1xVR2$ ##DATA$Transfer##$ ##tmp_val$=$VR0##$ $ $for(i=1;i<=nrows;i++){$ $$$$$$jsta=csr_idx[i21];$ $$$$$$jend=csr_idx[i];$ $$$$$$for(j=jsta;j<jend;j++){$ $y[i]+=tmp_val[j];$ $$$$$$}$ $$$$}$ $for$(i=1;$i<=nrows;$i++){$ $$$$$$jsta$=$csr_idx[i21];$ $$$$$$jend$=$csr_idx[i];$ $$$$$$for$(j=jsta;$j<jend;$j++){$ $$$$ $inod$=$csr_item[j];$ $$$$ $y[i]$+=$ csr_val[j]*b_val[inod];$ $$$$$$}$ $$$$}$ $ SpMV$Kernel • SpMV$ – 10000$ $ • SpMV – 6860000$ • NNZ – 343$ $ $ Mult@VP)+)Sum@PS Core$i7$2.9GHz(Mac$ Book) 0.0067$sec ARM$666MHz(Zynq$PS) 0.0491$sec VP$100MHz(Zynq$PL) 0.0047$+$0.0299 0.0346$sec
© Copyright 2024 ExpyDoc