SBCL을 OSX에서 실행할때 멀티쓰레딩 켜기.

Posted on Feb 25, 2017

SBCL은 멀티쓰레딩을 잘 지원하는 커먼리습 컴파일러이지만, 공식사이트에서 제공하는 리눅스 바이너리가 아니라 OSX 바이너리는 멀티쓰레딩이 꺼져서 컴파일되어있다.

http://www.sbcl.org/manual/#Threading

요건 자기 리습에서 *features* 을 평가해서, 리스트에 :threading, :sb-thread 같은 키워드를 포함하는지 확인해보면 알 수 있다.

어쨌든 지원하지 않을 경우에, 컴파일을 다시 해야하는데, 우선 준비물은 GNU CLISP 같은 여기저기서 잘굴러가고 적당히 설치해서 부트스크래핑에 이용 가능한 커먼리습 컴파일러를 준비한다.

다음 포스트를 참고해서 작업해봤다.:

http://haminhvuong-blog.tumblr.com/post/22109095116/compile-sbcl-with-multi-thread-enabled-on-os-x

create customize-target-features.lisp with content

(lambda (features)
      (flet ((enable (x)
               (pushnew x features))
             (disable (x)
               (setf features (remove x features))))
        ;; Threading support, available only on x86/x86-64 Linux, x86Solaris
        ;; and x86 Mac OS X (experimental).
        (enable :sb-thread)))

그리고 다음의 커맨드들로 빌드하고 설치 끝.

# time sh make.sh --with-sb-thread --prefix=/Users/jhyun/local/sbcl-1.3.14-amd64-osx+thread
# sh install.sh

SBCL 소스의 INSTALL 파일을 한번 읽어보는것도 좋음.