Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[✨Feature]:すべきベンチマークを考え,まとめる #37

Open
usuyuki opened this issue Nov 17, 2023 · 12 comments
Open

[✨Feature]:すべきベンチマークを考え,まとめる #37

usuyuki opened this issue Nov 17, 2023 · 12 comments
Assignees
Labels
✨feature Improvements or additions to documentation

Comments

@usuyuki
Copy link
Member

usuyuki commented Nov 17, 2023

✨ 概要

測りたいモチベーション

  • 他のマイコン向けサブセットと比較したい
    • digital IOとかのマイコン向けの動作速度
    • 算術演算速度→フィボナッチ、竹内あたり?
  • 定量的なデータがほしい→coremark
  • 実際の利用に即した結果がほしい→なにかある??

なぜ必要

備考

@usuyuki usuyuki added the ✨feature Improvements or additions to documentation label Nov 17, 2023
@usuyuki usuyuki self-assigned this Nov 17, 2023
@usuyuki usuyuki changed the title [✨Feature]:すべきベンチマークをまとめる [✨Feature]:すべきベンチマークを考え,まとめる Nov 21, 2023
@usuyuki usuyuki transferred this issue from another repository Dec 8, 2023
@usuyuki
Copy link
Member Author

usuyuki commented Dec 18, 2023

warduinoがなぜあれらを選んだかを見ておきたい。

5.3 Benchmarks

要約

  • アップロードや初期化の時間は加味していない
  • 使用したマイコンはESP DEVKITV1(ESP-WROOM-32 chip that operates at 240 MHZ, with 520KiB SRA,)
  • 実行時間だけでなく、各ベンチマークプログラムのサイズも比較
  • WebAssemblyはemscriptenでCから作成
  • いろいろなプログラムでEspruinoより5倍早い
  • グラフは対数グラフ
  • 付録でnativeの比較結果も掲載(Cと比較して465倍遅い)
  • CとJSで速度差を出さないように型以外の構造を同じにして、インライン展開を禁止

To ensure an honest comparison this C code is identical in structure to the JavaScript code except for the addition of types.
we prohibited loop unrolling and inlining of the benchmark functions

  • 遅い理由

memory access is required to perform all basic operations

以後サイズの比較、実際の作例が掲載されている。

論文にはベンチマークをどう選んだかは書かれていない。

@usuyuki
Copy link
Member Author

usuyuki commented Dec 19, 2023

竹内関数とtak関数は別物らしい
https://qiita.com/odanny/items/02c9bc444c14b1dfe6b0

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

https://watako-lab.com/2018/01/30/esp32_calc_spd/

先駆者の事例

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

加減乗除をn万回やるのもありか?(最適化されそうで怖い)

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

flaotとdoubleも気になる.
→wasm3でも浮動小数点演算ユニットが有効になるのか?とか気になるし,sqrtのようにGCCがbuild_inするやつらの速度も気になる.

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

Cならsqrtとsqrtfがあるが,
https://pkg.go.dev/math

Goにはf64を返すsqrtしかない

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

f32とf64でもかなり差が出る

https://blog.classycode.com/esp32-floating-point-performance-6e9f6f567a69

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

webassemblyインタプリタでは加減乗除意外の命令がないので,ガチ最適化の恩恵を受けられなさそう.
sqrtfとかrandomとか
→特にrandomはESP32のハードウェア乱数生成器が使えなさそう

一方で浮動小数点演算ユニットは効きそう.

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

単純な四則演算(int)+単純な四則演算(float)+ハードウェア高速化ができるrandom+数学関数(built_inがある)
でやりたい.

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

一方で意味のあるものもほしいという気持ちもある.

ループさせずに実行するのが難しい

  • 階乗
  • 最大公倍数

未検証

  • カタラン数

ほか候補

  • モンテカルロ法による円周率の計算←でもこれはflaotよりrandomによる原因が大きそう

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

実用的なものがほしい

@usuyuki
Copy link
Member Author

usuyuki commented Dec 26, 2023

無限ループが簡単に作れて四則演算全部使うコード
http://verifiedby.me/adiary/0156

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨feature Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant