前回,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".
なんの問題もなく終了.