libatlas의 사용
필자의 시스템에서는 libatlas의 성능이 좋았다. libatlas를 설치하는 방법은 다음과 같다. 먼저 설치해야 할 libatlas를 찾는다.
$ sudo apt-cache search --names-only libatlas
libatlas-base-dev - Automatically Tuned Linear Algebra Software, generic static
libatlas-cpp-0.6-1 - The protocol library of the World Forge project - runtime libs
libatlas-cpp-0.6-1-dbg - The protocol library of the World Forge project - debugging libs
libatlas-cpp-0.6-dev - The protocol library of the World Forge project - header files
libatlas-cpp-doc - The protocol library of the World Forge project - documentation
libatlas-dev - Automatically Tuned Linear Algebra Software, C header files
libatlas-doc - Automatically Tuned Linear Algebra Software, documentation
libatlas-test - Automatically Tuned Linear Algebra Software, test programs
libatlas3gf-base - Automatically Tuned Linear Algebra Software, generic shared
그리고 필요해 보이는 패키지들을 설치한다. 보통 ‘-base’나 ‘-dev’로 되어 있는 패키지를 설치하면 된다.
$ sudo apt-get install libatlas-base-dev libatlas-dev libatlas3gf-base
우분투에서는 특정 기능을 제공하는 구현체를 2개 이상 설치할 경우 특정 구현체를 자동으로 선택하며, 어떤 구현체를 사용하는지는 우분투에 사전에 정의된 순서를 따른다.
따라서 BLAS의 구현체 중 하나인 libatlas를 설치했을 때 기존의 BLAS를 제공하는 라이브러리에 비해 libatlas의 우선순위가 높다면 libatlas가 자동으로 선택되지만, 반대로 기존 구현체가 계속해서 우선되어 사용될 수도 있다.
이 경우 다음과 같이 우분투 명령 중 하나인 update-alternatives를 사용해 원하는 구현체를 선택한다(우분투 13.04 이후 버전에서는 liblapack.so.3gf 대신 liblapack.so.3을 지정하기 바란다).
$ sudo update-alternatives --config liblapack.so.3gf
There are 2 choices for the alternative liblapack.so.3gf (providing /usr/lib/liblapack.so.3gf).
Selection Path Priority Status
------------------------------------------------------------
+ 0 /usr/lib/atlas-base/atlas/liblapack.so.3gf 35 auto mode
1 /usr/lib/atlas-base/atlas/liblapack.so.3gf 35 manual mode
2 /usr/lib/lapack/liblapack.so.3gf 10 manual mode
Press enter to keep the current choice[*], or type selection number:
$
위의 결과에서는 atlas 디렉터리에 있는 liblapack.so.3gf가 이미 선택되어 있으므로 아무런 숫자를 입력하지 않고 엔터를 입력해 종료했다. 다음으로 libblas.so.3gf 역시 선택해준다(우분투 13.04 이후 버전에서는 libblas.so.3gf 대신 libblas.so.3을 지정하기 바란다).
$ sudo update-alternatives --config libblas.so.3gf
There are 2 choices for the alternative libblas.so.3gf (providing /usr/lib/libblas.so.3gf).
Selection Path Priority Status
------------------------------------------------------------
+ 0 /usr/lib/atlas-base/atlas/libblas.so.3gf 35 auto mode
1 /usr/lib/atlas-base/atlas/libblas.so.3gf 35 manual mode
2 /usr/lib/libblas/libblas.so.3gf 10 manual mode
Press enter to keep the current choice[*], or type selection number:
$
선택을 마치면 벤치마킹 프로그램을 다시 실행해 실행 속도의 향상을 검토한다.