IT pass HikiWiki - [Memo2008]BOINCのテスト(納多) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

以下の情報は古い可能性があります.
最新の情報は
((<URL:https://epa.scitec.kobe-u.ac.jp/~gridcomp/hiki/hiki.cgi>))
をご覧ください.

昔の作業ログを編集中.

{{toc_here}}


= 080814 (BOINC クライアントの利用法)

BOINC を使ってみる.
まずはクライアントを使ってみる.
以下のページを参照のこと.

BOINCに参加して世界史に名を残そう!
((<URL:http://www.geocities.jp/asamayamanobore/BOINC/boinctop.html>))


== BOINC クライアントの導入

ここでは手元のノート PC にクライアントを導入してみる.

((<URL:http://boinc.berkeley.edu/download.php>))
よりクライアントをダウンロード.
バージョンは 5.10.45 であった.

インストーラを起動し, 他のソフトと同じように進んでいく.
Setup Type は推奨されている 'Single-User Installation' を選択.

試験的に使うだけなので, スクリーンセーバとログオン時起動については
チェックボックスを外しておく.

インストール終了とともに起動させる.

== プロジェクトに参加する

'Attach to project' のウィザードが出る.
'Choose a project' の画面が出る. 参加可能なプロジェクトが一覧されている.
ここでは 'Tanpaku' を選択してみる.
すると「プロジェクトの URL」が自動的に埋められる.

サーバと通信する. 少し待つ.

「現在このプロジェクトは新規登録を受け付けていません」とのこと.

仕方がないので別を探す.
画面戻って, こんどは SETI@home を選択する.

初回参加時はアカウントを取得する必要がある.
「いいえ、新しく参加します」にチェックを入れる.

メールアドレスとパスワードを入力する.

サーバと通信する. 少し待つ.

「このプロジェクトに計算機を参加させることに成功しました」と表示される.

== 設定を変更する

インストール直後の画面 (Simple View) の場合,
画面一番下に 'Preferences' を選択する.

"I want to customize my preferences for this computer only." にチェックを入れる.

あまり多く資源を使われたくないのと, ノート PC で熱が心配ということもあって
disk は 10 GB -> 1 GB, CPU は 100 % -> 30 % に変更した.

== 詳しい計算状況を知る

詳しい計算状況を知りたい場合は, 'Advanced View' を選択する.




= 080815 (サーバの導入. 失敗)

この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.

== サーバを使う練習

BOINC in Japanese
((<URL:http://boinc.oocp.org/indexj.php>))

から原文としてリンクされていた
公式 Wiki とおぼしきページ

Computing with BOINC
((<URL:http://boinc.berkeley.edu/trac/wiki/ProjectMain>))

を参考にした.
上から順に読んでいってみる.

Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))

によると,
VMWare player 上で動く 'BOINC virtual server' が配布されているとのこと.
リンク先の

The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))

のページから

((<URL:http://boincdl.ssl.berkeley.edu/dl/debian-40r0-boinc-server_15762.zip>))

をダウンロードし(約 800 MB あった),
解凍し, VMWare player 上で起動してみる.
仮想マシン名は 'debian-40r0-boinc-server' である.

この仮想マシン, なんだか変である.
まず, 最初の起動ではいきなり boincadm ユーザでログインされた状況である.
上で ls などのコマンドを実行された跡もある.

VMWare のダイアログでデバイスが見つからないというエラーも.

ネットワークがつながらないので apt-get もできない.

ひとまずログアウトする.

The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))

のページに戻り, 言われるとおりに環境を修正してみる.
ここでは Bridged Ethernet の設定を見ている.

まず root でログインする. ちなみに初期パスワードは上記の
ページ内に書いてある.

以下のファイルを削除せよとのこと.

  /etc/udev/rules.d/rules.d/z25_persistent-net.rules

中をのぞいてみると, ネットワークに関するデバイスの MAC アドレスらしきもの
が書いてある.
ちなみに less が入っていないので不便. 仕方ないので more で読んだ.

  # cd /etc/udev/rules.d/rules.d/
  # mv z25_persistent-net.rules z25_persistent-net.rules.org

とりあえずこれで削除したことにする.

ping を外に向けて打ってみたが, "unknown host" とメッセージが出る.
名前が解決できないもよう.
/etc/resolv.conf にて nameserver が知らない IP アドレスになっている.

vi で編集したところ, うまく保存できない. 終了すらできない.
"E20: Mark not set" というメッセージが画面下部に出るのみ.

キーボードの設定が英語になっていたため, ':' を入力したつもりが
別の文字になっていたのでコマンドが通らなかったことが判明.

/etc/network/interface について,
現時点では自宅で DHCP でつないでいるので

  #iface eth0 inet dhcp

のコメントアウトを外した.
もちろん, 実際に運用する際は固定 IP であったほうがよい.
(ページにもあるが, IP アドレスの変更によりクライアントが混乱するため)

他の設定については, 今は固定 IP ではないため, 消去する).

うまくつながらない.

ネットワークの勉強が足りないようだ.
参照している

The BOINC server virtual machine
((<URL:http://boinc.berkeley.edu/trac/wiki/VmServer>))

のページではネットワークの設定について以下が挙げられていた.

Debian Reference Chapter 10 - Network configuration
((<URL:http://www.debian.org/doc/manuals/reference/ch-gateway.en.html>))

一般的すぎる, かつ量が多すぎるが,
ネットワークの勉強ということで読むことにする (実習の復習もせねば).



ちなみに自分で一から作る場合は, 以下が参考になりそうだ.
依存するアプリケーションのリストなどもある.
また, Debian 4.0 での実行例でもある.

Setting up a BOINC server
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))



= 080817 (編集中)

編集中.




= 080819 (サーバの導入. 失敗)

この日の作業は後に繋がらないので, 読み飛ばすことをお薦めする.

== QuickStart

Quick Start をやってみる.

Quick Start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))

VMWare player 上で debian-40r0-boinc-server を起動.
ユーザ boincadm でログイン.

  $ cd ~/boinc/tools
  $ ./make_project --url_base http://127.0.0.1 --test_app test

質問には全て 'y' で答えた.

途中でエラーが出たようだが, そのまま進んでみる.

~/project 以下にファイル, ディレクトリができている.

  $ cd ../../projects/test

以下のコマンドが打てない (test.httpd.conf がない)
  $ sudo cat test.httpd.conf >> /etc/apache2/httpd.conf



== apache2 の導入練習

手元マシン内の cygwin 上で構築練習してみる.

(本当は研究室の自分のマシンや VMWare 上の Ubuntu がよいのだが,
このときは利用できない環境にあった)

「apache 入門」で検索.

Debian Apache入門
((<URL:http://www2.i-e-c.co.jp/intro0.html>))

cygwin 上で apache のパッケージをインストールする.

サービスを起動しようとしたところ /etc/init.d が存在しない.
cygwin 特有の事情か.

「apache cygwin」で検索.

Cygwin 環境で Apache を動かす
((<URL:http://www.asahi-net.or.jp/~pm5m-on/it/net/apache/>))

  $ cd /etc/apache2
  $ cp httpd.conf httpd.conf.org

httpd.conf の

  #ServerName www.example.com:80



  ServerName localhost:80

に書き換える.

  $ /usr/sbin/apachectl2 start
  /usr/sbin/apachectl2: line 78:  1568 Bad system call         $HTTPD -k $ARGV

  $ /usr/sbin/httpd2 -k start
  Bad system call

手詰まり.


手動でインストールしてみる.
本家のドキュメントを参考にした.

Apache HTTP サーバ バージョン 2.2 ドキュメント - Apache HTTP サーバ
((<URL:http://httpd.apache.org/docs/2.2/>))

  $ cd /usr/local
  $ mkdir src
  $ cd src
  $ wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.9.tar.gz
  $ tar zxfv httpd-2.2.9.tar.gz
  $ cd httpd-2.2.9
  $ ./configure --prefix=/usr/local/apache2
  $ make
  $ make install

  $ cd /usr/local/apache2/conf
  $ cp httpd.conf httpd.conf.org

httpd.conf の

  #ServerName www.example.com:80



  ServerName localhost:80

に書き換える.

  $ cd ../bin
  $ ./apachectl -k start
  httpd: bad user name daemon

httpd.conf の

  User daemon
  Group daemon



  User noda
  Group noda

に書き換える. これも cygwin 特有の事情.

  $ ./apachectl -k start
  httpd: bad group name noda

どうすればよいか?

「apache bad user name」で検索.

LunaTear: CygwinにApache2→失敗
((<URL:http://lunatear.net/archives/000331.html>))

を参考に,

  Group SYSTEM

とする.

  $ ../bin/apachectl -k start

特にメッセージなし.

Firefox で http://localhost/ を開いても開けない.
cygwin 上で w3m を使って開いても開けない (Google などは開けた).



= 080820 (参考文献)

== 参考文献

「BOINC 研究」で検索したところ,
BOINC を扱った論文の日本語訳のページを発見したのでメモ.

BOINC: A System for Public-Resource Computing and Storage (in Japanese)
((<URL:http://boinc.oocp.org/grid_paper_04.html>))


「2.1 BOINC の目標」より一部引用.
つまり, 実現しているかどうかは分からない.


BOINC は、科学研究者がほどほどのコンピュータスキルだけで、大きなパブリック・リソース・コンピューティングのプロジェクトを立ち上げ、運用ができるようにします。 立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできるようにするのが目標です。 BOINC を使って作ったプロジェクトのサーバは、1台ですませることも可能です。 そのサーバで使うソフトウエアは、普及しているオープンソースのソフトウエア (Linux, Apache, PHP,MySQL, Python)です。



「科学研究者が」
「立ち上げ初期に必要な仕事は1週間程度、保守には、週あたり1時間程度でできる」
「のが目標」

というところが本当なら素晴らしいと思う (プロジェクトを作る側として).




= 080821

== 基本方針

しばらくは研究室の自分のマシンだけでテスト.
以下の役割を持たせることにする.

* fermat (CPU: Core 2 Duo E6750 (2.66 GHz), HDD: 500 GB, OS: debian Linux 4.0)
  * サーバとしてテスト
* mersenne (CPU: Athlon 64 3800+ (2.4 GHz), HDD: 80 GB, OS: debian Linux 4.0)
  * クライアントとしてテスト

ちなみに理由は HDD の大きさ.
計算結果ファイルが集結するサーバの HDD は大きいほうがよいだろう.



== BOINC サーバ構築

fermat にサーバを構築する.
以下のページ (BOINC 本家の Wiki) を参考にしながら作業する.

ServerIntro - BOINC - Trac
Cookbook for Debian 4.0
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-debian40>))

偶然にも debian 上での構築方法. スムーズに作業できることを期待.


=== パッケージ導入

ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro#cookbook-prereq>))

を参考に, apt-get install でパッケージを導入する.

実験として, パッケージにバージョン名らしき数字が記入してあるものは省略した.
たとえば automake1.9 を入れるように書いてあったが,
automake と指定した. すると automake1.10 が入った.

* サーバ, クライアントに共通で必要なパッケージ

  m4
  make
  autoconf
  automake
  gcc
  pkg-config
  libtool
  subversion
  vim

* サーバに必要なパッケージ

  apache2-mpm-prefork
  libapache2-mod-php5
  mysql-client
  mysql-server
  php5-mysql
  php5-cli
  php5-gd
  phpmyadmin
  python-mysqldb
  libmysql++-dev
  libssl-dev


=== BOINC 用アカウントの作成

適当なユーザでログイン.

  $ sudo useradd -m -s /bin/bash boincadm

-m はホームディレクトリを作成する, -s はシェルを指定するオプション.

adduser と違って何も聞かれなかった.
/home/boincadm が出来ていることも確認.

  $ sudo usermod -G boincadm www-data

ユーザ www-data の所属するグループ名一覧を確かめる.

  $ groups www-data
  www-data : www-data boincadm

上記のコマンド usermod 〜 で
www-data が boincadm グループに加わっていることが分かる.

ユーザ boincadm でログインし直す.
以降の作業は, 特に明示しない限りユーザ boincadm で行う.


=== MySQL サーバの設定

MySQL については以下のページも参考にした:

コマンドによるMySQL管理テクニック(1/2) @IT
((<URL:http://www.atmarkit.co.jp/flinux/rensai/mysql03/mysql03.html>))


まず, MySQL の root パスワードを設定する.
最初は root にパスワードが設定されていないので, -p オプションは不要である.

  $ mysqladmin -h localhost -u root password mysqlrootpw

これで MySQL 内の root のパスワードが 'mysqlrootpw' に設定された.
ちなみに, パスワードを再設定する場合は上記ではだめである.
例として, root のパスワードを 'hogehoge' に変更したい場合は

  $ mysqladmin -h localhost -u root password hogehoge -p

と, -p オプションをつける.
このコマンドを入力すると (古いほうの) パスワードの入力が促される.

次に, MySQL にユーザ boincadm を作る.

  $ mysql -h localhost -u root -p

と入力した場合 (MySQL のコマンドを省略した場合),

  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 25
  Server version: 5.0.32-Debian_7etch6-log Debian etch distribution
  
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  
  mysql>

というプロンプトが現れる.
以下のように入力する.

  mysql> grant all on *.* to 'boincadm'@'localhost';  # 権限の設定
  Query OK, 0 rows affected (0.00 sec)
  
  mysql> set password for 'boincadm'@'localhost'='';  # パスワードの設定
  Query OK, 0 rows affected (0.00 sec)

BOINC wiki 内の記述によると,
"The permissions can be limited to project database only, later;
Defining an empty password simplifies the installation, can be changed later."
とある.


=== wxWidgets library のインストール

自分で BOINC client をビルドしたい場合に必要とのこと.
debian パッケージは apt-get install boinc-client でインストール可能.
今回はパス.


=== BOINC ソースコードのダウンロード

BOINC ソースコードの最新の開発版を subversion で取得する.

  $ cd ~
  $ svn co http://boinc.berkeley.edu/svn/trunk/boinc boinc_trunk

初回は全部をダウンロードするので時間がかかる. 気長に待つ.
10 分程度で完了した.
最後の行に以下の表示が現れた.

  Checked out revision 15915.

~/boinc_trunk ディレクトリができていることを確認.
du -m コマンドによると全部で 251 MB あった.

ちなみに次回以降,
内容を最新版に更新したい場合は以下のコマンドを入力するとのこと.

  $ cd ~/boinc_trunk
  $ svn update

また, クライアントの安定版を取得したい場合は
以下のコマンドを入力するとのこと. 実際にはやっていない.
(以下の場合は ver. 5.9.5 が取得される?)

  $ cd ~
  $ svn co http://boinc.berkeley.edu/svn/tags/boinc_core_release_5_9_5/boinc boinc_595


=== ソースのコンパイル

BOINC のコンパイルを行う.

  $ cd ~/boinc_trunk

  $ ./_autosetup
  Bootstrapping configure script and makefiles:
  Checking version of 'make' >= 379... succeeded. (381)
  Checking version of 'm4' >= 104... succeeded. (104)
  Checking version of 'pkg-config' >= 15... succeeded. (21)
  Checking version of 'autoconf' >= 258... succeeded. (261)
  Checking version of 'automake' >= 108... succeeded. (110)
  aclocal -I m4 && autoheader && automake && autoconf
  doc/manpages/Makefile.am:21: `%'-style pattern rules are a GNU make extension
  Done, now run ./configure
   ./configure -C                         to enable caching

  $ ./configure --disable-client

config.log を覗いたところ, コンパイラに gcc, g++ を選択していた.
このマシンには icc が入っているので高速化ができるかもしれないと思う.
とりあえず wiki の説明のまま進む.

  $ make


== BOINC Quick start

以下のページを参考にする.

Quick start
((<URL:http://boinc.berkeley.edu/trac/wiki/QuickStart>))

さきほど構築した BOINC のあるディレクトリに行く.

  $ cd ~/boinc_trunk
  $ cd tools

テストプロジェクトを作ってみる.
wiki にある通り, 質問には全て 'y' で答える.

  $ ./make_project --url_base http://133.30.109.91 --test_app test
  Creating project 'test' (short name 'test'):
     PROJECT_ROOT = /home/boincadm/projects/test/
         URL_BASE = http://133.30.109.91/
    HTML_USER_URL = http://133.30.109.91/test/
     HTML_OPS_URL = http://133.30.109.91/test_ops/
          CGI_URL = http://133.30.109.91/test_cgi/
          KEY_DIR = /home/boincadm/projects/test/keys/
          DB_NAME = test
          DB_HOST =
  
  Continue? [Y/n]  y
  
  Setting up server: creating directories
  
  Keys don't exist in /home/boincadm/projects/test/keys/; generate them? [Y/n]  y
  
  Setting up server files: linking cgi programs Done installing default daemons.
  Traceback (most recent call last):
    File "./make_project", line 292, in ?
      shutil.copy('../samples/example_app/uc2', filepath)
    File "/usr/lib/python2.4/shutil.py", line 81, in copy
      copyfile(src, dst)
    File "/usr/lib/python2.4/shutil.py", line 47, in copyfile
      fsrc = open(src, 'rb')
  IOError: [Errno 2] No such file or directory: '../samples/example_app/uc2'

エラーが出ている!?

  $ cd ~/projects/test

sudo cat test.httpd.conf >> /etc/apache2/httpd.conf をせよとのことだが,
test.httpd.conf が存在しないのでできない.


仕方がないので, make_project を覗いてみる.

292 行目にエラーに関連する記述を発見.

      shutil.copy('../samples/example_app/uc2', filepath)





== BOINC 構築 (再)

開発版を使ったのがつまづきのもとかもしれないと思い,
安定版 (?) のソースコードを持ってくることにする.

以下のページを参考にする.

SourceCode - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SourceCode>))

  $ cd ~
  $ svn co http://boinc.berkeley.edu/svn/trunk/boinc

=== ソースのコンパイル

BOINC のコンパイルを行う.

  $ cd ~/boinc

  $ ./_autosetup
  $ ./configure --disable-client
  $ make

=== テストプロジェクトの構築

  $ cd ~/boinc/tools
  $ ./make_project --url_base http://133.30.109.91 --test_app test

既に 'test' というデータベースがあるので駄目だというエラーが出る.

  $ ./make_project --url_base http://133.30.109.91 --test_app test2

先ほど boinc_track でやったのと同じエラーが出る.


make_project をいじってみる.

  $ cp make_project make_project.org

292 行目にエラーに関連する記述を発見.
~/boinc/samples/example_app/ の中身を参考に

      shutil.copy('../samples/example_app/uc2', filepath)



      shutil.copy('../samples/example_app/uc2.C', filepath)

と書き換えてみる. (他にも候補としては uc2.c などがある)


  $ ./make_project --url_base http://133.30.109.91 --test_app test4
  (省略)
  
  Setting up server files: linking cgi programs Done installing default daemons.
  
  Done installing files.  Please view
  /home/boincadm/projects/test4/test4.readme
  for important additional instructions.

とりあえず成功したようだ
(上記の書き換えが uc2.C で合っているかは不明. 追々分かるだろうけど)

  $ cd ~/projects/test4

test4.readme の中身は Quick Start のとだいたい同じ.
ただし変数は今回のプロジェクト用の値に置き換わっている.

test4.http.conf を発見. 以下に引用する.


    ## Settings for BOINC project test4
  
    Alias /test4 /home/boincadm/projects/test4/html/user
    Alias /test4_ops /home/boincadm/projects/test4/html/ops
    ScriptAlias /test4_cgi /home/boincadm/projects/test4/cgi-bin
  
    # Note: projects/*/keys/ should NOT be readable!
  
    <Directory "/home/boincadm/projects/test4/html">
        Options Indexes FollowSymlinks MultiViews
        AllowOverride AuthConfig
        Order allow,deny
        Allow from all
    </Directory>
  
    <Directory "/home/boincadm/projects/test4/cgi-bin">
        Options ExecCGI
        AllowOverride AuthConfig
        Order allow,deny
        Allow from all
    </Directory>


=== Quick Start (再)

では, 再度挑戦.

  $ cd ~/projects/test4
  $ sudo -s

  # cat test.httpd.conf >> /etc/apache2/httpd.conf
  # apache2ctl -k restart
  apache2: Could not reliably determine the server's fully qualified domain name,
  using 127.0.0.1 for ServerName

大丈夫か?
http.conf にて ServerName を指定するとこの警告は出ない.

  # exit

  $ crontab test4.cronjob
  $ ./bin/xadd

以下は wiki の通り, 全部 'y' と答えておく.

  $ ./bin/update_versions

  Found <App#1 uppercase> version 101 for <Platform#3 i686-pc-linux-gnu>: upperc
  ase_1.1_i686-pc-linux-gnu
  
  SECURITY WARNING:
  =================
  
  You have not provided a signature file for /home/boincadm/projects/test4/apps/up
  percase/uppercase_1.1_i686-pc-linux-gnu/uppercase_1.1_i686-pc-linux-gnu.
  
  I can generate one now, but this is highly unrecommended.  Generating code
  signatures on network-connected computers is a security vulnerability, and
  should not be done for publicly-accessable projects.
  
  Continue with automatically generating a code signature? [y/N]  y
  Signing /home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux
  -gnu/uppercase_1.1_i686-pc-linux-gnu
  Copying uppercase_1.1_i686-pc-linux-gnu to /home/boincadm/projects/test4/downloa
  d/uppercase_1.1_i686-pc-linux-gnu
  Ready to commit 1 items:
      <AppVersion#None uppercase 101 i686-pc-linux-gnu>
  Continue [Y/n]  y
  Committed:
      <AppVersion#1 uppercase 101 i686-pc-linux-gnu>
  Touched trigger file to make feeder re-read app_version table from database
  Done


  $ ./bin/start

  Traceback (most recent call last):
    File "./bin/start", line 717, in ?
      if lock_file(start_lockfile):
    File "./bin/start", line 295, in lock_file
      file = open(filename,'w')
  IOError: [Errno 13] Permission denied: '/home/boincadm/projects/test4/pid_fermat/start.lock.fermat'
  You have mail in /var/mail/boincadm


/home/boincadm/projects/test4/pid_fermat/ などが何故か root の持ち物になって
いたので boincadm の持ち物に直す.

  $ ./bin/start
  Entering ENABLED mode
  Starting daemons
    Starting daemon: feeder -d 3
    Starting daemon: transitioner -d 3
    Starting daemon: file_deleter -d 3
    Starting daemon: sample_work_generator -d 3
    Starting daemon: sample_bitwise_validator -d 3 -app uppercase
    Starting daemon: sample_assimilator -d 3 -app uppercase


ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ を
見てみたところ, php が動作せず, ファイルをダウンロードするように
なってしまっている.


「debian php 表示できない」の検索を経由して,
「LoadModule php5_module」を検索.

2.2 PHPの環境設定
((<URL:http://www.yc.musashi-tech.ac.jp/~yamada/doc/win_php/0202.html>))


ApacheにPHPモジュールを組み込む

    LoadModule php5_module        modules/libphp5.so


"*.php"拡張子とPHPを関連づける

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

DirectoryIndex に "index.php" を追加.

    DirectoryIndex index.html index.php


modules/libphp5.so が見つからないと怒られる.
仕方なくコメントアウトしてから apache2 を再起動.

  $ sudo /etc/init.d/apache2 restart

症状は変わらず.

結局, libapache2-mod-php5 をインストールし忘れていたので原因のようだ.
インストールしてから apache2 を再起動.

ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test4/ に
アクセスするとページが表示された.

ページが部分的に日本語になっているのが気持ち悪い.


Windows XP のクライアントでプロジェクトのページとして
上記のページを選択しても, アカウントが作れた.

ためしに Windows XP 上から参加してみる.
以下, BOINC Manager のログ.



  2008/08/21 20:29:05||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
  2008/08/21 20:29:13||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
  2008/08/21 21:16:16||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
  2008/08/21 21:18:32||Fetching configuration file from http://fermat.epa.scitec.kobe-u.ac.jp/test4/get_project_config.php
  2008/08/21 21:18:59|test4|Master file download succeeded
  2008/08/21 21:19:04|test4|Sending scheduler request: Project initialization
  2008/08/21 21:19:04|test4|Requesting 1 seconds of new work
  2008/08/21 21:19:09|test4|Scheduler RPC succeeded [server version 603]
  2008/08/21 21:19:09|test4|You used the wrong URL for this project
  2008/08/21 21:19:09|test4|The correct URL is http://133.30.109.91/test4/
  2008/08/21 21:19:09|test4|Using the wrong URL can cause problems in some cases.
  2008/08/21 21:19:09|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
  2008/08/21 21:19:09|test4|Message from server: No work sent
  2008/08/21 21:19:09|test4|Message from server: upperCASE is not available for your type of computer.
  2008/08/21 21:19:09|test4|Deferring communication for 1 min 0 sec
  2008/08/21 21:19:09|test4|Reason: no work from project
  2008/08/21 21:20:09|test4|Sending scheduler request: To fetch work
  2008/08/21 21:20:09|test4|Requesting 2302 seconds of new work
  2008/08/21 21:20:14|test4|Scheduler RPC succeeded [server version 603]
  2008/08/21 21:20:14|test4|You used the wrong URL for this project
  2008/08/21 21:20:14|test4|The correct URL is http://133.30.109.91/test4/
  2008/08/21 21:20:14|test4|Using the wrong URL can cause problems in some cases.
  2008/08/21 21:20:14|test4|When convenient, detach this project, then reattach to http://133.30.109.91/test4/
  2008/08/21 21:20:14|test4|Message from server: No work sent
  2008/08/21 21:20:14|test4|Message from server: upperCASE is not available for your type of computer.
  2008/08/21 21:20:14|test4|Deferring communication for 1 min 0 sec
  2008/08/21 21:20:14|test4|Reason: no work from project

要は, 「コンピュータとワークの内容があわないので仕事はない」ということ.

確かに Quick Start 内には
"run the BOINC client on a Linux computer" とはある.




= 080822

== Linux client のインストール

BOINC の client として運用する mersenne に
BOINC client をインストールする.

  $ ssh mersenne

apt-get でインストールしてみる.

  $ sudo apt-get install boinc-client
  パッケージリストを読み込んでいます... 完了
  依存関係ツリーを作成しています... 完了
  提案パッケージ:
    boinc-app-seti boinc-manager kboincspy
  以下のパッケージが新たにインストールされます:
    boinc-client
  アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
  340kB のアーカイブを取得する必要があります。
  展開後に追加で 791kB のディスク容量が消費されます。
  取得:1 http://cdn.debian.or.jp etch/main boinc-client 5.4.11-4 [340kB]
  340kB を 0s で取得しました (406kB/s)
  パッケージを事前設定しています ...
  未選択パッケージ boinc-client を選択しています。
  (データベースを読み込んでいます ... 現在 88031 個のファイルとディレクトリがイン
  ストールされています。)
  (.../boinc-client_5.4.11-4_i386.deb から) boinc-client を展開しています...
  boinc-client (5.4.11-4) を設定しています ...
  Starting BOINC core client: boinc_client.

以下の 1 行が気になる.

  Starting BOINC core client: boinc_client.

どうやって止めればいいのか? あちこち見ると

  $ boinc_cmd --quit

でよいらしいが, 'Authorization failure: -155' と言われて駄目だった.
仕方ないので

  $ sudo /etc/init.d/boinc-client stop

としておいた.


「apt-get boinc」で検索.

玄箱でseti@homeに参加する その2 - きょうのかんぱぱ
((<URL:http://d.hatena.ne.jp/kanpapa/20070407/1175902621>))

止めるのは後にして (最悪の場合パッケージを remove すればいい),
上のページを参考に,
とりあえずプロジェクトに参加してみる.

  $ boinc_cmd --host localhost --project_attach
  Authorization failure: -155

動かない. help を見る.

  $ boinc_cmd --help | less

再度挑戦.
'********' は各ユーザに配布された固有の番号.

  $ boinc_cmd --host localhost --project_attach http://setiathome.berkeley.edu ********
  Authorization failure: -155

sudo を付加しても同じ.
よくわからない.


話がそれるが, boinc 関係のパッケージを調べてみる.

  $ sudo apt-cache search boinc
  boinc-app-seti - SETI@home application for the BOINC client
  boinc-client - core client for the BOINC distributed computing infrastructure
  boinc-dev - development files to build applications for BOINC projects
  boinc-manager - GUI to control and monitor the BOINC core client
  kboincspy - monitoring utility for the BOINC client
  kboincspy-dev - development files for KBoincSpy plugins

client だけだと seti しか参加できないのか?
話を戻す.


使い勝手を良くするため, BOINC Manager も入れる.

  $ sudo apt-get install boinc-manager

  $ boincmgr
  Error: Unable to initialize gtk, is DISPLAY set properly?

GUI の画面が必要ということか.
X で画面を飛ばすようにしたが,
Manager の画面をクリックすると落ちる.
cygwin の X がいけないのか?


== Linux client のインストール(再)

debian パッケージに頼るのは一旦やめておく.
一旦アンインストールする.

  $ sudo apt-get remove boinc-manager boinc-client

以下を参考にする.

Release Notes
((<URL:http://boinc.berkeley.edu/trac/wiki/ReleaseNotes>))

適当なディレクトリを作って入る

  $ cd ~
  $ mkdir boinc
  $ cd boinc

本家ダウンロードページ

Download BOINC client software
((<URL:http://boinc.berkeley.edu/download_all.php>))

から Linux x86 用のインストールスクリプトをダウンロード

  $ wget http://boincdl.ssl.berkeley.edu/dl/boinc_6.2.15_i686-pc-linux-gnu.sh

  $ sh boinc_6.2.15_i686-pc-linux-gnu.sh
  use /home/noda/boinc/BOINC/run_manager to start BOINC

  $ cd BOINC
  $ cat run_manager
  cd "/home/noda/boinc/BOINC" && exec ./boincmgr $@

  $ ./run_manager
  ./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory

必要なパッケージの導入を忘れていた.


=== 依存するパッケージの導入

以下のページを参照

ServerIntro - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/ServerIntro>))

mersenne にて client を動かすため
以下のパッケージを導入する:

* 共通パッケージ

  m4
  make
  autoconf
  automake
  gcc
  g++
  pkg-config
  libtool
  subversion
  vim

* client に必要なパッケージ

  libssl-dev
  libglut3-dev
  glutg3-dev
  libglui-dev
  libglitz-glx1-dev
  libsdl1.2-dev
  libcurl3-dev
  freeglut3
  freeglut3-dev
  libsm-dev
  libice-dev
  libxmu-dev
  libxi-dev
  libx11-dev
  libjpeg62-dev
  libgtk2.0-0

libgtk2.0-0-dev が見つからない.
代わりに libgtk2.0-dev を入れておく.


== Linux client のインストール(3)

再度実行.

  $ cd ~/boinc/BOINC
  $ ./run_manager
  ./boincmgr: error while loading shared libraries: libXcomposite.so.1: cannot open shared object file: No such file or directory

症状変わらず.

  $ sudo apt-get install libxcomposite-dev
  $ ./run_manager
  ./boincmgr: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.4' not found (required by ./boincmgr)

apt-get では glibc-2.3.6-2 がある.
代わりにこれを選択すると, その代わりに libc6 が選択された.
libc6 は既にインストールされている.


古い安定版である ver. 5.10.45 を入れてみる.
(さっき入れたのは ver. 6.2.15)

  $ cd ~/boinc
  $ rm -r BOINC
  $ wget http://boincdl.ssl.berkeley.edu/dl/boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh

'ubuntu' の記述が気になるがそのまま進む.

  $ sh boinc_ubuntu_5.10.45_i686-pc-linux-gnu.sh
  $ ./run_manager

さっきと同じ症状.



'Older Linux x86 and x64' の ver. 6.2.15 を試す.

  $ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
  $ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
  use /home/noda/boinc/BOINC/run_client to start BOINC

manager がないバージョンのようだ.

  $ ./run_client

ログが流れていく. とりあえず走った.

kill で一旦強制終了.
SETI@home を走らせてみる.

  $ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********
  connect: Connection refused
  can't connect to local host

  $ ./run_client &

ログが標準出力で流れてしまうが, ここは我慢.

  $ ./boinc_cmd --project_attach http://setiathome.berkeley.edu ********

SETI@home につながる.
ベンチマークが走る. 結果は以下の通り.

  22-Aug-2008 20:14:22 [---]    1372 floating point MIPS (Whetstone) per CPU
  22-Aug-2008 20:14:22 [---]    2780 integer MIPS (Dhrystone) per CPU

その後, SETI@home のジョブをもらってきたようだ.


別の端末画面を開き top してみると,
優先度が 19 (つまり最低) になっている.
CPU 稼働率は最高で 66 % くらい. シングルコアなのに何故?

それにしても, 画面がうるさい.
どこかにリダイレクトするよう設定しておくべきだろう.

preferences 設定はどこでいじるのか? と思ってディレクトリ内を見回す.
どうやら,

  global_prefs.xml

がそれのようだ.

一旦終了する.

  $ ./boinc_cmd --quit

global_prefs.xml 内の cpu_usage_limit の値を 60.0 から 100.0 に書き換え,
再起動する. ログの出力をファイルにする.

  $ ./run_client > log_client.txt &

top すると, 今度は seti が 100 % 稼動していた.
preference の設定ファイルであることを確信.


今度は daemon モードで起動してみる.

  $ ./run_client --daemon

コマンドで, バックグラウンドであることを明示しなくてもよい.
終了するときはさっきと同じく

  $ ./boinc_cmd --quit

でよい.
走らせた後, 手元にファイル stdoutdae.txt, stderrdae.txt ができていた.

最低限の使い方は分かった.
実用的には, ユーザがログアウトしても動き続けるようにしなくてはならない.



== テストプロジェクトの動作確認

昨日, 自分で作ったプロジェクトのページ

http://fermat.epa.scitec.kobe-u.ac.jp/test4/

の "Your account" のページに行くと,
(自分で発行した覚えはないのに)
accout key が載っている.

この key を使って
mersenne にある client から fermat のジョブを取得してみる.

mersenne にてクライアントを起動する.
daemon モードではログの見方が分からないので手元のファイルに出力するようにする.

  $ cd boinc/BOINC
  $ ./run_client > log_client.txt

プロジェクトに参加する.

  $ ./boinc_cmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test4/ \
    ********

top で CPU 使用率を見ていたが, 一向に現れない (SETI しか走っていない).
ログを見たところ,

  22-Aug-2008 20:57:31 [test4] Message from server: Server error: can't attach shared memory

とあった.
projects/fermat.epa.scitec.kobe-u.ac.jp_test4 以下を見る.
ファイルが 2 つあった.

* uc_1219316705_10
* uppercase_1.1_i686-pc-linux-gnu (実行属性あり)

ファイル 'uc_1219316705_10' には

  This is the input file for job uc_1219316705_10

とだけ書かれていた.

実行ファイルとおぼしき uppercase_1.1_i686-pc-linux-gnu を直接実行してみる.

  $ ./uppercase_1.1_i686-pc-linux-gnu
  ./uppercase_1.1_i686-pc-linux-gnu: line 1: //: is a directory
  ./uppercase_1.1_i686-pc-linux-gnu: line 2: //: is a directory
  ./uppercase_1.1_i686-pc-linux-gnu: line 3: syntax error near unexpected token `('
  ./uppercase_1.1_i686-pc-linux-gnu: line 3: `// Copyright (C) 2008 University of California'

なぜバイナリに 'Copyright' とか書かれている?

less してみたところ, 単なるソースファイルだった.

書き換えの際にミスしたようだ.
本当はバイナリをコピーするように書かないといけなかったようだ.

プロジェクト test4 から離脱.
このコマンドは client が稼動してなくても実行できた.

  $ ./boinc --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test4/



マシン fermat へ行く.
「バイナリ」として配布されていたのは

fermat:/home/boincadm/projects/test4/apps/uppercase/uppercase_1.1_i686-pc-linux-gnu

のもよう.


== Quick start (3)

サーバである fermat に戻り, 新しいプロジェクトを作成.
boincadm でログイン.

  $ cd ~
  $ cd boinc/tools
  $ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp \
    --test_app test5

make_project の修正を忘れていた. やりなおし.

ところで, 同じ名前のプロジェクトを作ろうとすると,

  Project root already exists! Specify --delete_prev_inst --drop_db_first to clobber

というエラーメッセージが出る.

プロジェクトを削除してみる.

  $ ./make_project --delete_prev_inst --drop_db_first test5

単にプロジェクトが新しくなっただけのようだ.
削除については後回し.

もとに戻って, make_project スクリプトの修正.

../samples/example_app 内のバイナリを指定しなくてはならない.

  $ ~/boinc/samples/example_app

中を見てみたら, バイナリがない. コンパイルに失敗したのか?
手で make してみる.

  $ make
  g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
   /usr/X11R6/lib -L.   -c -o uc2.o uc2.C
  g++ -g -DAPP_GRAPHICS -I../.. -I../../lib -I../../api -L../../api -L../../lib -L
   /usr/X11R6/lib -L. -o uc2 uc2.o libstdc++.a -pthread -lboinc_api -lboinc
  g++: libstdc++.a: No such file or directory
  make: *** [uc2] Error 1


パッケージを調べてみたところ, libstdc++6, libstdc++5 は既に入っている.
Makefile.debian なるものがあるのでそれを使ってみる.

  $ make clean
  $ make -f Makefile.debian

同じ症状.

debian パッケージ検索で libstdc++.a を探し,
それを含むパッケージ libstdc++6-dev を入れる.

  $ make clean
  $ make -f Makefile.debian

同じ症状.




= 080823

== Quick Start (続き)

=== make_project に関するトラブルシューティング

fermat 内の BOINC サーバのトラブルシューティング
fermat に boincadm としてログイン.

  $ cd ~/boinc/samples/example_app

Makefile.debian の

  libstdc++.a



  -lstdc++

に変更.
Makefile を見れば分かることだが, uc2, uc2_graphics という 2 つの
バイナリを作成していることがわかる.

  $ make -f Makefile.debian

大量のエラーが出るが, 全て uc2_graphics.C に関するものなので後回し.
ディレクトリ内には uc2 というバイナリができている.
試しにこれを実行してみる.

  $ ./uc2

一瞬で終わった.
stderr.txt というファイルができていて,

  Can't open init data file - running in standalone mode
  Couldn't find input file, resolved name in.

と記述されている.
boinc_lockfile というファイルもできていたがこれは空.

今気づいたが, Makefile の最初に

  # Do this first:
  # ln -s `g++ -print-file-name=libstdc++.a`
  # This creates a symbolic link to the C++ library,
  # which is linked statically

と書かれていたことに気づく.

  $ make clean
  $ ln -s `g++ -print-file-name=libstdc++.a`
  $ make

動作はさっきと一緒のようだ.
Makefile を編集しない分, こっちが楽だ.


=== テストプロジェクトの作成

改めてテストプロジェクトを作ることにする.

  $ cd ~/boinc/tools

前にいじっていた make_project をなかったことにする.
バックアップしていたオリジナルのファイルを元に戻す.

  $ cp make_project.org make_project

テストプロジェクトを作成.

  $ ./make_project --url_base http://fermat.epa.scitec.kobe-u.ac.jp --test_app test6

質問には全て 'y' と答える.
エラーもなく完了.

  $ cd ~/projects/test6

念のため, バイナリを確認.

  $ cd apps/uppercase/uppercase_1.1_i686-pc-linux-gnu
  $ ./uppercase_1.1_i686-pc-linux-gnu

ok. 掃除しておく.

  $ rm stderr.txt boinc_lockfile

元の場所へ戻る.

  $ cd ~/projects/test6

  $ sudo -s
  # cat test6.httpd.conf >> /etc/apache2/httpd.conf

前に書いていた, test4 用の設定は削除した.

  # apache2ctl -k restart

ブラウザで http://fermat.epa.scitec.kobe-u.ac.jp/test6/ にアクセス.
プロジェクトページが見えることを確認.

  # exit
  $ crontab test6.cronjob

  $ ./bin/xadd
  $ ./bin/update_versions

セキュリティの警告が出るが, 全て 'y' と答えておく.

  $ ./bin/start

少し待つ (10 秒程度).

これでプロジェクトが立ち上がった.


=== アカウントの追加

client 側である mersenne にログイン.

  $ cd boinc/BOINC
  $ ./run_client --daemon   # 起動

コマンドラインでアカウントを追加 (= 新規プロジェクトに参加) してみる.
オプションは前から,
プロジェクトの URL, メールアドレス, パスワード, アカウント名, である.

  $ ./boinccmd --create_account http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
    xxx_at_xxx.xx.xx hogehoge noda
  status: Success
  poll status: operation in progress
  account key: ********

アカウントキーは覚えておく.
忘れたときは lookup_account オプションを使えばよい.
詳しくは ./boinccmd --help の結果を参照のこと.

先ほど発行されたアカウントキーを使ってプロジェクトからジョブをもらってくる.

  $ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
    ********

stdoutdae.txt を見る限りでは, ジョブのダウンロードは完了したようだ.
しかし top コマンド上では seti しか動いていない.
1 CPU だからだろうか? test6 はキューの後ろに並んでいる?

SETI@home から離脱してみる.

  $ ./boinc --detach_project http://setiathome.berkeley.edu

おっと, boinccmd が動いているからできなかった.

  $ ./boinccmd --quit
  $ ./boinc --detach_project http://setiathome.berkeley.edu

再起動.

  $ ./boinccmd --daemon
  connect: Connection refused
  can't connect to local host

どうやら ./boinc が起動したままのようだ. というのも,

  $ ./boinc --daemon

だと起動できたからである.

top を見ると, uppercase というコマンドが走っている.
これは test6 で配布したバイナリである.

成功.
stdoutdae.txt を見ると, 次々とワークユニットを処理しているもよう.


=== 手持ちのアプリケーションを走らせてみる

  $ cd ~/projects/test6
  $ html/ops/single_job_setup.php ~/boinc/samples
  /home/boincadm/boinc/samples/wrapper/wrapper doesn't exist.
  Make sure you've built boinc_samples.

現地へ飛ぶ.

  $ cd ~/boinc/samples/wrapper

wrapper なんてファイルはない.
Makefile が転がっていることから, コンパイルが必要か.

  $ make
  (省略)
  g++: libstdc++.a: No such file or directory
  make: *** [wrapper] Error 1

さっきと同じエラーのようだ.
Makefile 内にもさっきと同じようなことが書いてある.

  $ ln -s `g++ -print-file-name=libstdc++.a`
  $ make

コンパイルが通った.
さっきの場所へ戻って再挑戦.

  $ cd ~/projects/test6
  $ html/ops/single_job_setup.php ~/boinc/samples
  Installing current wrapper.
  - type 'bin/update_versions', and answer 'y' to all questions.
  - Add the following to the <daemons> section of config.xml:
  
      <daemon>
        <cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
        <output>single_job_assimilator_i686-pc-linux-gnu.out</output>
        <pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
      </daemon>
      <daemon>
        <cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
        <output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
        <pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
      </daemon>
  Then restart your project by typing
  bin/stop
  bin/start

言われたままやってみる.

  $ ./bin/update_versions

質問にはすべて 'y' と答える.

config.xml の <daemon> セクション (ファイルの最後のほう) に以下を追記.

      <daemon>
        <cmd>single_job_assimilator -app single_job_i686-pc-linux-gnu</cmd>
        <output>single_job_assimilator_i686-pc-linux-gnu.out</output>
        <pid>single_job_assimilator_i686-pc-linux-gnu.pid</pid>
      </daemon>
      <daemon>
        <cmd>sample_trivial_validator -app single_job_i686-pc-linux-gnu</cmd>
        <output>sample_trivial_validator_i686-pc-linux-gnu.out</output>
        <pid>sample_trivial_validator_i686-pc-linux-gnu.pid</pid>
      </daemon>

BOINC サーバの再起動.

  $ ./bin/stop
  Entering DISABLED mode
  Stopping all daemons
    Killed process 26118
    Killed process 26116
    Killed process 26122
    Killed process 26120
    Killed process 26112
    Killed process 26114
    Waiting for process 26116 to end: . ok
    Waiting for process 26112 to end: ... ok

  $ ./bin/start
  Entering ENABLED mode
  Starting daemons
    Starting daemon: feeder -d 3
    Starting daemon: transitioner -d 3
    Starting daemon: file_deleter -d 3
    Starting daemon: sample_work_generator -d 3
    Starting daemon: sample_bitwise_validator -d 3 -app uppercase
    Starting daemon: sample_assimilator -d 3 -app uppercase
    Starting daemon: single_job_assimilator -app single_job_i686-pc-linux-gnu
    Starting daemon: sample_trivial_validator -app single_job_i686-pc-linux-gnu



実行するバイナリの作成.

  $ cd ~

以下の内容のファイルを作成し, test.f90 と名づける.

  program test
    write(*,*) 'Hello world.'
  end program test

  $ ifort test.f90
  $ ./a.out
  Hello world.

ジョブを投入してみる.

  $ ./boinc/tools/boinc_submit --stdout foo a.out
  You must set the environment variable BOINC_PROJECT_DIR
  to the path of a BOINC project, e.g.:
  
  > export BOINC_PROJECT_DIR=~/projects/my_project
  or in csh:
  > setenv BOINC_PROJECT_DIR ~/projects/my_project

環境変数の設定を行う.

  $ export BOINC_PROJECT_DIR=~/projects/test6

再挑戦.

  $ ./boinc/tools/boinc_submit --stdout foo a.out
  August 23, 2008, 5:36 PM: job 301 is in progress
    (no instances yet)
  August 23, 2008, 5:36 PM: job 301 is in progress
    Instance 0: unsent
  August 23, 2008, 5:36 PM: job 301 is in progress
    Instance 0: unsent
  (省略)

いつまでも送信されない?
Ctrl + c で端末に戻る.
'job 301' とは, 今動いているテストジョブのことか?

  $ ./boinc/tools/boinc_submit --help
  $ ./boinc/tools/boinc_submit --jobs  # pending jobs を見る
  Jobs for Linux running on an Intel x86-compatible CPU:
  Job 301: in progress

  $ ./boinc/tools/boinc_submit --abort 301
  Job 301 has been aborted.

  $ ./boinc/tools/boinc_submit --jobs
  Jobs for Linux running on an Intel x86-compatible CPU:
  Job 301: completed

301 は今送信した job であった.

  $ ./boinc/tools/boinc_submit --stdout foo a.out
  August 23, 2008, 5:48 PM: job 302 is in progress
    (no instances yet)
  August 23, 2008, 5:48 PM: job 302 is in progress
    Instance 0: unsent
  August 23, 2008, 5:48 PM: job 302 is in progress
    Instance 0: unsent

ジョブの送信に不具合があるのか?


(一旦ここで fermat からログアウト
席を離れるときにうっかりマシンをスタンバイにしてしまっただけ))

再度 fermat に行くと, ホームに
job_summary_301, job_summary_302
というファイルができていた.

  $ cat job_summary_301
  The job was not successfully completed.
  Error: 0x10

302 番のジョブを abort してから, 2 つのジョブを送信してみる.

  $ ./boinc/tools/boinc_submit --jobs
  Jobs for Linux running on an Intel x86-compatible CPU:
  Job 301: completed
  Job 302: completed
  Job 303: in progress
  Job 304: in progress

'Intel x86-compatible CPU' がいけないのか?

最初に sample プロジェクトを実行してから 3 時間半.
sample プロジェクトのジョブは枯渇したようだ.
他にジョブがないにも関わらず, a.out は送信されない.

話は少し変わるが,
あちこち見て回っていたところ,
以下のディレクトリに「リザルト」が格納されているようだ.

  download
  sample_results
  upload


=== fermat に client をインストール

ジョブが送信されないのは CPU の種類が違うせいか確かめる.

fermat に client をインストールする

  boincadm@fermat$ cd ~
  $ mkdir client
  $ cd client

'Older Linux x86 and x64' の ver. 6.2.15 を試す.

  $ wget http://boincdl.ssl.berkeley.edu/dl/boinc_compat_6.2.15_i686-pc-linux-gnu.sh
  $ sh boinc_compat_6.2.15_i686-pc-linux-gnu.sh
  use /home/boincadm/client/BOINC/run_client to start BOINC

  $ cd BOINC
  $ ./run_client --daemon

  $ ./boinccmd --project_attach http://fermat.epa.scitec.kobe-u.ac.jp/test6/ \
    ********

test6 からタスクをガンガン取得しはじめた.
1 つの計算について, 複数のマシンで結果を比較するよう設定されていたようだ.

しかし, single job については動きがないように見える.


話は脱線して,
いろいろネットで調べていたところ,

SingleJob - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/SingleJob>))

* Single job submission は wrapper を用いている.
* 今のところ, wrapper は Linux/Intel32 以外に対応していないとのこと.


fermat でclient を動かし始めて 15 分くらい経った頃,
single job が実行された.

  $ cat job_summary_303
  Job was completed by host 2.
  CPU time: 0.000000 seconds

  $ cat foo
   Hello world.

やはり, mersenne の CPU が Athlon だったのが原因か?

single job の実行がすぐでなかったのは, 何故か?
sample プロジェクトと一緒にキューに並んでいるのか?

多少の疑問はあるが, とりあえず tutorial (Quick start) は成功.


== Project creation cookbook

今度は

Project creation cookbook
((<URL:http://boinc.berkeley.edu/trac/wiki/CreateProjectCookbook>))

の通りにやってみる.

=== ウェブページの最低限の内容変更

~/projects/test6/html/project/project.inc の中の

* REPLACE WITH PROJECT NAME
* REPLACE WITH COPYRIGHT HOLDER

を適当なものに書き換える.

ブラウザでプロジェクトページを再読み込みすると,
"REPLACE WITH ..." が置き換わっている.

"XXX is a ..." などの本文については
~/projects/test6/html/user/index.php などを直接書き換える必要があるようだ.


=== html/ops にパスワードをかける

http://fermat.epa.scitec.kobe-u.ac.jp/test6_ops/
は管理用のページのようである.

一般からアクセスできないように,
例えば htpasswd コマンドで .htaccess と .htpasswd を作れ, とある.

とりあえず, .htaccess を作る.
場所は, アクセス制限するディレクトリの上.

  $ cd ~/projects/test6/html/ops
  $ vi .htaccess

以下を書き込む.

  AuthUserFile /home/boincadm/projects/test6/html/ops/.htpasswd
  AuthGroupFile /dev/null
  AuthName "test6 admin"
  AuthType Basic
  
  require user XXXXXXXX
  require valid-user
  
  <Files ~ "\.(htpasswd|htaccess)$">
      deny from all
  </Files>

XXXXXXXX には適当なユーザ名を記入する.


ちなみに, 上記は

.htaccessの小技編 - アクセス制限ベーシック認証〜パスワードでページを守ろう〜 - futomi's CGI Cafe
((<URL:http://www.futomi.com/lecture/htaccess/htpasswd.html>))

などを参考にした.

  $ chmod 604 .htaccess

これについては

.htaccessの設定解説
http://htaccess.pasoa.com/

を参考にした.

.htpasswd ファイルを作る.

  $ htpasswd -c /home/boincadm/projects/test6/html/ops/.htpasswd XXXXXXXX

やることはやってみたが, ops 以下を見ようとしても 403 Forbidden になる.
はまり込みそうなので, ここは一旦飛ばす.
事故を招かないように, .ht* も一旦削除しておく.


=== テストプロジェクト

さっきやったのでパス.

ちなみに,
適当なディレクトリ boinc_test などを作ってそこに入り,

  $ cp ../boinc/client/boinc_client .
  $ cp ../boinc/lib/boinc_cmd .

としてもよかったようだ (client もコンパイルした場合に限る).


=== 手持ちのアプリケーションを加える

さきほど行った single job よりは高度な方法で
手持ちのアプリケーションを走らせる.

  $ cd ~/projects/test6
  $ cp config.xml config.xml.org

config.xml 内の最後のほうにある

  sample_bitwise_validator -d 3 -app uppercase



  sample_assimilator -d 3 -app uppercase

が含まれる項目を削除する.

project.xml に自分の加えたいアプリケーション名を加える.
具体的には,

    <app>
        <name>uppercase</name>
        <user_friendly_name>upperCASE</user_friendly_name>
    </app>

の下に真似して

    <app>
        <name>addition</name>
        <user_friendly_name>Addition</user_friendly_name>
    </app>

を追記した.
アプリケーションを登録する.

  $ ./bin/xadd

この時点では config.xml に変化はなかった.


適当なプログラムを作る.

program test
  j=0
  do i=0,1000000000
    j=j+1
  end do
  write(*,*) j
  write(*,*) 'Addition was done.'
end program test

  $ ifort -o addition addition.f90
  $ ./addition
    1000000001
   Addition was done.

fermat では 0.6 sec くらいで終わった.

ふと気がついた. ページには

  "Write a BOINC application ..."

とある.
BOINC 用の API を積んだ, BOINC と通信できるプログラムが必要であった.

これはすぐには書けないので, 一旦中止.
wrapper や BOINC API の使い方を学ぶことにする.




= 080824

== desktop Grid computing

BOINC のトップページから,
"desktop Grid computing" のリンクを通じて飛べる
"Grid computing with BOINC" というページに注目した.

DesktopGrid - BOINC - Trac
((<URL:http://boinc.berkeley.edu/trac/wiki/DesktopGrid>))

BOINC は,
一般市民のコンピュータの力を借りる 'volunteer computing' だけでなく,
研究室や企業の中だけで閉じた計算をする 'desktop Grid computing' も想定して
作られているようだ.

"Grid versus volunteer computing" という項目がページ内にあるように,
'Grid computing' と 'volunteer computing' の言葉の定義が
今までの私の認識と違うように感じた.

これまでの認識では, 'volunteer computing' は 'Grid computing' に
含まれるものであったが, このページの文脈からすると,
一般開放すると 'Grid computing' でなくなるように読める.

'desktop Grid computing' に話を戻す.
文中には, 使うマシンは信頼性が高いので冗長性の処理は不要であることなどが
書かれている.
簡単化できるのでツールもあるらしい.
また,

  "You might also want to include files
  that allow clients to be remotely monitored and controlled."

ということはジョブを投げた後も,
ジョブ取り消しなどの多少の制御も可能のようだ.

ページの最後には

  For more information on grid computing using BOINC,
  and some useful pre-compiled software, visit Desktopgrid.hu.

とある. "some useful pre-compiled software" につられて
"Desktopgrid.hu" のリンクを選択.
行った先は,

SZTAKI Desktop Grid
((<URL:http://desktopgrid.hu/>))

であった. SZTAKI は以前から聞いたことがある.
しかしこれは BOINC を使ったプロジェクトに過ぎないのでは?

読み進めてみると,

  SZTAKI Desktop Grid is basically a BOINC server packed
  in a Debian(R) package, to make server deployment as easy as possible.

とある.
SZTAKI 自体は
BOINC プロジェクトを立ち上げるのを支援するユーティリティのようだ.
さらに読み進めると,

  Supported Research
  SZTAKI Desktop Grid is currently hosting the BinSYS project.

とある.
つまり, 'BinSYS project' が本当のプロジェクト名ということ.

日本語では, 間違って紹介されている.
ソフトウェアを配布していることが紹介されていないので損をしているかも.

DC-API なる API が配布されている.

The DC-API
((<URL:http://desktopgrid.hu/index.php?page=24>))

によると,

  The DC-API was created by MTA SZTAKI to allow
  easy implementation and deployment of distributed applications
  on multiple grid environments.

だそうだ.
DC_initMaster() といった API を呼び出すことで,
サーバ, クライアントを簡単に作れるようにしているらしい.
ここで提供されている API は
BOINC API のかぶせ物か, それとも独自のコードか? (後者の気がする)


== SZTAKI Desktop Grid

今度は 'SZTAKI Desktop Grid' 内の

Install Your Own Desktop Grid
((<URL:http://desktopgrid.hu/index.php?page=23>))

を参考にサーバを構築してみる.
理由は, こっちのほうが研究に使いやすそうに感じたこと,
チュートリアルが分かりやすそう, の 2 つ.

fermat にログイン.

/etc/hosts, メールサーバの設定はパス.

BOINC に必要なパッケージは全てインストールしたつもりだが,
念のため, 記述通りに以下のパッケージをインストールする.

  $ sudo apt-get install apache2-mpm-prefork libapache2-mod-auth-plain
  $ sudo apt-get install libapache2-mod-php5 php5-cli
  $ sudo apt-get install mysql-server-5.0 php5-mysql
  $ sudo apt-get install pwgen    # これはなくてもよいだろう

libapache2-mod-auth-plain, pwgen が新たにインストールされた.

mysqladmin にて mysql の root パスワードの設定をするのは既に完了.

root で /root/.my.cnf を作成し, 以下のように記述する:

  [mysql]
  user = root
  password = <password>
  [mysqladmin]
  user = root
  password = <password>

<password> には, mysql の root パスワードを記述する.

root で /etc/apt/sources.list に以下を追記する:

  deb http://www.desktopgrid.hu/debian/ etch szdg

  # apt-get update
  (省略)
  W: GPG error: http://www.desktopgrid.hu etch Release: The following
  signatures couldn't be verified because the public key is not
  available: NO_PUBKEY XXXXXXXXXXXXXXXX
  W: You may want to run apt-get update to correct these problems

GPG error が出た.

  # apt-key advanced --keyserver wwwkeys.eu.pgp.net --recv-keys XXXXXXXXXXXXXXXX
  Executing: gpg --no-options --no-default-keyring --secret-keyring
  /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg
  --keyring /etc/apt/trusted.gpg --keyserver wwwkeys.eu.pgp.net
  --recv-keys XXXXXXXXXXXXXXXX
  gpg: requesting key XXXXXXXX from hkp server wwwkeys.eu.pgp.net
  gpg: key XXXXXXXX: public key "SZTAKI Desktop Grid Automatic
  Signing Key <desktopgrid@lpds.sztaki.hu>" imported
  gpg: no ultimately trusted keys found
  gpg: Total number processed: 1
  gpg:               imported: 1

  # apt-get update

今度は成功.

BOINC のインストール.
ページに 'for local usage' とに示されていた方をインストール.

  # apt-get install boinc boinc-skin-ldg

boinc というパッケージが見つからない. ので後のパッケージのみインストール.

  # apt-get install boinc-skin-ldg

後の文章から, 'boinc' は 'boinc-server' の間違いではないかと思い,
boinc-server をインストール.

  # apt-get install boinc-server

boinc_create_project といったコマンドが使えるようになった.
たぶん正解.

テストプロジェクト名を決める.

  long name: test of SZTAKI 1
  short name: test_sz1

root で以下のコマンドを実行する

  # boinc_create_project --name test_sz1 --long-name 'test of SZTAKI 1'
  Creating user boinc-test_sz1
  ERROR: Failed to create the project user
  Check /var/log/boinc.log for further details

  # cat /var/log/boinc.log
  2008-08-24 22:52:05 create_project Notice: Creating user boinc-test_sz1
  2008-08-24 22:52:05 create_project Debug: Running '/usr/sbin/adduser' '--system' '--quiet' '--home' '/var/lib/boinc/test_sz1' '--shell' '/bin/bash' '--group' '--gecos' 'test of SZTAKI 1' 'boinc-test_sz1'
  2008-08-24 22:52:05 create_project Debug: -- Begin command output --
  adduser: Please enter a username matching the regular expression configured
  via the NAME_REGEX configuration variable.  Use the `--force-badname'
  option to relax this check or reconfigure NAME_REGEX.
  2008-08-24 22:52:05 create_project Debug: -- End command output, exit code: 1 --

よく見ると, 入力したコマンドが間違っていた ('=' を付け忘れていた) のでやり直し.

  # boinc_create_project --name=test_sz1 --long-name='test of SZTAKI 1'

同じ結果.

NAME_REGEX について調べてみる.
入力したユーザ名が環境変数 NAME_REGEX による正規表現 (?) に従っていない
とのこと.
short name の '_' を取って 'testsz1' とする.

  # boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
  Creating user boinc-testsz1
  Creating directory /etc/boinc/testsz1
  Creating /etc/boinc/testsz1/boinc_env.sh
  Creating /etc/boinc/testsz1/config.xml
  Creating /etc/boinc/testsz1/project.xml
  Creating /var/lib/boinc/testsz1/.my.cnf
  Granting permissions on database boinc_testsz1 to boinc-testsz1
  ERROR: GRANT command failed
  Undoing changes
  Removing /var/lib/boinc/testsz1/.my.cnf
  Removing /etc/boinc/testsz1/project.xml
  Removing /etc/boinc/testsz1/config.xml
  Removing /etc/boinc/testsz1/boinc_env.sh
  Removing directory /etc/boinc/testsz1
  Warning: Directory /etc/boinc/testsz1 is not owned by boinc-testsz1, not removing
  Deleteing user boinc-testsz1
  Check /var/log/boinc.log for further details

もう 1 回実行すると,

  # boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'
  Creating user boinc-testsz1
  ERROR: A project with this name already exists
  Check /var/log/boinc.log for further details

/var/log/boinc.log には詳細な情報はなし.

boinc-testsz1 ユーザが残っているのかと思って以下のコマンドを実行する.

  # deluser boinc-testsz1
  /usr/sbin/deluser: The user `boinc-testsz1' does not exist.

どうやら mysql か何かに設定が残ってしまっているようだ.
プロジェクトを作るコマンドがあるなら削除するコマンドもあるだろうと思い,
探し出す.
使い方は --help コマンドで出てきた.

  # boinc_delete_project --name=testsz1
  WARNING!
  
  This script removes the BOINC project 'testsz1' and ALL of its data.
  Type 'yes' if this is what you want: yes
  Warning: Failed to stop project: /var/lib/boinc/testsz1/project/bin/start does not exist or is not executable
  /etc/cron.d/boinc-testsz1 does not exist
  /etc/boinc/testsz1/project.xml does not exist
  Removing permissions on database boinc_testsz1 from boinc-testsz1
  Dropping database boinc_testsz1
  /var/lib/boinc/testsz1/.my.cnf does not exist
  /etc/boinc/testsz1/boinc_env.sh does not exist
  /etc/boinc/testsz1/config.xml does not exist
  Removing directory /etc/boinc/testsz1
  User boinc-testsz1 does not exist

  # boinc_create_project --name=testsz1 --long-name='test of SZTAKI 1'

さっきと変わらず.

だめもとで, sudo でなく root でログインする.

  # su -

  # boinc_create_project --name=testsz2 --long-name='test of SZTAKI 2'
  Creating user boinc-testsz2
  Creating directory /etc/boinc/testsz2
  Creating /etc/boinc/testsz2/boinc_env.sh
  Creating /etc/boinc/testsz2/config.xml
  Creating /etc/boinc/testsz2/project.xml
  Creating /var/lib/boinc/testsz2/.my.cnf
  Granting permissions on database boinc_testsz2 to boinc-testsz2
  Setting the owner of /etc/boinc/testsz2
  Executing make_project
  Renaming the scheduler from cgi-bin/cgi to cgi-bin/scheduler
  Fixing security problems of make_project
  Fixing up /var/lib/boinc/testsz2/project/html/project/project.inc
  Creating /var/lib/boinc/testsz2/project/run_state_fermat.xml
  Creating /etc/cron.d/boinc-testsz2
  Creating /etc/apache/conf.d/boinc-testsz2.conf
  Reloading Apache
  Creating /etc/apache2/conf.d/boinc-testsz2.conf
  Reloading Apache2
  Creating empty /etc/boinc/testsz2/admin_users
  Creating initial empty statistics

成功したのは良かったが,
いちいち root でログインしないといけないのは汎用性が低い.
sudo でもなんとかならないか試してみる.

  $ sudo -s
  # cd /root
  # boinc_create_project --name=testsz3 --long-name='test of SZTAKI 3'
  (省略)
  Granting permissions on database boinc_testsz3 to boinc-testsz3
  ERROR: GRANT command failed
  Undoing changes
  (省略)

  # less /var/log/boinc.log
  (省略)
  2008-08-24 23:20:20 create_project Debug: -- Begin command output --
  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
  2008-08-24 23:20:20 create_project Debug: -- End command output, exit code: 1 --
  (省略)

mysql のパスワードでこけている.
一時的に mysql の root パスワードを空にしてみる

  # mysqladmin -u root password '' -p

-p オプションなしでも root になれるようになった.
例えば以下のコマンドも入力できた.

  # mysqladmin -u root password ''

/root/.my.cnf の中も同様に書き換える.
password の欄は以下のようにした.

  password =

  # boinc_create_project --name=testsz4 --long-name='test of SZTAKI 4'

成功.
しかし空パスワードは良くない. 今の設定は元に戻す.

実行しているユーザの環境変数から .my.cnf の
在り処を探しているのではないかと考える.

  # cp /root/.my.cnf /home/boincadm

  # boinc_create_project --name=testsz5 --long-name='test of SZTAKI 5'

成功.

研究室のサーバで複数人がそれぞれ異なるプロジェクトを運営する
場合, 各アカウントで mysql に root アカウントが必要だろう.
それができるか実験.

結果: mysql の root アカウントはマシン内で共通.

もしかすると, .my.cnf 内の "user = root" を "user = boincadm" などに
すれば良いのかもしれないが,
mysql 内でユーザを発行して ... と, はまりそうなのでパス.

プロジェクトの admin 権限を与える.

  # boinc_admin --NAME=testsz5 --add boincadm
  Password:
  Adding boincadm to /etc/sudoers
  Adding boincadm to .forward
  Setting the password for boincadm
  Please enter a password below for accessing the admin parts of the web page.
  It is recommended to use a different password here than the normal login
  password.
  New password:
  Re-type new password:

/etc/sudoers の末尾に以下が追記されていた.

  ## DO NOT REMOVE - boinc_admin: testsz5/boincadm
  boincadm        ALL = (boinc-testsz5) ALL
  ## DO NOT REMOVE - boinc_admin: testsz5/boincadm
  boincadm        ALL = (root) /bin/su - boinc-testsz5

"boincadm ALL = (ALL) ALL" が既に書かれているから無意味なのだが.
visudo でコメントアウトしておく.

.forward はどこか?

  # find / -name .forward
  /var/lib/boinc/testsz5/.forward

/var/lib/boinc/testsz5/.forward には

  boincadm

とだけ書かれていた.

プロジェクトの管理人になるには以下のコマンドを実行せよとのこと.

  $ sudo su - boinc-testsz5

ブラウザで管理者ページへ行くには以下の URL を入力すること.

http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/ops

basic 認証画面になった (自動的に設定されている) のだが,
User name と password に何を
入力してよいのか分からない.
.htaccess ファイルなどを探してみたが見つからない.
php か何かでアクセス制限しているのか?

ちなみに,

http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/

は BOINC ではなく SZTAKI Desktop Grid っぽい見た目になっていた.
公開プロジェクトじゃないのでまあよいとする.
嫌なら php ファイルを書き換えればよい.

これでプロジェクトの「入れ物」は出来た.
あとは走らせたいプログラムをコンパイルし,
プロジェクトへ登録などをすることになる.




= 080825

== desktop Grid computing

昨日の続き.

=== サンプルのコンパイル

DC-API を含むコードをコンパイルできる環境を構築する.
以下のページを参考にする.

Application development for the BOINC environment
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=27>))

fermat にログイン.

/etc/apt/sources.list に以下の行があることを確認.

  deb http://www.desktopgrid.hu/debian/ etch szdg

  $ sudo apt-get update

DC-API 開発パッケージをインストールする.

  $ sudo apt-get install libdcapi-boinc-dev
  $ sudo apt-get install libdcapi-doc
  $ sudo apt-get install gcc
  $ sudo apt-get install make
  $ sudo apt-get install autoconf
  $ sudo apt-get install automake

boinc-testsz5 ユーザとして実行ファイルを構築する.
boincadm で fermat にログインしなおす.

  $ cd ~boinc-testsz5
  $ sudo -u boinc-testsz5 mkdir uppercase
  $ cd uppercase

  $ sudo -u boinc-testsz5 \
    cp /usr/share/doc/libdcapi-common-dev/examples/uppercase-with-callback/* .

client.c, master.c ともにコメントを含めて 300 行以下.
これなら読むのにそれほど時間はかからないだろう.

sudo -u boinc-testsz5 をいちいちつけるのが面倒.
boinc-testsz5 ユーザにパスワードを設定したほうがいい?

  $ sudo -u boinc-testsz5 gzip -d *.gz
  $ sudo -u boinc-testsz5 autoreconf -if
  configure.ac:6: installing `./config.sub'
  configure.ac:8: installing `./missing'
  configure.ac:8: installing `./install-sh'
  configure.ac:6: installing `./config.guess'
  Makefile.am: installing `./depcomp'

  $ sudo -u boinc-testsz5 ./configure
  $ sudo -u boinc-testsz5 make

生成された中で,
'uppercase-example-master' と 'uppercase-example-client' が
BOINC のサーバとクライアントになる.


=== サンプルプロジェクトのインストール (client 編)

以下のページを参考に実行した.

Deploying applications on a BOINC server
((<URL:http://www.lpds.sztaki.hu/desktopgrid/index.php?page=28>))

  $ cd ~boinc-testsz5/project
  $ sudo -u boinc-testsz5 vi project.xml

以下を <boinc> タグ内に追記する. タグ内の最後に追記してみた.

  <app>
    <name>uppercase</name>
    <user_friendly_name>Example Application</user_friendly_name>
  </app>

  $ cd apps
  $ sudo -u boinc-testsz5 mkdir uppercase
  $ cd uppercase

実行するプラットフォームごとにディレクトリを用意する.
名前は <name>_<version #>_<platform> という形式でつけるのが慣習.
<version #> は 1.00 から 0.01 ずつ上がっていく.
<platform> は BOINC によって決められている.

  $ sudo -u boinc-testsz5 mkdir uppercase_1.00_i686-pc-linux-gnu
  $ cd uppercase_1.00_i686-pc-linux-gnu

さきほどコンパイル, 生成した実行ファイルを持ってくる.
格納するディレクトリ名と実行ファイル名は同じにしなければならないとのこと.

  $ sudo -u boinc-testsz5 cp \
    ~testsz5/uppercase/uppercase-example-client \
    uppercase_1.00_i686-pc-linux-gnu

実行ファイルが正当なものであることを示すため, 署名を行う.
これは任意.
update_versions が実行された時に自動で行われるらしい.
実行ファイル以外にも, ライブラリなどが含まれる場合は
全てのファイルに署名が必要.
今回はパス.

validator (帰ってきた結果が正当なものか判定するプログラム.
冗長性を持たせる場合は他の結果と比較したりする) をインストールする.
ローカルのプロジェクトで冗長性を持たせない場合も
validator は必要らしい.

自分で validator を作った場合はプロジェクトのホームの
下にある bin ディレクトリに置く.
今回はサンプルとして既に bin に
置かれている sample_trivial_validator を使う.

以下を config.xml に追記する.
ファイル末尾のほういある <daemon> タグが並んでいる場所に追記した.

  $ cd ~boinc-testsz5/project
  $ sudo -u boinc-testsz5 vi config.xml

  <daemon>
    <cmd>
      sample_trivial_validator -d 3 -app uppercase
    </cmd>
  </daemon>

初めて実行ファイルを置いた場合
(他のプラットフォーム用の実行ファイルを追加した場合も含む) は,
xadd コマンドを実行して project.xml の内容を反映 (コミット) させる.
既にコミットした実行ファイルのバージョンを上げる場合は不要.

  $ sudo -u boinc-testsz5 bin/xadd

新しいバージョンの実行ファイルを置いた場合は
update_versions コマンドを実行する.

  $ sudo -u boinc-testsz5 bin/update_versions

署名をしていないので警告が出る.
勝手に署名してくれるようなので 'y' を入力して先へ進む.


=== サンプルプロジェクトのインストール (master 編)

master プログラム置き場を作る.

  $ cd ~boinc-testsz5
  $ sudo -u boinc-testsz5 mkdir master_uppercase
  $ cd master_uppercase

  $ sudo -u boinc-testsz5 cp ../uppercase/dc-api.conf uppercase-master.conf

uppercase-master.conf 内の '*Must be specified*' と書かれた部分を書き換える.
具体的には以下のようになった.

  WorkingDirectory = /var/lib/boinc/testsz5/master_uppercase
  
  InstanceUUID = *********-****-****-****-************
  
  BoincConfigXML = /var/lib/boinc/testsz5/project/config.xml
  
  ProjectRootDir = /var/lib/boinc/testsz5/project

[Client-uppercase-example] については, デフォルトで記述されていた
'name = uppercase-example-client' のままにしておいた.

InstanceUUID については uuidgen コマンドによって得ることができる.

master プログラムを bin へコピーする.

  $ sudo -u boinc-testsz5 cp \
    ~boinc-testsz5/uppercase/uppercase-example-master \
    ~boinc-testsz5/project/bin

プロジェクトを開始するには以下のコマンドを実行する.

  $ sudo -u boinc-testsz5 \
    ~testsz5/project/bin/uppercase-example-master \
    -c /var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf

以下を config.xml に追記することでサーバと一緒に
master プログラムの開始, 停止ができる.

  $ cd ~testsz5/project
  $ sudo -u boinc-testsz5 vi config.xml

  <daemon>
    <cmd>
      uppercase-example-master -c \
      /var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf
    </cmd>
  </daemon>

サーバを起動してみる.

  $ sudo -u boinc-testsz5 bin/start
  Entering ENABLED mode
  Starting daemons
    Starting daemon: feeder -d 1
    Starting daemon: transitioner -d 3
    Starting daemon: file_deleter -d 3
    Starting daemon: db_purge -d 3 -min_age_days 14
    Starting daemon: sample_trivial_validator -d 3 -app uppercase
    Starting daemon: uppercase-example-master -c \
              /var/lib/boinc/testsz5/uppercase_master/uppercase-master.conf

クライアントでジョブを受けてみる.

mersenne に noda でログイン.

  mer$ cd ~/boinc/BOINC
  mer$ ./run_client --daemon

前のプロジェクトの仕事が残っていたので放棄する.

  mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6

起動中なので通らなかった.

  mer$ ./boinccmd -quit
  mer$ ./run_client --detach_project http://fermat.epa.scitec.kobe-u.ac.jp/test6

放棄完了.
新たなプロジェクトにアカウントを作る.

  mer$ ./boinccmd --create_account \
       http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
       xxx_at_xxx.xx.xx hogehoge noda
  status: Success
  poll status: operation in progress
  account key: ********

参加する.

  mer$ ./run_client --attach_project \
       http://fermat.epa.scitec.kobe-u.ac.jp/testsz5 \
       ********
  26-Aug-2008 00:40:46 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
  Master file download succeeded
  26-Aug-2008 00:40:51 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
  Sending scheduler request: Project initialization.  
  Requesting 1 seconds of work, reporting 0 completed tasks
  26-Aug-2008 00:40:56 [http://fermat.epa.scitec.kobe-u.ac.jp/testsz5/]
  Scheduler request failed: Couldn't connect to server

うまくサーバに接続できない.


fermat 側ではどうか.
boincadm でログインしている.

  fermat$ ~/client/BOINC

先日参加した test6 からは離脱し, testsz5 に加入
(コマンドは mersenne と似たようなもの).

ログを見ると, サーバに接続はできたものの, job をもらえるまでには行っていない.

  26-Aug-2008 00:48:46 [test of SZTAKI 5] You used the wrong URL for this project
  26-Aug-2008 00:48:46 [test of SZTAKI 5] The correct URL is http://localhost/testsz5/
  26-Aug-2008 00:48:46 [test of SZTAKI 5] Using the wrong URL can cause problems in some cases.
  26-Aug-2008 00:48:46 [test of SZTAKI 5] When convenient, detach this project, then reattach to http://localhost/testsz5/



実験一時中断. サーバ側を停止しておく.

  fermat$ sudo -u boinc-testsz5 ~boinc-testsz5/project/bin/stop