FFT Benchmark in MaixPy on Sipeed Maix Bit
Kendryte K210を搭載したSipeed社のMaix BitのMaixPy上で、FFTベンチマークを実施してみました。
少し不思議な結果になっています。
この記事では、FFTアクセラレーターを用いるMaixPy関数をHard FFT
、MaixPyに組み込まれたulabのFFT関数をSoft FFT
またはulab FFT
と呼んでいます。
Sipeed Maix Bit
Sipeed社のMaix Bitは、Canaan社のKendryte K210を搭載したボードです。
Kendryte K210は、以下を搭載したSoCです。
- デュアルコア 64-bit RISC-V
- KPU(Knowledge Processing Unit)
- APU(Audio Processing Unit)
- FFT(Fast Fourier Transform)アクセラレーター
- etc.
MaixPy
MaixPyは、Kendryte K210を搭載したSipeed社のMaixシリーズ用のMicroPythonです。
この記事では、maixpy_v0.6.2_46_geafab8cfd.bin
を使用しました。
Benchmark of Hard FFT
Hard FFT
のベンチマーク結果は、以下のようになっています。
FFT length |
Time (us) | |||
---|---|---|---|---|
mean | std | min | max | |
64 | 130.88 | 205.17 | 105 | 2165 |
128 | 225.04 | 325.70 | 172 | 2616 |
256 | 386.18 | 400.60 | 305 | 2819 |
512 | 735.62 | 591.07 | 570 | 3449 |
処理時間の平均(mean)と最大(max)の差が大きく、この影響が標準偏差(std)に現れています。
Benchmark of Soft FFT
ulab FFT
のベンチマーク結果は、以下のようになっています。
FFT length |
Time (us) | |||
---|---|---|---|---|
mean | std | min | max | |
64 | 109.51 | 5.20 | 107 | 145 |
128 | 221.36 | 46.26 | 214 | 677 |
256 | 455.62 | 25.70 | 447 | 683 |
512 | 979.89 | 128.39 | 956 | 2231 |
1024 | 2109.83 | 174.96 | 2059 | 3317 |
K210のRISC-VがFPUを搭載していることもあり、Hard FFT
と同等の処理時間となっています。
また、最大が少し変動しているものの、標準偏差は平均の1/3以下になっています。
なお、MaixPyのulab FFT
は、FP32を使用しています。
まとめ
Kendryte K210を搭載したSipeed社のMaix BitのMaixPy上で、FFTベンチマークを実施してみました。
以下のことが分かりました。
Hard FFT
の処理時間の変動が大きい。Soft FFT
の平均処理時間は、Hard FFT
と同等となっている。