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:
    $
    

    선택을 마치면 벤치마킹 프로그램을 다시 실행해 실행 속도의 향상을 검토한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.