[NumPy] 패키지에 따라 달라지는 선형대수 라이브러리

in python •  4 years ago  (edited)

그동안 꼼꼼히 읽어 본 적이 없었는데, 이번에 NumPy 홈페이지에서 알게 된 재미있는 사실이다. 바로 NumPy 패키지마다 선형대수 라이브러리가 다르다는 것.
보통은 어느 걸로 하든 큰 차이가 없을 거라 하는데, 그래도 각 라이브러리의 차이점을 알아두는 게 아무래도 좋을 거고, 이게 때에 따라 중요할 수도 있다.

PyPI

먼저, PyPI(Python Packaging Index)를 통해 설치하는 NumPy 휠에는 OpenBLAS 선형대수 라이브러리들이 적용된다. 이 라이브러리들은 휠 안에 내장되기 때문에 휠 자체가 좀더 무겁게 되는데, 만약 여기에 SciPy와 같이 OpenBLAS가 내장된 휠을 또 설치하면 같은 라이브러리들을 그만큼 또 얻게 된다. 그만큼 디스크에 부담이 간다.

conda

conda 채널상의 NumPy인텔 MKL에 의존하는데, conda를 통해 NumPy를 설치할 경우 MKL은 별도의 패키지로 유저 환경에 설치된다. MKL 패키지는 상기 OpenBLAS보다 좀더 크지만, 좀더 빠르고 강하다.
(인텔 MKL은 오픈 소스가 아니므로, conda로 설치한 NumPy가 사용된 애플리케이션을 재배포하면 이슈가 발생할 수 있으니 주의.)

conda-forge

이 경우엔 NumPy가 BLAS라는 모조 패키지에 의존하고, 이 경우 이 BLAS 패키지는 자체 라이브러리 안에 함께 설치된다. 기본값은 OpenBLAS 인데, MKL 이나 BLIS 등이 될 수도 있다.



그간 conda 것만 가지고 있다가 이번에 의도찮게 PyPI의 NumPy도 설치하게 되었는데, 이참에 둘 다 써보게 되겠다. 둘 차이를 내가 느낄 수 있으려나..ㅋㅋ 두고 보기.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

선형대수 라이브러리가 패키지에 따라 다르게 들어가는건 신기하네요..
생각해보면 상황 따라 그럴 수도 있겠다 싶기도 하고..
#codeonsteem 태그 사용하시면 종종 큐레이션 대상이 될 수 있는 것 같습니다.

그러게요, 저도 이번에 우연히 알게 되어 재밌었어요:)
태그 알려주셔서 감사합니다, 추가해 봐야겠네요!ㅎㅎ