資料 - CAE計算環境研究会

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