「cryoSPARCトラブルシューティング」の版間の差分

提供: Eospedia
移動: 案内検索
(OSError: cublas library not found)
 
(同じ利用者による、間の3版が非表示)
行1: 行1:
 
== 依存ライブラリ関係 ==
 
== 依存ライブラリ関係 ==
=== OSError: cublas library not found ===
+
=== [解決済み]OSError: cublas library not found ===
signle workstationインストール(Docker)ではこのようなエラーは出なかったが、docker swarmでクラスタを構築してmasterとworkerに分けて使った場合に生じたエラー。cryoSPARCのインストール方法が異なるだけで、Dockerイメージとしては同じものを使っているので、理解に苦しむ挙動。
+
ジョブを実行したら以下のエラーが出てきた。
 
<pre>
 
<pre>
 
[CPU: 190.1 MB]  Traceback (most recent call last):
 
[CPU: 190.1 MB]  Traceback (most recent call last):
行22: 行22:
 
OSError: cublas library not found
 
OSError: cublas library not found
 
</pre>
 
</pre>
 +
 +
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に以下の行を付け加えた。
 +
<pre>
 +
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.2/lib64"
 +
</pre>
 +
 +
で、先ほど失敗したジョブをクローンして再度実行すると、今度はエラー無く実行できた。再インストールやマスターの再起動などは必要なし。cryoSPARC workerのconfig.shを編集するだけ。
 +
 +
== 通信関係 ==
 +
=== [解決済み]host key verification failed ===
 +
masterとstandalone workerの構成で、初めてワーカーにジョブを投げたときに以下のようなエラーが発生した。
 +
<pre>
 +
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.
 +
</pre>
 +
 +
ssh関係でコケている(master⇒workerへのジョブ投下にはsshが使われるので)。ワーカーとマスターの両者で公開鍵がauthorized_keysに正しく登録されているかを今一度確認。
 +
 +
今回の場合、公開鍵はauthorized_keysにきちんと登録してあったが、ワーカー⇔マスターの間で一度もsshしたことが無い状態だった。(普通の計算機環境ではこういうことは起こらないと思うが、今回はdockerでcryoSPARCのクラスタを組んでいて、新たにクラスタに追加したdockerコンテナでこの手順を踏んでいないことが起こりえる。)
 +
 +
初めての相手にsshするときは相手を信用するか否か、相手の情報をknown_hostsへ登録するか否かを問うプロンプト(yes/no)が出ると思うが、それをcryoSPARCは自動で乗り越えられないようである。この手続きを手動のsshで一度踏んでおくと、上記のエラーは発生しなくなった。

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で一度踏んでおくと、上記のエラーは発生しなくなった。