type t (* void *)

関数型言語や英語学習の事とか。

プログラミング: Jetson TX2上でのarmclangの評価

この前魔が差してJetson TX2を買っていたので評価ができる~。
が、割りと意味分からない感じだったので誰か教えてくれ。

評価方法

以下のテストプログラムをJetson TX2上で実行する。
ちなみにJetson TX2はCPUが2つついており(Cortex A-57, NVIDIA ual Denver) 性能の違うCPU同士の比較にならないようにsettaskによりCPU 0に固定して実行し、一応何回か実験して性能のあからさまな ばらつきがないかどうか確かめる。
10回実行したうち最も実行時間が短いものを選ぶ。

  • himeno bench (SMALL, MIDDLE)
  • drystone (LOOP回数をマクロ定義を変更)

比較コンパイラ

評価

実行時間(全て秒)

| -------- | himeno small (-Ofast) | himeno middle (-Ofast) | drystone (-Ofast) 
| gcc      | 4.21                  | 18.76                  | 2.73
| clang    | 6.48                  | 35.65                  | 2.90
| armclang | 3.78                  | 25.49                  | 2.85

ちなみにx86i7 6700@3.4GHzでhimeno middleをgccコンパイルしたら7秒切るくらいで実行が終わります。

感想

商用のコンパイラだと色々なコンパイラの解析・最適化情報(例えばどのループをベクトル化したのか・-Ofastならば計算精度を落とす最適化をどこに対して実行したのか) を出力してくれるのだけど、OSSコンパイラはあまりそこは力を入れていないのでむつかしい。

armclangの魅力はおそらくコンパイラ単体の1スレッド性能よりも aarch64環境でちゃんとしたBLAS, LAPACK, OpenMP, MPIなどが使えることだと思うので、せめてライブラリの評価をするべきな気がする。
が、なかなかその知見はないので辛いところ。