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
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