目次

コンパイルによる導入

apt-get と異なる点

手順

Torque 6.0.1 on Ubuntu 14.04 でのインストール手順です
  1. ホスト名の設定
    $ sudoedit /etc/hosts
    • 127.0.0.1 は localhost からホスト名に変更
    • 127.0.1.1 はコメントアウト
    • ノードのホスト名も入れていく
  2. パッケージを http://www.adaptivecomputing.com/products/open-source/torque/ からダウンロード
    • ここでは、「torque-6.0.1-1456945733_daea91b.tar.gz」というファイル名でホームにダウンロードしたとする)
  3. パッケージを展開
    $ tar axvf torque-6.0.1-1456945733_daea91b.tar.gz
  4. 必要なパッケージをインストール
    $ sudo apt-get install libssl-dev libboost-dev
  5. インストールのための設定
    $ cd torque-6.0.1-1456945733_daea91b
    $ ./configure --prefix=/usr/local --with-default-server=hoge
    • –prefix: インストール先 (今回は /usr/local 以下に bin や lib が展開するようにした)
    • –with-default-server: サーバ名 (apt-get でインストールした際の /var/spool/torque/server_name の設定が不要になる)
  6. コンパイル
    $ make
    • マルチスレッド環境であれば、-j オプションを付けてスレッド数を指定すると速くコンパイルできる
  7. インストール (コンパイルしたものをインストール指定先にコピー)
    $ sudo make install
    • 1〜6 の作業を行った場所が NFS で共有され、計算機の構成が同じ場合、別ノードでの作業は 1〜6 の作業を省略できる。その場合、別ノードにログインした後、cd で同じパスに移動し、sudo make install するだけで良い。
    • なお、/var/spool のパーミッションの設定などは自動で処理されている
  8. ポートの設定 (/etc/services を編集する; 以下を追記する)
    pbs		15001/tcp
    pbs_mom		15002/tcp
    pbs_resmom	15003/tcp
    pbs_resmom	15003/udp
    pbs_sched	15004/tcp
  9. ライブラリの登録
    • .bashrc や .zshrc に以下を追記
      export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    1. ライブラリの追加
      $ sudoedit /etc/ld.so.conf.d/torque.conf
      • 内容
        /usr/local/lib
    2. ライブラリの適用
      1. sudo ldconfig
      2. .bashrc や .zshrc を再読み込み
        • bash の場合
          $ source ~/.bashrc
        • zsh の場合
          $ source ~/.zshrc
  10. デーモンの登録
    • /etc/init.d 配下に Ubuntu パッケージでインストールされるスクリプトを配置する
      • ただし、実行パスを変更する
      • torque-mom については trqauthd も実行させる必要があるため、trqauthd の実行も加える
    • 以下の条件で配置する
      • サーバ側(サーバでもジョブを処理させる場合): torque-server, torque-mom, torque-scheduler を配置
      • サーバ側 (サーバでジョブを処理させない場合): torque-server, torque-scheduler を配置
      • ノード側: torque-mom を配置
    • 編集済みのスクリプト
      • torque-server
        torque-server
        #! /bin/sh
        ### BEGIN INIT INFO
        # Provides:          torque-server
        # Required-Start:    $remote_fs $local_fs $named $network $time
        # Required-Stop:     $remote_fs $local_fs $named $network
        # Default-Start:     2 3 4 5
        # Default-Stop:      0 1 6
        # Short-Description: Start and stop the PBS server
        # Description:       PBS is a versatile batch system for SMPs and clusters.
        #                    This script controls the server process.
        ### END INIT INFO
         
        PATH=/usr/sbin:/usr/bin:/sbin:/bin
         
        DAEMON=/usr/sbin/pbs_server
        NAME=torque-server
        DESC="Torque batch queue server"
        PIDFILE=/var/spool/torque/server_priv/server.lock
         
        test -x $DAEMON || exit 0
         
        # Include torque defaults if available
        if [ -f /etc/default/torque-server ]; then
        	. /etc/default/torque-server
        elif [ -f /etc/default/torque ]; then
        	. /etc/default/torque
        fi
         
        # Load lsb functions
        . /lib/lsb/init-functions
         
        case "$1" in
          start)
        	log_daemon_msg "Starting $DESC"
         
        	if [ ! -r /var/spool/torque/server_priv/serverdb ]; then
        		DAEMON_SERVER_OPTS="-t create $DAEMON_SERVER_OPTS"
        	fi
        	log_progress_msg "$NAME"
        	start-stop-daemon --start --quiet --pidfile $PIDFILE \
        		--exec $DAEMON -- $DAEMON_SERVER_OPTS
        	log_end_msg $?
        	;;
         
          stop)
        	log_daemon_msg "Stopping $DESC" "$NAME"
        	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
        		--exec $DAEMON
        	log_end_msg $?
        	;;
         
          reload|force-reload)
          	log_daemon_msg "Reloading $DESC configuration files" "$NAME"
        	start-stop-daemon --stop --signal 1 --quiet \
        		--pidfile $PIDFILE --exec $DAEMON
        	log_end_msg $?
          ;;
         
          restart)
          	$0 stop && sleep 2 && $0 start
        	;;
         
          *)
        	N=/etc/init.d/`basename $0`
        	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        	exit 1
        	;;
        esac
         
        exit 0
      • torque-mom
        torque-mom
        #! /bin/sh
         
        ### BEGIN INIT INFO
        # Provides:          torque-mom
        # Required-Start:    $remote_fs $local_fs $named $network
        # Required-Stop:     $remote_fs $local_fs $named $network
        # Default-Start:     2 3 4 5
        # Default-Stop:      0 1 6
        # Short-Description: Start and stop the PBS Mom
        # Description:       PBS is a versatile batch system for SMPs and clusters.
        #                    This script controls the mom process.
        ### END INIT INFO
         
        PATH=/usr/sbin:/usr/bin:/sbin:/bin
        DAEMON=/usr/sbin/pbs_mom
        NAME=torque-mom
        DESC="Torque Mom"
        PIDFILE=/var/spool/torque/mom_priv/mom.lock
         
        test -x $DAEMON || exit 0
         
        # Include defaults if available
        if [ -f /etc/default/$NAME ] ; then
        	. /etc/default/$NAME
        fi
         
        # Load lsb functions
        . /lib/lsb/init-functions
         
        case "$1" in
          start)
        	log_daemon_msg "Starting $DESC" "$NAME"
        	start-stop-daemon --start --quiet --pidfile $PIDFILE \
        		--exec $DAEMON -- $DAEMON_OPTS
        	log_end_msg $?
        	;;
          stop)
        	log_daemon_msg "Stopping $DESC" "$NAME"
        	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
        		--exec $DAEMON
        	log_end_msg $?
        	;;
         reload|force-reload)
        	log_daemon_msg "Reoading $DESC configuration files" "$NAME"
        	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE \
        		--exec $DAEMON
        	log_end_msg $?
          ;;
          restart)
        	log_daemon_msg "Restarting $DESC" "$NAME"
        	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
        		--exec $DAEMON
        	sleep 1
        	start-stop-daemon --start --quiet --pidfile $PIDFILE \
        		--exec $DAEMON -- $DAEMON_OPTS
        	log_end_msg $?
        	;;
          *)
        	N=/etc/init.d/$NAME
        	log_action_msg "Usage: /etc/init.d/torque-mom {start|stop|restart|reload|force-reload}"
        	exit 2
        	;;
        esac
         
        exit 0
      • torque-scheduler
        torque-scheduler
        #! /bin/sh
         
        ### BEGIN INIT INFO
        # Provides:          torque-scheduler
        # Required-Start:    $all
        # Required-Stop:     $all
        # Should-Start:      $all
        # Should-Stop:       $all
        # Default-Start:     2 3 4 5
        # Default-Stop:      0 1 6
        # Short-Description: Start and stop the Torque scheduler
        # Description:       PBS is a versatile batch system for SMPs and clusters.
        #                    This script controls the scheduler.
        ### END INIT INFO
         
        PATH=/sbin:/bin:/usr/sbin:/usr/bin
        DAEMON=/usr/sbin/pbs_sched
        NAME=torque-scheduler
        DESC="Torque scheduler"
        PIDFILE=/var/spool/torque/sched_priv/sched.lock
         
        test -x $DAEMON || exit 0
         
        # Include defaults if available
        if [ -f /etc/default/$NAME ] ; then
        	. /etc/default/$NAME
        elif [ -f /etc/default/torque ]; then
        	. /etc/default/torque
        fi
         
        # set -e cannot work, otherwise the log_end_msg will not be shown
        # set -e
         
        # Load lsb functions
        . /lib/lsb/init-functions
         
         
        case "$1" in
          start)
        	log_begin_msg "Starting $DESC: "
        	start-stop-daemon --start --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON -- $DAEMON_OPTS
        	log_end_msg $?
        	;;
          stop)
        	log_begin_msg "Stopping $DESC: "
        	start-stop-daemon --stop --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON
        	log_end_msg $?
        	;;
          reload)
        	# send a SIGHUP to force scheduler to reload config file
        	log_begin_msg "Reloading $DESC configuration files"
        	start-stop-daemon --stop --signal 1 --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON
        	log_end_msg $?
                ;;
          force-reload)
        	# check whether $DAEMON is running. If so, restart
        	start-stop-daemon --stop --test --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON \
        	&& $0 restart \
        	|| exit 0
        	;;
          restart)
            log_begin_msg "Restarting $DESC: "
        	start-stop-daemon --stop --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON
        	sleep 1
        	start-stop-daemon --start --quiet \
        		--pidfile $PIDFILE \
        		--exec $DAEMON -- $DAEMON_OPTS
        	log_end_msg $?
        	;;
          *)
        	N=/etc/init.d/`basename $0`
        	log_success_msg "Usage: $N {start|stop|restart|force-reload}"
        	exit 1
        	;;
        esac
         
        exit 0
  11. 計算機起動時に起動するように設定
    $ sudo apt-get install sysv-rc-conf
    $ cd /etc/init.d
    $ sudo sysv-rc-conf 起動させたいスクリプト on
    • 以下の条件で起動させたいスクリプトを on にする
      • サーバ側(サーバでもジョブを処理させる場合): torque-server, torque-mom, torque-scheduler
      • サーバ側 (サーバでジョブを処理させない場合): torque-server, torque-scheduler
      • ノード側: torque-mom

GPUノードでの手順

  1. nvml のために、CUDA の他に GPU develop kit を GPU Deployment Kit | NVIDIA Developer からダウンロード
  2. GPU develop kit のインストール
    $ chmod +x linux_amd64_352_79_release.run
    $ sudo ./linux_amd64_352_79_release.run
  3. コンパイル情報のクリア
    $ cd torque-6.0.1-1456945733_daea91b
    $ make distclean
  4. インストールのための設定
    $ ./configure --prefix=/usr/local --with-default-server=hoge --enable-nvidia-gpus --with-nvml-include=/usr/include/nvidia/gdk --with-nvml-lib=/usr/lib/x86_64-linux-gnu --with-hwloc-path=/usr/include
    • –prefix: インストール先 (今回は /usr/local 以下に bin や lib が展開するようにした)
    • –with-default-server: サーバ名 (apt-get でインストールした際の /var/spool/torque/server_name の設定が不要になる)
    • –enable-nvidia-gpus: torque-mom で GPU を使うノード
    • –with-nvml-include: nvml のインクルードファイルのあるディレクトリのパス
    • –with-nvml-lib: nvml のライブラリファイルのあるディレクトリのパス
    • –with-hwloc-path: hwloc のあるディレクトリのパス
  5. 手順 の 6 以降の作業を GPU ノードで実行

参考サイト