最適化問題に対する超高速&安定計算

大規模最適化問題、グラフ探索、機械学習やデジタルツインなどの研究のお話が中心

NetWalker で最適化 その2

2009年12月13日 05時16分18秒 | Weblog
ARM 用の gcc コンパイラはデフォルトで浮動小数点演算に対してソフトウェアエミュレーションを行うバイナリを生成する。以前の ARM チップにはハードウェアで浮動小数点演算を行う機能が無かったので、このような設定になっている。しかし、NetWalker の ARM Cortex-A8 には浮動小数点ユニットが搭載されているので(NEON : 64/128ビット・ハイブリッドSIMDアーキテクチャ)、これを使うようにする。この場合では、-mfpu=neon -mfloat-abi=softfp というオプションを make 時に付ける。
glpk では、浮動小数点演算が少ないのでそれほど差が無いが、SDPA では随分と性能差が見られる。

1:エミュレーション : コンパイルオプション無し
2:NEON 使用 : -mfpu=neon -mfloat-abi=softfp あるいは -mfpu=vfp -mfloat-abi=softfp

○ソフトウェア1 : glpk 4.40
問題 stein45
1: エミュレーション : 14m40s
2: NEON : 11m5s

○ソフトウェア2: SDPA 7.3.1 + LAPACK/BLAS 3.2.1
問題 mcp124-1
1: エミュレーション: 19.7s
2: NEON : 7.2s
コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« NetWalker で最適化 その1 | トップ | NetWalker で最適化 その3 »
最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
Unknown (後藤)
2009-12-13 07:18:03
Neonは IEEE をフルサポートしていない(3DNOW のような感じ)ので、ARMでは使用を推奨していないはずです。NaN, SubNormal 数が含まれる場合には注意が必要です。

返信する
Unknown (後藤)
2009-12-13 07:31:41
それから使用するユニットは Neon ではなくて VFP だと思います。性能が悪いですが、A9 になるともう少しマトモになるらしいです。
返信する
Unknown (藤澤)
2009-12-13 18:51:19
-mfpu=neon と -mfpu=vfp の両方を使ってみましたが、前者の方がほんのわずかだけ速いようです。SDPA では両者で数値誤差はありませんでした。ですので、安全のため後者でも良いと思います。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Weblog」カテゴリの最新記事