도커에서 BOINC@HOME을 실행하는 방법. GPU는 사용하는 것으로 한다.
sudo docker run --privileged --dns=8.8.8.8 -it --gpus all --name boinc debian
컨테이너 기본 설정은 평소와 같으나 repo에 contrib을 추가한다. 수작업으로 해줘도 되지만 편하게 하려면 apt-add-repository를 이용하면 된다. 사용하려면 software-properties-common 를 설치해야 한다.
echo 'Acquire::http::Proxy "http://rcc.work:3142";' > /etc/apt/apt.conf
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
echo 192.168.126.37 rcc.work >> /etc/hosts
apt -y update && apt -y upgrade
apt -y install software-properties-common
apt-add-repository contrib
apt -y update && apt -y upgrade
apt -y install boinc boinc-client-nvidia-cuda
컨테이너 시작시에 boinc을 시작하게 하기 위해서 .bashrc 에 다음의 내용을 추가한다. 작업 디렉토리는 원하는 것으로 해도 되지만 다른 도커 이미지 설명을 보면 /var/lib/boinc을 이용하는 것 같다. 그래서 이를 이용하도록 한다. 이것을 지정하기 않으면 실행 디렉토리를 기본으로 하여 다시 작업 파일을 받아오기 때문에 중복이 된다.
cd /root
boinc --dir /var/lib/boinc &
이 다음부터는 컨테이너에서 해도 되고 밖에서 명령어를 실행시켜 줘도 된다.
우선 Project를 추가하기 위해서는 account key를 알아야 한다.
$ boinccmd --lookup_account https://einstein.phys.uwm.edu/ ID PASSWORD
프로젝트를 추가한다.
$ boinccmd --project_attach https://einstein.phys.uwm.edu/ account_key
처음에 파일 받아오는데 시간이 걸리므로 느긋하게 기다리면 된다.
주소를 입력할 때 https로 해줘야 한다. http로 하면 2번 등록되어있다는 메세지가 계속 생성된다.
이렇게 여러 번 시도해 보았는데 CPU로 계산은 할 수 있어도 GPU는 계산을 하지 못했다. OpenCL과 관련된 문제인 것 같았는데 해결책을 찾을 수 없었다. 그래서 boinc 의 docker 이미지를 이용했다.
sudo docker run -d \
--gpus all \
--name boinc2 \
--net=host \
--pid=host \
--dns=8.8.8.8 \
-v /opt/appdata/boinc:/var/lib/boinc \
-e BOINC_GUI_RPC_PASSWORD="123" \
-e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \
boinc/client:nvidia