Debian GNU/Linux 8.3で複数GPU稼働する際のBOINCからの除外設定

# Debian GNU/Linux 8.3で複数GPU稼働する際のBOINCからの除外設定 #

Debian GNU/Linux 8.3(jessie)でGeForceのカード挿してBOINCを稼働させています。

http://qiita.com/rltm/items/c3b9c0cf3eb6ad7ea6e6

この度、カードを増設して2枚のGPUに仕事を分担させることにしました。
PCIe x1に挿したカード(GT610)をBOINC専用にしてPCIe x16に挿したカード(GT430)を画面表示専用にします。
画面表示専用のカードをBOINCから除外します。

## lspciでの認識確認 ##

念のためそもそもちゃんと2枚認識しているか確認します。

```shell-session
$ lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 430] (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 610] (rev a1)
```

Linuxがちゃんと認識しているようです。

## BOINCでの認識確認 ##

BOINC ManagerのイベントログでBOINCが2枚認識しているか確認します。

```text
CUDA: NVIDIA GPU 0: GeForce GT 430 (driver version unknown, CUDA version 6.5, compute capability 2.1, 1023MB, 810MB available, 269 GFLOPS peak)
CUDA: NVIDIA GPU 1: GeForce GT 610 (driver version unknown, CUDA version 6.5, compute capability 2.1, 1024MB, 1012MB available, 156 GFLOPS peak)
OpenCL: NVIDIA GPU 0: GeForce GT 430 (driver version 340.96, device version OpenCL 1.1 CUDA, 1023MB, 810MB available, 269 GFLOPS peak)
OpenCL: NVIDIA GPU 1: GeForce GT 610 (driver version 340.96, device version OpenCL 1.1 CUDA, 1024MB, 1012MB available, 156 GFLOPS peak)
```

2枚ちゃんとBOINCも認識しているようです。

GT430をBOINCから除外したいので上記に表示されている番号(GPU **0**)を記憶しておきます。

## BOINCの除外設定(GPUカード単位での除外) ##

除外するGPUを/etc/boinc-client/cc_config.xmlファイルに設定していきます。

https://boinc.berkeley.edu/wiki/Client_configuration#Options

**ignore_nvidia_dev**を指定することで**GPUカード単位**で除外することが出来ます。

\<options\>から\</options\>までが追加した設定です。

```text
 <!--
 This is a minimal configuration file cc_config.xml of the BOINC core client.
 For a complete list of all available options and logging flags and their
 meaning see: https://boinc.berkeley.edu/wiki/client_configuration
 -->
 <cc_config>
   <options>
     <use_all_gpus>1</use_all_gpus>
     <ignore_nvidia_dev>0</ignore_nvidia_dev>
   </options>

   <log_flags>
     <task>1</task>
     <file_xfer>1</file_xfer>
     <sched_ops>1</sched_ops>
   </log_flags>
 </cc_config>
```


## BOINCの除外設定(プロジェクト単位での除外) ##

除外するGPUを**プロジェクトごと**に/etc/boinc-client/cc_config.xmlファイルに設定していきます。

https://boinc.berkeley.edu/wiki/Client_configuration#Options

**exclude_gpu**を指定することで**プロジェクト単位**で除外することが出来ます。

\<options\>から\</options\>までが追加した設定です。

```text
 <!--
 This is a minimal configuration file cc_config.xml of the BOINC core client.
 For a complete list of all available options and logging flags and their
 meaning see: https://boinc.berkeley.edu/wiki/client_configuration
 -->
 <cc_config>
   <options>
     <use_all_gpus>0</use_all_gpus>

     <exclude_gpu>
       <url>http://asteroidsathome.net/boinc/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://boinc.thesonntags.com/collatz/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://einstein.phys.uwm.edu/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://milkyway.cs.rpi.edu/milkyway/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://moowrap.net/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://boinc.fzk.de/poem/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://www.primegrid.com/</url>
       <device_num>0</device_num>
     </exclude_gpu>

     <exclude_gpu>
       <url>http://www.worldcommunitygrid.org/</url>
       <device_num>0</device_num>
     </exclude_gpu>
   </options>

   <log_flags>
     <task>1</task>
     <file_xfer>1</file_xfer>
     <sched_ops>1</sched_ops>
   </log_flags>
 </cc_config>
```

## BOINCの再起動 ##

除外した設定を反映するためにBOINCを再起動します。

```shell-session
# /etc/init.d/boinc-client restart
```

## 除外設定の確認 ##

BOINC Managerのイベントログで確認します。

### GPU単位で除外設定した場合 ###

除外したいGPUにignored by configと表示されていれば設定成功です。

```text
CUDA: NVIDIA GPU 0 (ignored by config): GeForce GT 430 (driver version unknown, CUDA version 6.5, compute capability 2.1, 1023MB, 810MB available, 269 GFLOPS peak)
CUDA: NVIDIA GPU 1: GeForce GT 610 (driver version unknown, CUDA version 6.5, compute capability 2.1, 1024MB, 1012MB available, 156 GFLOPS peak)
OpenCL: NVIDIA GPU 0 (ignored by config): GeForce GT 430 (driver version 340.96, device version OpenCL 1.1 CUDA, 1023MB, 810MB available, 269 GFLOPS peak)
OpenCL: NVIDIA GPU 1: GeForce GT 610 (driver version 340.96, device version OpenCL 1.1 CUDA, 1024MB, 1012MB available, 156 GFLOPS peak)
```

**0**番のGPUが除外できているようです。

### プロジェクト単位で除外設定した場合 ###

除外設定したプロジェクトごとに以下のメッセージが表示されていれば設定成功です。

```text
Config: excluded GPU.  Type: all.  App: all.  Device: 0
```

**0**番のGPUが除外できているようです。

## GPUの稼働率の確認 ##

必要であればnvidia-settingsもしくはnvidia-smiアプリでGPU Utilizationの負荷率を確認します。

BOINC用のGPUが100％近く稼働しており、画面表示用GPUが比較的落ち着いていれば成功です。