「cryoSPARCトラブルシューティング」の版間の差分
行1: | 行1: | ||
== 依存ライブラリ関係 == | == 依存ライブラリ関係 == | ||
− | === OSError: cublas library not found === | + | === [解決済み]OSError: cublas library not found === |
ジョブを実行したら以下のエラーが出てきた。 | ジョブを実行したら以下のエラーが出てきた。 | ||
<pre> | <pre> | ||
行37: | 行37: | ||
== 通信関係 == | == 通信関係 == | ||
− | === host key verification failed === | + | === [解決済み]host key verification failed === |
masterとstandalone workerの構成で、初めてワーカーにジョブを投げたときに以下のようなエラーが発生した。 | masterとstandalone workerの構成で、初めてワーカーにジョブを投げたときに以下のようなエラーが発生した。 | ||
<pre> | <pre> |
2020年9月25日 (金) 01:49時点における最新版
目次
依存ライブラリ関係
[解決済み]OSError: cublas library not found
ジョブを実行したら以下のエラーが出てきた。
[CPU: 190.1 MB] Traceback (most recent call last): File "cryosparc2_worker/cryosparc2_compute/run.py", line 72, in cryosparc2_compute.run.main File "cryosparc2_compute/jobs/jobregister.py", line 337, in get_run_function runmod = importlib.import_module(".."+modname, __name__) File "/net/fs10/work02/csparc/cryosparc2_worker/deps/anaconda/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "cryosparc2_worker/cryosparc2_compute/jobs/abinit/run.py", line 15, in init cryosparc2_compute.jobs.abinit.run File "cryosparc2_compute/engine/__init__.py", line 8, in <module> from engine import * File "cryosparc2_worker/cryosparc2_compute/engine/engine.py", line 12, in init cryosparc2_compute.engine.engine File "cryosparc2_worker/cryosparc2_compute/engine/gfourier.py", line 6, in init cryosparc2_compute.engine.gfourier File "/net/fs10/work02/csparc/cryosparc2_worker/deps/anaconda/lib/python2.7/site-packages/skcuda/fft.py", line 20, in <module> from . import misc File "/net/fs10/work02/csparc/cryosparc2_worker/deps/anaconda/lib/python2.7/site-packages/skcuda/misc.py", line 25, in <module> from . import cublas File "/net/fs10/work02/csparc/cryosparc2_worker/deps/anaconda/lib/python2.7/site-packages/skcuda/cublas.py", line 56, in <module> raise OSError('cublas library not found') OSError: cublas library not found
cryoSPARCのフォーラムを見ると、これはCUDA 10.1特有の問題と書いてあった。( https://discuss.cryosparc.com/t/patch-ctf-job-fails-child-process-with-pid-31697-has-terminated-unexpectedly/3670/19 )
実際、使用しているCUDAは 10.1であった(Dockerのベースイメージは https://hub.docker.com/r/nvidia/cuda/ の 10.1-cudnn7-devel-centos7 )。
cryoSPARCのインストール時に指定したCUDAのパスは /usr/local/cuda で、これは /usr/local/cuda-10.1 のシンボリックリンクになっている。その中のlib64/には、libcublasは存在しない。一方で /usr/local/cuda-10.2 というディレクトリも存在しており、その中のlib64/にはlibcublas.soが存在していた。
/usr/local/cuda-10.2/lib64 にライブラリパスを通せば良さそうなので、cryosparc2_worker/config.shに以下の行を付け加えた。
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64"
で、先ほど失敗したジョブをクローンして再度実行すると、今度はエラー無く実行できた。再インストールやマスターの再起動などは必要なし。cryoSPARC workerのconfig.shを編集するだけ。
通信関係
[解決済み]host key verification failed
masterとstandalone workerの構成で、初めてワーカーにジョブを投げたときに以下のようなエラーが発生した。
License is valid. Launching job on lane cs06 target csparc-worker-cs06 ... Running job on remote worker node hostname csparc-worker-cs06 Failed to launch! 255 Host key verification failed.
ssh関係でコケている(master⇒workerへのジョブ投下にはsshが使われるので)。ワーカーとマスターの両者で公開鍵がauthorized_keysに正しく登録されているかを今一度確認。
今回の場合、公開鍵はauthorized_keysにきちんと登録してあったが、ワーカー⇔マスターの間で一度もsshしたことが無い状態だった。(普通の計算機環境ではこういうことは起こらないと思うが、今回はdockerでcryoSPARCのクラスタを組んでいて、新たにクラスタに追加したdockerコンテナでこの手順を踏んでいないことが起こりえる。)
初めての相手にsshするときは相手を信用するか否か、相手の情報をknown_hostsへ登録するか否かを問うプロンプト(yes/no)が出ると思うが、それをcryoSPARCは自動で乗り越えられないようである。この手続きを手動のsshで一度踏んでおくと、上記のエラーは発生しなくなった。