前にも書きましたが、自宅PCのCPUは完全にオーバースペックなので、BOINCをやっています。
基本はWCGで、先日のビデオカード買い換えでGPU計算もできるようになったため、Collatzも始めました。
GPUは思いのほか強力であり、日々凄い勢いでスコアが伸びていきます。
それは良いのですが、ビデオカードのファンの回転まで凄い勢いになります。
もはや、ちょっとした掃除機並の騒音です。
さらにケース内の気温も10度近く上がってしまい、怖くて24時間常時稼動させられません。
やむなく、手動操作で以下のような運用をしていました。
・WCG…24時間常時稼動
・Collatz…1:30~7:30のみ稼動、他は一時停止状態
しかし毎日毎日この操作を実施するのは面倒で、しかも止め忘れた時のリスクが大きいです。
なんとか自動化できないかと2chのBOINCスレで聞いてみた結果、コマンドラインでの制御方法を教えてもらえたので、自動化を試みました。
【参考サイト】
http://team2ch.info/PrimeGrid/#e09caf88
【手順】
1. Collatz一時停止用バッチファイルを作成
---
@echo off
SET URL_CLZ=http://boinc.thesonntags.com/collatz/
call :do_boinc %URL_CLZ% suspend
exit /b 0
:do_boinc
"C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2
goto :eof
---
2. Collatz再開用バッチファイルを作成
---
@echo off
SET URL_CLZ=http://boinc.thesonntags.com/collatz/
call :do_boinc %URL_CLZ% resume
exit /b 0
:do_boinc
"C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2
goto :eof
---
3. タスクスケジューラで、1.と2.を日次実行するよう指定
【トラブル】
1.と2.のバッチファイルが、単体で実行すれば問題なく動作するのですが、タスクスケジューラから起動したら動作しませんでした。
正確には、バッチファイルは起動するのですが、Collatzの停止・再開が実施されないのです。
色々試した結果、タスクスケジューラ起動の場合、環境変数"%ProgramFiles%"がセットされていないことがわかりました。
バッチファイルを以下のように書き換え、正しく動作するようになりました。
※ 先述のサンプルは修正後のものです。
修正前:
"%ProgramFiles%\BOINC\boinccmd" --project %1 %2
修正後:
"C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2
【結果】
GPUタスク制御の自動化に成功しました。
本当は、CPUのように使用率控えめで長時間稼動させられればベストですが…。
0 件のコメント:
コメントを投稿