はじめに
HTCondorという計算負荷の高いジョブに特化した計算負荷管理システムがあります。これをWindowsのPCに入れてなんとか計算を分散させたいのですが、公式ページは英語の手順書しかなく、まずインストールと実行で躓いたため、日本語で手順をメモしたいと思います。
環境
OS : Windows10
HTCondor : 9.1.0
手順
インストール
公式ページのWindows Administrator用のマニュアルを参考に設定していきます。
msiファイルのダウンロード
current channelのリンクから最新版の一個前(または二個前)のバージョンを取得します。
最新版は目下開発中(dailyフォルダ)であり、一つか二つ前のバージョンにしか「release」フォルダがないためです。releaseフォルダを探し、Windows用のmsiファイルをダウンロードします。2021/7次点ではreleaseのある最新バージョンは「9.1.0」です。
msiファイルの実行
管理者権限で実行します。管理者権限でPowerShellを開き、
msiexec /i condor-9.1.0-Windows-x64.msi
を実行するのが安全です。
ここで色々入力項目が出てきますが、これは公式ページに従って入力すればOKです。
インストール時に設定した内容は、グローバルな方の設定ファイルC:¥condor¥condor_config
に保存されています。
インストール後
公式ページには再起動不要と書いていますが、念のため一度再起動してください。
(私の場合は再起動しないとちゃんと動きませんでした)
再起動が終わったら、環境変数CONDOR_CONFIG
=C:¥condor¥condor_config
を設定します。
ここまで終わったら、管理者権限で実行したPowerShellで、コマンドcondor_status
でエラー無く実行できることを確認します。
ユーザ設定
Linuxだと必要ないのですが、Windowsの場合はユーザ設定を行わないと、作業用ディレクトリやほかのユーザのジョブの実行ができません。やっていきます。
condor_creddを起動
それ用の設定ファイルのテンプレートC:\condor\etc\condor_config.local.credd
の内容をローカルな方の設定ファイルC:\condor\condor_config.local
にコピーします。
次に、管理者権限でコマンドcondor_restart
を実行し、Condorを再起動します。
タスクマネージャーを開き、condor_credd application
が起動していることを確認します。
ユーザの登録
現在のユーザのままPowerShellを開き、コマンドcondor_store_cred add
でユーザを登録します。パスワードを聞かれるので、自分のパスワードを入力します。
成功すればユーザ登録完了です。
ジョブの実行
実行したいファイルと、実行したいファイルを記述したsubmitファイルの、少なくとも二つが必要です。
公式ページのクイックスタートガイドに従って書いていきます。
実行するファイルはsleep.bat
です。これの中身は公式ページ通りでOKです。
submitファイルはsubmit.sub
です。これは公式ページの中身に加えて、少し書き加えます。具体的に言うと、下のように、各ファイルは絶対パスで書いた方が安心です。
# sleep.sub -- simple sleep job
executable = C:\Users\<ユーザ名>\...\sleep.bat
log = C:\Users\<ユーザ名>\...\sleep.log
output = C:\Users\<ユーザ名>\...\outfile.txt
error = C:\Users\<ユーザ名>\...\errors.txt
should_transfer_files = Yes
when_to_transfer_output = ON_EXIT
queue
このファイルをPowerShell上でコマンドcondor_submit .\sleep.sub
で実行します。管理者権限PowerShellを使って絶対パスで指定してもいいし、素のPowerShellでもOKなはずです。
上のユーザの登録をしてないといろいろ面倒なことになるので注意です。
終わりに
本命は複数台のPCでのジョブ実行なのでまだ先は長いです。
今回設定試してみてうまくいった方法を書きましたが、正しいやり方やもっといい方法などあればコメントいただけるとありがたいです。
また、試した設定の中で関係なさそうなものは書かなかったのですが、実は関係あって上記のやり方だけだとうまくいかないよという場合も教えていただけると助かります。