2014-02-25 180 views
3

我想並行化一些Python代碼,它廣泛使用NumPy與Python多處理包。不幸的是,如here所述,Apple提供的默認線性代數庫(Accelerate/Veclib)不能並行運行。所以我試圖在安裝NumPy時連接一個備用LAPACK/BLAS,希望我的代碼可以並行化而不會崩潰!在Mac OS X上安裝numpy替代LAPACK/BLAS的小牛隊

我下載並編譯了一個替代LAPACK/BLAS。然後,按照說明here,我做了:

export LAPACK=/usr/local/Cellar/lapack/3.4.2/lib/liblapack.dylib 
export BLAS=/usr/local/Cellar/lapack/3.4.2/lib/libblas.dylib 
export ATLAS=None 
pip install numpy 

哪個運行良好。但是,如果我跑在Python

numpy.show_config() 

,我得到

atlas_threads_info: 
    NOT AVAILABLE 
blas_opt_info: 
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate'] 
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers'] 
    define_macros = [('NO_ATLAS_INFO', 3)] 
atlas_blas_threads_info: 
    NOT AVAILABLE 
openblas_info: 
    NOT AVAILABLE 
lapack_opt_info: 
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate'] 
    extra_compile_args = ['-msse3'] 
    define_macros = [('NO_ATLAS_INFO', 3)] 
atlas_info: 
    NOT AVAILABLE 
lapack_mkl_info: 
    NOT AVAILABLE 
blas_mkl_info: 
    NOT AVAILABLE 
atlas_blas_info: 
    NOT AVAILABLE 
mkl_info: 
    NOT AVAILABLE 

表明NumPy的仍在使用蘋果的LAPACK/BLAS!事實上崩潰仍然很多。任何人都可以幫我嗎?

+0

您是否安裝了Fortran編譯器g77或gfortran?我沒有看到和你所看到的幾乎相同的內容 - 使用Anaconda進行安裝。 –

+0

是的,我已經安裝了gfortran。 –

+0

爲了更正你的問題,Apple提供的默認線性代數庫「並行運行」就好了;問題是在fork-without-exec的兩端調用它們(我應該注意,沒有真正的理由期望*會工作)。 –

回答

0

我不知道如果這些將是任何幫助: https://github.com/obspy/obspy/wiki/Notes-on-Parallel-Processing-with-Python-and-ObsPy

Multiprocessing with numpy makes Python quit unexpectedly on OSX

我記得看到一些關於在Mac論壇LAPACK/BLAS一樣好,但還沒有定位,但作者似乎知道她在說什麼。

+0

謝謝,這有助於指向正確的答案,即安裝OpenBLAS並在安裝NumPy時手動編輯site.cfg文件(請參閱[鏈接](http://stackoverflow.com/questions/11443302/compiling-numpy-with-openblas-integration))。 –