Hi all,
First of all, I’m so happy with cryosparc2! It’s so cool. I’m just running into an annoying little problem…
GCtf seems to require cuda 8 libraries, whereas cryosparc2 itself requires cuda-9. How do I tell cryosparc2 to use different cuda libraries for external programs like GCtf? It’s not quite obvious to me where to modify the configuration.
Thanks a bunch, stay awesome.
Best
Liz
1 Like
Hi @ekellogg,
You’re correct, the most recently compiled version of GCTF requires CUDA 8 Libraries. In order to make this work with cryoSPARC instances that use a later version of CUDA, you can edit some code in our GCTF wrapper as a workaround until our next release.
If you navigate to the file cryosparc2_worker/cryosparc2_compute/jobs/ctf/run.py
, in run_ctf_estimation_gctf()
there is a function called work()
around line 738
. In there you will see the line:
"path_to_gctf_executable= os.path.join(abs_path_to_gctf_executables,params['path_to_gctf_executable'])
You can modify this line to be:
"path_to_gctf_executable= "export CUDA_PATH=<PATH_TO_CUDA_8> && " + os.path.join(abs_path_to_gctf_executables,params['path_to_gctf_executable'])
This may work on your system. Please note that we have not tested this yet, and is just a suggestion!
1 Like
Thanks for the suggestion! I found where to alter the code. Do I need to recompile cryosparc2 before testing it out? Thanks
Hi @ekellogg,
You do not. After saving, you can run the same GCTF job normally.
1 Like
Thanks for the quick response!
Hm. I’ve been trying to figure this out for a while now. The following command works on the command line, even if the path for cuda-8
libraries aren’t set:
export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64/" && /opt/cryosparc2/cryosparc2_worker/deps/external/gctf-1.06/bin/Gctf-v1.06_sm_30_cu8.0_x86_64 --apix 1.4 --kV 200.0 --Cs 2.7 --ac 0.1 --ctfstar /local/cryosparc2/P4/J79/micrographs_all_gctf.star --input_ctfstar /local/cryosparc2/P4/J79/input_ctfstar.star --gid 0 --boxsize 1024 --boxsuffix _automatch.star --logsuffix _gctf.log
However, when I start a GCTF job within cryosparc it throws this cryptic
error still…
====================================
Writing /local/cryosparc2/P4/J79/input_ctfstar.star
Gctf command: export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64/" && /opt/cryosparc2/cryosparc2_worker/deps/external/gctf-1.06/bin/Gctf-v1.06_sm_30_cu8.0_x86_64 --apix 1.4 --kV 200.0 --Cs 2.7 --ac 0.1 --ctfstar /local/cryosparc2/P4/J79/micrographs_all_gctf.star --input_ctfstar /local/cryosparc2/P4/J79/input_ctfstar.star --gid 0 --boxsize 1024 --boxsuffix _automatch.star --logsuffix _gctf.log
ERROR [Errno 2] No such file or directory
=============================
If I execute the same command on the terminal, it runs to completion. I’m not sure what file cryosparc is looking for and can’t find. Any idea?
Thanks a bunch!
Hm… looks like micrographs_all_gctf.star is not where it is supposed to be. I’m confused why this would be happening now with the seemingly unrelated code change I made.
oh i’m dumb… that’s the output, of course. there is some file that needs to be there that is missing it seems…
So… this command works fine on the terminal, but not when I try running cryosparc. I have been trying to figure out what this Error is referring to but I’m afraid we’re out of ideas.
export CUDA_PATH=/usr/local/cuda-8.0 && export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64 && /opt/cryosparc2/cryosparc2_worker/deps/external/gctf-1.06/bin/Gctf-v1.06_sm_30_cu8.0_x86_64 --apix 1.4 --kV 200.0 --Cs 2.7 --ac 0.1 --ctfstar /local/cryosparc2/P4/J79/micrographs_all_gctf.star --input_ctfstar /local/cryosparc2/P4/J79/input_ctfstar.star --gid 0 --boxsize 1024 --boxsuffix _automatch.star --logsuffix _gctf.log
omg… we just ended up reinstalling with cuda 8 libraries. all good now
1 Like