Windows + 64bit Cygwin 環境で 32bit OpenBLAS をビルドしてみた

前回,OpenBLAS の 64bit ビルドを行ったが,ATLAS との比較をするために 32bit ライブラリもビルドすることにした.

とりあえず make – 失敗

例によって,まずは一番基本的なビルドコマンドを実行.

$ make BINARY=32 2&>1 | tee make.log

...

level3_thread.c: In function 'inner_thread':
level3_thread.c: In function 'inner_thread':
level3_thread.c:533:1: error: unrecognizable insn:
 }
 ^
level3_thread.c:533:1: error: unrecognizable insn:
 }
 ^
((insninsn  194 195193  195194  36196  (36set  ((regset: SI( reg298):
SI         298()symbol_ref
:        SI( ("symbol_refSwitchToThread@0:")SI [flags  ("0xSwitchToThread@0441")] [flags 0x <441function_decl]  <0xfunction_decl6ffff6ca200  0xSwitchToThread>6ffff6ca200) )SwitchToThread>) )level3_thread.c: 356level3_thread.c :-3561 
-    1
     (nil) )(nil)
)
level3_thread.c:533:1: internal compiler error: in extract_insn, at recog.c:2154
level3_thread.c:533:1: internal compiler error: in extract_insn, at recog.c:2154
Please submit a full bug report,
with preprocessed source if appropriate.
Please submit a full bug report,
with preprocessed source if appropriate.
See See <http://gcc.gnu.org/bugs.html><http://gcc.gnu.org/bugs.html> for instructions.
 for instructions.
Makefile:481: recipe for target 'sgemm_thread_nn.o' failed
make[1]: *** [sgemm_thread_nn.o] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:484: recipe for target 'sgemm_thread_nt.o' failed
make[1]: *** [sgemm_thread_nt.o] Error 1
make[1]: Leaving directory '/cygdrive/c/Users/haru/work/OpenBLAS-0.2.8-mingw32/driver/level3'
Makefile:134: recipe for target 'libs' failed
make: *** [libs] Error 1

64bit の時とは場所が違うが,同じく Win32 スレッド周りでエラーが発生.というかこれ,OpenBLAS じゃなくて Cygwin のエラーなのでは…….

MinGW を使ってビルド

というわけで,例によって MinGW でビルドすることに.今回は 32bit ビルドなので,MinGW-w64 ではなくオリジナルの MinGW を指定する(MinGW-w64 は -m32 を無視するので,32bit ビルドはできない).

$ make BINARY=32 \
CC=/usr/bin/i686-pc-mingw32-gcc \
FC=/usr/bin/i686-pc-mingw32-gfortran 2>&1 \
| tee make-mingw32.log

...

 OpenBLAS build complete.

  OS               ... WINNT             
  Architecture     ... x86               
  BINARY           ... 32bit                 
  C compiler       ... GCC  (command line : /usr/bin/i686-pc-mingw32-gcc)
  Fortran compiler ... GFORTRAN  (command line : /usr/bin/i686-pc-mingw32-gfortran)
  Library Name     ... libopenblas_nehalemp-r0.2.8.a (Multi threaded; Max num-threads is 8)

To install the library, you can run "make PREFIX=/path/to/your/installation install".

なんの問題もなく終了.

コメントを残す

メールアドレスが公開されることはありません。