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と同等となっている。


