FFT Benchmark in MaixPy on Sipeed Maix Bit

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