cuStateVec issue on GPU in Google Colab
95-martin-orion opened this issue · 3 comments
Branched from #495. @Gopal-Dahale wrote:
New problem that I faced when using qsimcirq as backend in
tfq.ControlledPQC
.circuit # some cirq circuit observable # some observable gpu_options = qsimcirq.QSimOptions(use_gpu=True, gpu_mode=1) qsim_simulator = qsimcirq.QSimSimulator(qsim_options=gpu_options) computation_layer = tfq.layers.ControlledPQC(circuit, observable,backend = qsim_simulator)
ValueError: cuStateVec GPU execution requested, but not supported. If your device has GPU support and the NVIDIA cuStateVec library is installed, you may need to compile qsim locally.
I have put the cuquantum files in
/usr/local/cuquantum
and in.bashrc
have added these linesexport CUQUANTUM_ROOT=/usr/local/cuquantum export LD_LIBRARY_PATH=${CUQUANTUM_ROOT}/lib:${LD_LIBRARY_PATH} export CUQUANTUM_DIR=/usr/local/cuquantum
followed by
source ~/.bashrc
. Ran the test program given on docs site (statevec_example
) which gave the resultexample PASSED
.Any solution for this would be helpful.
@Gopal-Dahale, can you confirm that you set up both cuQuantum and NVCC on your device before building qsim? The error you are seeing occurs when the qsim_custatevec
is not initialized, which occurs if either cuQuantum or NVCC is not available when qsim is initially built.
Relevant code snippets:
qsim/pybind_interface/decide/decide.cpp
Lines 84 to 86 in f0216dd
Lines 42 to 43 in f0216dd
@95-martin-orion This issue is resolved for me. Here are the steps that helped me and can be used on google colab.
- Download the tarball of cuquantum and extract it to
/usr/local/cuquantum
. - Set the following environment variables
import os
os.environ['CUQUANTUM_ROOT']='/usr/local/cuquantum'
os.environ['CUQUANTUM_DIR']='/usr/local/cuquantum'
os.environ['LD_LIBRARY_PATH']=f"/usr/local/cuquantum/lib:{os.environ['LD_LIBRARY_PATH']}"
os.environ['PATH']=f"/usr/local/cuquantum/lib:{os.environ['PATH']}"
- Verify cuquantum installation by executing the code example.
- Install qsimcirq.
- Verify qsimcirq installation and its integration with cuquantum by executing the example with these options.
I think we can close this issue.
FYI, from 0.16.0, qsim uses CUQUANTUM_ROOT
only, no more CUQUANTUM_DIR
.