&color(crimson){macOS Sierra};からクラスターサーバにジョブを投入したいのだが、
[[https://en.wikipedia.org/wiki/Comparison_of_cluster_software>+https://en.wikipedia.org/wiki/Comparison_of_cluster_software]]のリストから&color(crimson){macOS};で使えるものは殆どない。

-[[slurm]]
ここに現行&color(crimson){macOS};は無理と書いている[[https://slurm.schedmd.com/platforms.html>+https://slurm.schedmd.com/platforms.html]]
-Platform LSF
有償品. 調べると「slaveのみ」とある。計算は投げれない?
-[[OpenGridScheduler]]
調べたらサポート対象だった. 以前macOSと関係なく実装を試みたが設定が複雑で諦めた一品

っで色々調べ、古いバージョンのTorqueなら &color(crimson){macOS}; でも動くと分かり、手に入る古いバージョンで試してみた



***2.4.17 [#n61c5390]
CentOS5とかのころには使っていたTorqueのバージョンである。これを&color(crimson){macOS Sierra};に入れてみることにした
ソースは[[http://www.adaptivecomputing.com/products/open-source/torque-old/torque-archived-versions-library/>+http://www.adaptivecomputing.com/products/open-source/torque-old/torque-archived-versions-library/]]より入手可能






ここではqsubを流せればいいので「ジョブ発行」機能(client)のみを有効にした
その他の管理ノード、計算ノードらのTorqueのバージョンは&color(magenta){''全て同じ 2.4.17''}; にしてます。[[TORQUE/2.4.17]]

#code(nonumber){{
mini:src supervisor$ export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
mini:src supervisor$ gzip -cd torque-2.4.17.tar.gz | tar xf - && cd torque-2.4.17

mini:torque-2.4.17 supervisor$ ./configure --disable-server --disable-mom --disable-gui \
                                           --with-server-home=/var/lib/torque --without-tcl --without-tk \
                                           --disable-unixsockets
 :
Building components: server=no mom=no clients=yes
                     gui=no drmaa=no pam=no
PBS Machine type: darwin
Remote copy: /usr/bin/scp -rpB
PBS home: /var/lib/torque
Default server: mini.local
Unix Domain sockets: no
Tcl: disabled
Tk: disabled

Ready for 'make'.
mini:torque-2.4.17 supervisor$

mini:torque-2.4.17 supervisor$ make && sudo make install
}}
コマンドqsubらは/usr/local/binに置かれた


次に設定を施す。まず管理ノードの場所をこのジョブ発行ノードに定義する。
定義対象のファイルは /var/lib/torque/server_name です
#code(nonumber){{
mini:~ supervisor$ sudo echo "pbs.sybyl.local" > /var/lib/torque/server_name
}}
これで pbsnode と打つと登録されている計算マシンが表示されます。

そしてジョブを投入してみました
#code(nonumber){{
mini:torque illya$ qsub a.sh
qsub: Bad UID for job execution MSG=ruserok failed validating illya/illya from 192.168.0.13
mini:torque illya$
}}
&color(red){*};&size(10){メッセージの「from 192.168.0.13」にあるIPアドレスはpbs.sybyl.localの/etc/hostsの定義でマシン名になる};
とエラーが返される。
本来ならqmgrで「submit_hosts」を定義すればいいのだろうが、正しく動かなかった。
これは管理ノードの&color(darkgreen){/etc/hosts.equiv};にジョブ発行ノードを加える事で回避
#code(nonumber){{
[root@pbs ~]# vi /etc/hosts.equiv
mini.sybyl.local

[root@pbs ~]# chmod 600 /etc/hosts.equiv
}}
&size(10){この辺りはmungeが使える2.5.xの替えたほうが宜しいのかも};

これで&color(crimson){macOS Sierra};をジョブ発行ノードとして利用できます。
#code(nonumber){{
mini:torque illya$ qsub a.sh
23.pbs.sybyl.local

mini:torque illya$
}}

管理ノード側のログには
#code(nonumber){{
[root@pbs ~]# tracejob 23
/var/lib/torque/mom_logs/20170826: No such file or directory
/var/lib/torque/sched_logs/20170826: No such file or directory

Job: 23.pbs.sybyl.local

08/26/2017 20:01:36  S    enqueuing into bio, state 1 hop 1
08/26/2017 20:01:36  S    Job Queued at request of illya@mini.sybyl.local, owner = illya@mini.sybyl.local,     *改行してます
job name = a.sh, queue = bio
08/26/2017 20:01:36  A    queue=bio
08/26/2017 20:01:37  S    Job Run at request of root@pbs.sybyl.local
08/26/2017 20:01:37  S    Not sending email: User does not want mail of this type.
08/26/2017 20:01:37  A    user=illya group=fate jobname=a.sh queue=bio ctime=1503745296 qtime=1503745296       *改行してます
etime=1503745296 start=1503745297 owner=illya@mini.sybyl.local exec_host=n1.sybyl.local/0
                          Resource_List.cput=480:00:01 Resource_List.neednodes=1:ppn=1 Resource_List.nodect=1  *改行してます
Resource_List.nodes=1:ppn=1 Resource_List.walltime=240:00:00
08/26/2017 20:02:07  S    Not sending email: User does not want mail of this type.
08/26/2017 20:02:07  S    Exit_status=0 resources_used.cput=00:00:00 resources_used.mem=0kb                    *改行してます
resources_used.vmem=0kb resources_used.walltime=00:00:30
08/26/2017 20:02:07  S    dequeuing from bio, state COMPLETE
08/26/2017 20:02:07  A    user=illya group=fate jobname=a.sh queue=bio ctime=1503745296 qtime=1503745296       *改行してます
etime=1503745296 start=1503745297 owner=illya@mini.sybyl.local exec_host=n1.sybyl.local/0
                          Resource_List.cput=480:00:01 Resource_List.neednodes=1:ppn=1 Resource_List.nodect=1  *改行してます
Resource_List.nodes=1:ppn=1 Resource_List.walltime=240:00:00 session=5490
                          end=1503745327 Exit_status=0 resources_used.cput=00:00:00 resources_used.mem=0kb     *改行してます
resources_used.vmem=0kb resources_used.walltime=00:00:30
[root@pbs ~]#
}}


とジョブを受け付けて処理を完了させてます



***Torque-2.5.13 on macOS [#b668ff6f]
前述は管理ノード、計算ノードらのTorqueのバージョンは&color(magenta){''全て同じ 2.4.17''}; にしてテストを実施しました。
恐らく2.5.13でも全て同じ2.5.13にすれば動くのでしょうが、このバージョンではmungeが使える。
これを経由すれば管理、計算ノードはyumでインストール可能な 4.2.10 のままで使えないかを検討してみた。
4.xから pbs_iff から trqauthd に変更された。&color(red){*};&size(10){pbs_iffとtrqauthdは認証ではなく、承認を行うのみ. mungeは認証を司る};
[[TORQUE/2.5.13]]

2.5.13の入手先は[[https://github.com/adaptivecomputing/torque/tree/2.5.13>+https://github.com/adaptivecomputing/torque/tree/2.5.13]]
まずはmungeをインストール[[Apple/munge]]
その後に、2.5.13をインストール
#code(nonumber){{
mini:~ supervisor$ cd src/
mini:src supervisor$ unzip torque-2.5.13.zip     # 中身の確認は「zipinfo torque-2.5.13.zip」で
mini:src supervisor$ cd torque-2.5.13

mini:torque-2.5.13 supervisor$ ./configure --disable-server --disable-mom --disable-gui \
                                           --with-server-home=/var/lib/torque --without-tcl --without-tk \
                                           --enable-munge-auth --enable-munge-library --disable-unixsockets

mini:torque-2.5.13 supervisor$ make && sudo make install
}}
コンパイルには成功したが、いざ接続しようとすると
「qstat: Supporting protocol failure」
といわれ終了



***Torque-4.2.10 on macOS [#geea4ac4]
結論、駄目でした。


macOSから直接queueを投げられるようにしてみたいと思った

すでに[[Apple/CommandLineTools]]はインストール済み。torqueのソースは他のマシンでyumdownloaderで入手
#code(nonumber){{
mini:~ supervisor$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

mini:~ supervisor$ cd src/
mini:src supervisor$ gzip -cd torque-4.2.10.tar.gz | tar xf -
mini:src supervisor$ cd torque-4.2.10
mini:torque-4.2.10 supervisor$ ./configure
 :
 :
checking for SSL_accept in -lssl... no
configure: error: TORQUE needs lib openssl-devel in order to build
mini:torque-4.2.10 supervisor$
}}
とopenssl-develがないと言われエラーとなる。macOS Sierraでインストールされているopensslは
#code(nonumber){{
mini:~ supervisor$ openssl
OpenSSL> version
OpenSSL 0.9.8zh 14 Jan 2016
OpenSSL>
OpenSSL> quit
mini:~ supervisor$
}}
と 0.9.8zh を採用している。何が駄目だったのかを調べるため config.log を確認してみる
#code(nonumber){{
mini:torque-4.2.10 supervisor$ view config.log
 :
configure:17698: g++ -o conftest -g -O2   conftest.c -lssl    -lpthread -lrt >&5
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
ld: library not found for -lrt
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 :
mini:torque-4.2.10 supervisor$
}}
どうやらsslの問題ではなく、「-lrt」が問題だった見たい。これは「glibc」(GNU C library)の「librt.so.1」に該当するライブラリで
macOS Sierraにこのファイルはない。
「configure」のこの「-lrt」部分を削除して進めることにした。コンパイルの最中で再度GNU C libraryが必要といわれたら対処することにした
#code(diff,nonumber){{
mini:torque-4.2.10 supervisor$ diff -u configure.old configure
--- configure.old       2015-03-20 12:25:05.000000000 +0900
+++ configure   2017-04-29 12:12:06.000000000 +0900
@@ -17649,7 +17649,7 @@
 { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
 if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
-  PTHREAD_LIBS="$PTHREAD_LIBS -lpthread -lrt"
+  PTHREAD_LIBS="$PTHREAD_LIBS -lpthread"
 else
   { { $as_echo "$as_me:$LINENO: error: TORQUE needs pthreads in order to build" >&5
 $as_echo "$as_me: error: TORQUE needs pthreads in order to build" >&2;}
mini:torque-4.2.10 supervisor$
}}
こうして再度configureを実施します
#code(nonumber){{
mini:torque-4.2.10 supervisor$ ./configure
 :
Building components: server=yes mom=yes clients=yes
                     gui=no drmaa=no pam=no
PBS Machine type    : darwin
Remote copy         : /usr/bin/scp -rpB
PBS home            : /var/spool/torque
Default server      : mini.local

Unix Domain sockets :
Linux cpusets       : no
Tcl                 : disabled
Tk                  : disabled
Authentication      : classic (pbs_iff)

Ready for 'make'.
mini:torque-4.2.10 supervisor$
}}
一応、最後まで通った。これでmakeを行ってみる。っが途中で
#code(nonumber){{
In file included from ../../../src/include/pbs_job.h:101:
../../../src/include/hash_table.h:83:10: fatal error: 'endian.h' file not found
#include "endian.h" /* LITTLE_ENDIAN */
         ^
1 error generated.
}}
endian.hがないとしてエラーが発生した。
このファイル、Linuxでは「glibc-headers」に含まれるもので、やはりglibcが必須のようだ。。
一応glibcのコンパイルを試みたが、、ハードルが高すぎで諦めた。



***どのバージョンまでmacOSは使えるのか? [#y7359305]
ただコンパイル情報として
「6.1.1.1」trq_auth.cでエラー
「5.1.3」trq_auth.cでエラー
「4.2.10」「4.0.2」attr_fn_hold.cでエラー
「3.0.6」OK
ついでに「PBSPro」はconfigure段階で落ちた


入手先
3.x系(3.0.6, 2012-07-13)はadaptivecomputingのサイトから
2.5.x系(2.5.13, 2013-08-01)はgit hubから「https://github.com/adaptivecomputing/torque」
2.4.x系(2.4.17, 2012-03-29)はadaptivecomputing

各種のCHANGELOGを読むと4.xらのバックポートが行われている。より新しい2.5.13が望ましいのかも。
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS