암드해킨에서 MATLAB 쓰기
- gtrfxdsp
- 775
- 12
gtrfxdsp님의 기기정보
암드해킨에서 MATLAB을 설치해서 쓰려면 다음의 문제와 마주하게 됩니다.
1) libiomp5.dylib에서 에러 발생하여 crash (memcpy/memset 관련)
Intel compiler로 컴파일된 open mp5의 dynamic library (shared library) 입니다. 이 라이브러리 안에 인텔 CPU의 모델에 따라 구분되어 구현된 memcpy/memset 함수가 있는데 호출될 때 인텔 씨퓨가 아니면 crash 합니다.
해결방법은 다음과 같이 하여 open mp library를 설치하고,
brew install libomp
설치된 open mp library (libomp.dylib)는 다음 폴더에 위치하게 됩니다.
/usr/local/Cellar/libomp/(버전넘버)/lib/
이것을 /Application/MATLABxxxx/sys/os/maci64에 "libiomp5.dylib"으로 복사 합니다. (혹은 첨부된 파일 다운 받아서 복사하시면 됩니다).
일단 MATLAB이 떠오르는 광경은 볼 수 있습니다. demo 같은 것들도 문제 없이 돌아갑니다.
2) mkl.dylib 문제
MATLAB이 정상적으로 뜨는 것을 볼 수 있었지만, 그 간단한 행렬곱도 잘 안되고 eigenvalue/SVD 같은 것도 구할 수가 없습니다. BLAS/LAPACK에 있는 함수들이 모두 intel CPU용으로 만들어진 intel mkl을 쓰도록 되어있기 때문입니다. 또는 이들 연산/함수를 실행하면 mllapack.dylib 또는 refblas.dylib을 못 찾겠다고 합니다.
문제의 mkl.dylib 은 다음 위치에 있습니다.
/Application/MATLABxxxx/bin/maci64
이것은 인텔 CPU용으로 컴파일된 BLAS/LAPACK 함수들이 들어있는 dynamic library 입니다. 이 안에 있는 함수가 암드해킨에서 실행되면 MATLAB은 또 죽게 됩니다.
이 문제는 다음과 같이 해결합니다.
openBLAS를 사용하면 다행스럽게도 암드씨퓨(젠/불도저/...) 용으로 최적화된 BLAS/LAPACK 라이브러리를 쓸 수 있습니다. 직접 가져다 빌드할 수도 있지만, brew를 이용해서 open blas를 설치해 줍니다. (용량이 제법 커서 붙이지 못했습니다.) 물론 쉽게 구할 수 있는 LAPACK을 brew로 install하거나 shared library를 별도로 빌드해서 가져다놓아도 됩니다. 여러 가지 라이브러리를 최적화 옵션을 켜고 꺼고 해가며 비교해봐도 인텔 mkl 라이브러리보다 다 느린 결과를 보여주고 그 외의 라이브러리들은 거의 차이가 없는 성능을 보여줍니다.
fft 라이브러리의 경우는 mkl을 사용하지 않고 fftw3를 사용하는 관계로 실행하면서 죽지도 않고 성능차이는 별로 보이지 않습니다.
brew install openblas
이렇게 설치된 openblas는 /usr/local/Cellar/openblas 안에 있습니다. 그안으로 찾아들어가면 lib 폴더 안에 libopenblasp-r(버전넘버).dylib이 있을텐데 이것을 mkl.dylib으로 해서 /Application/MATLABxxxx/bin/maci64에 복사해 넣으면 됩니다. 이때 해당 폴더에 mllapack.dylib 혹은 refblas.dylib가 없다면 symbolic link를 만들어 좀전에 카피해넣은 mkl.dylib에 연결해 줍시다.
또는 openBLAS/FFTW를 받아와서 최적화 옵션을 주고 빌드해도 됩니다. znver2로 빌드했을 때 LU/Sparse 성적은 인텔 CPU대비 나쁜 편은 아닙니다. (이상하게 2D/3D 점수는 인텔 내장 GPU만도 안나옵니다만).
이제 MATLAB으로 행렬 연산과 관련 함수는 모두 실행할 수 있습니다. 혹시 제대로 동작하지 않는 함수가 있다면 추가로 빌드해서 붙여넣으면 됩니다 (^^).
gtrfxdsp
댓글 12
❝AMD 해킨에서 Intel MKL 의존 앱 사용 (e.g. Mathematica, MATLAB 등)❞
❝암드 해킨....다빈치 리졸브가 실행이 안된다!! (Matlab도 같은 문제..)❞
가성비 시스템을 누리기 위한 노력이 대단하십니다! ^^ 어쨌든 문제를 이해하고 해결 방안을 고민할 수 있는 것도 능력이라 생각되어지네요!
저는 말씀하신 내용의 0.1도 이해하진 못했지만, 어쨋든 가장 마지막줄에 있는 문구가 감동입니다. "~~~~ 는 모두 실행할 수 있습니다."
마치 어드밴처 영화를 한편 본 듯한 과정! 박수를 보내드립니다! 수고많으셨네요~^^