cryoSPARCトラブルシューティング
提供: Eospedia
依存ライブラリ関係
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"
で、先ほど失敗したジョブをクローンして再度実行すると、今度はエラー無く実行できた。再インストールやマスターの再起動などは必要なし。config.shを編集するだけ。