2016-07-29 3 views
3

최근까지 np.dot (A, B)와 같이 numpy 메소드를 사용했을 때까지는 단일 코어 만 사용되었습니다. 그러나, 오늘부터 내 리눅스 머신의 모든 8 코어가 문제가되고있다.Numpy가 갑자기 모든 CPU를 사용합니다.

최소한의 작업 예 :

import numpy as np 
N = 100 

a = np.random.rand(N,N) 
b = np.random.rand(N,N) 

for i in range(100000): 
    a = np.dot(a,b) 

내 다른 노트북에 그것은 단일 코어에 모두 잘 작동합니다. 이것은 새로운 라이브러리로 인해 발생할 수 있습니까?

오늘 아침에 저는 pipl을 통해 matplotlib와 cairocffi를 업데이트했지만 그게 전부입니다.

단일 코어로 돌아가는 방법에 대한 아이디어가 있으십니까?

편집 :

np.__config__.show() 

을 실행

나는 다음과 같은 출력

openblas_info: 
    libraries = ['openblas', 'openblas'] 
    define_macros = [('HAVE_CBLAS', None)] 
    language = c 
    library_dirs = ['/usr/local/lib'] 
openblas_lapack_info: 
    libraries = ['openblas', 'openblas'] 
    define_macros = [('HAVE_CBLAS', None)] 
    language = c 
    library_dirs = ['/usr/local/lib'] 
lapack_opt_info: 
    libraries = ['openblas', 'openblas'] 
    define_macros = [('HAVE_CBLAS', None)] 
    language = c 
    library_dirs = ['/usr/local/lib'] 
blas_mkl_info: 
    NOT AVAILABLE 
blas_opt_info: 
    libraries = ['openblas', 'openblas'] 
    define_macros = [('HAVE_CBLAS', None)] 
    language = c 
    library_dirs = ['/usr/local/lib'] 

답변

2

numpy 멀티 스레드 openBLAS 라이브러리에 연결되어 있기 때문에이 수를 얻을. 같은 스레딩 선호도를 설정하는 글로벌 환경 변수를 설정하십시오 :

export OPENBLAS_MAIN_FREE=1 

# Now run your python script. 

다른 해결 방법은 ATLAS 대신 OpenBLAS 사용하는 수. 자세한 내용은이 게시물을 참조하십시오 (https://shahhj.wordpress.com/2013/10/27/numpy-and-blas-no-problemo/). 이 게시물은 시도해 볼 가치가있는 다른 해결 방법을 제시합니다.

+0

감사합니다. 리눅스 셸에서 export 명령을 실행하고 python으로 test.py를 호출하여 코드를 호출했습니다. 그러나 그것은 아무 것도 바뀌지 않았습니다. 어떤 도움이된다면, np .__ config __. show()로 답을 갱신했습니다. – physicsGuy

+0

OS 모듈을 사용하여 선호도를 설정해보십시오. 'os.system ("taskset -p 0x1 % s"% os.getpid())'와 같은 코드를 실행 한 다음 코드를 실행하십시오 (참고로 링크 된 게시물에 있습니다). –

+0

다중 처리가 실제로 문제가되는 경우 openBLAS 대신 ATLAS를 사용해 볼 수도 있습니다. 이것은하기 쉽습니다. numB를 openBLAS 대신 ATLAS를 사용하는 방법에 대한 자세한 내용은 게시물을 참조하십시오. –

0

루트 액세스 권한이 있다고 가정하면 Pankaj Daga의 답변은 적절합니다.

제 경우에는 문제를 해결하기 위해 밝혀진 로컬 numpy 버전을 다시 설치했습니다.

관련 문제