macOS Sierraからクラスターサーバにジョブを投入したいのだが、
https://en.wikipedia.org/wiki/Comparison_of_cluster_softwareのリストからmacOSで使えるものは殆どない。

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

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

2.4.17

CentOS5とかのころには使っていたTorqueのバージョンである。これをmacOS Sierraに入れてみることにした
ソースはhttp://www.adaptivecomputing.com/products/open-source/torque-old/torque-archived-versions-library/より入手可能

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

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 です

mini:~ supervisor$ sudo echo "pbs.sybyl.local" > /var/lib/torque/server_name

これで pbsnode と打つと登録されている計算マシンが表示されます。

そしてジョブを投入してみました

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$

*メッセージの「from 192.168.0.13」にあるIPアドレスはpbs.sybyl.localの/etc/hostsの定義でマシン名になる
とエラーが返される。
本来ならqmgrで「submit_hosts」を定義すればいいのだろうが、正しく動かなかった。
これは管理ノードの/etc/hosts.equivにジョブ発行ノードを加える事で回避

[root@pbs ~]# vi /etc/hosts.equiv
mini.sybyl.local
 
[root@pbs ~]# chmod 600 /etc/hosts.equiv

この辺りはmungeが使える2.5.xの替えたほうが宜しいのかも

これでmacOS Sierraをジョブ発行ノードとして利用できます。

mini:torque illya$ qsub a.sh
23.pbs.sybyl.local
 
mini:torque illya$

管理ノード側のログには

[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

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

2.5.13の入手先はhttps://github.com/adaptivecomputing/torque/tree/2.5.13
まずはmungeをインストールApple/munge
その後に、2.5.13をインストール

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

結論、駄目でした。

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

すでにApple/CommandLineToolsはインストール済み。torqueのソースは他のマシンでyumdownloaderで入手

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は

mini:~ supervisor$ openssl
OpenSSL> version
OpenSSL 0.9.8zh 14 Jan 2016
OpenSSL>
OpenSSL> quit
mini:~ supervisor$

と 0.9.8zh を採用している。何が駄目だったのかを調べるため config.log を確認してみる

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が必要といわれたら対処することにした

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を実施します

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を行ってみる。っが途中で

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は使えるのか?

ただコンパイル情報として
「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が望ましいのかも。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-08-27 (日) 18:54:14 (874d)