I am using python 3. In this example I don't explicitly call GPU solve, but even when I do these lines <https://github.com/Theano/Theano/blob/824cb36921ccb7476dd1f8dea8dba8ac74d55afe/theano/gpuarray/linalg.py#L129-L136>in gpuarray.linalg will convert your string `trans` to an integer prior to calling cusolver.cusolverDnSgetrs
On Wednesday, April 12, 2017 at 3:49:03 PM UTC-6, nouiz wrote: > > Hope I do you use the trans parameter? Do you use Python 3? > > Make sure to pass the trans parameter as a srting. > > Le mer. 12 avr. 2017 14:06, Peter St. John <[email protected] > <javascript:>> a écrit : > >> This is partly related to #5844 >> <https://github.com/Theano/Theano/issues/5844>, but I'm getting errors >> when using theano's gpu_solve method: >> >> Here's the program I'm trying to get to work: >> >> import numpy as np >> >> import theano >> from theano import tensor >> import theano.tensor.slinalg as slinalg >> >> floatX = theano.config.floatX >> >> from theano.gpuarray.linalg import GpuCusolverSolve >> >> np.random.seed(0) >> A_val = np.random.randn(10, 5, 5).astype(floatX) >> b_val = np.random.randn(10, 5, 1).astype(floatX) >> >> x_np = np.linalg.solve(A_val, b_val) >> >> A = tensor.ftensor3() >> A.tag.test_value = A_val >> b = tensor.ftensor3() >> b.tag.test_value = b_val >> >> x, _ = theano.scan( >> lambda Ai, bi: slinalg.solve(Ai, bi), >> sequences=[A, b]) >> >> fn = theano.function([A, b], [x]) >> x_theano = fn(A_val, b_val) >> >> assert np.allclose(x_theano, x_np) >> >> >> When I run it on the CPU, everything works 'fine', except for some minor >> complaints: >> $ THEANO_FLAGS=device=cpu python gpu_solve_test.py >> /home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/nose_parameterized/__init__.py:7: >> >> UserWarning: The 'nose-parameterized' package has been renamed >> 'parameterized'. For the two step migration instructions, see: >> https://github.com/wolever/parameterized#migrating-from-nose-parameterized-to-parameterized >> >> (set NOSE_PARAMETERIZED_NO_WARN=1 to suppress this warning) >> "The 'nose-parameterized' package has been renamed 'parameterized'. " >> Can not use cuDNN on context None: cannot compile with cuDNN. We got this >> error: >> b'/tmp/try_flags_13i_4vht.c:4:19: fatal error: cudnn.h: No such file or >> directory\n #include <cudnn.h>\n ^\ncompilation >> terminated.\n' >> Mapped name None to device cuda: Tesla K40c (0000:04:00.0) >> >> >> But on the GPU, the linear solve fails: >> $ THEANO_FLAGS=device=cuda0 python gpu_solve_test.py >> Can not use cuDNN on context None: cannot compile with cuDNN. We got this >> error: >> b'/tmp/try_flags_o6g40qsx.c:4:19: fatal error: cudnn.h: No such file or >> directory\n #include <cudnn.h>\n ^\ncompilation >> terminated.\n' >> Mapped name None to device cuda0: Tesla K40c (0000:04:00.0) >> /home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/nose_parameterized/__init__.py:7: >> >> UserWarning: The 'nose-parameterized' package has been renamed >> 'parameterized'. For the two step migration instructions, see: >> https://github.com/wolever/parameterized#migrating-from-nose-parameterized-to-parameterized >> >> (set NOSE_PARAMETERIZED_NO_WARN=1 to suppress this warning) >> "The 'nose-parameterized' package has been renamed 'parameterized'. " >> Traceback (most recent call last): >> File "theano/scan_module/scan_perform.pyx", line 397, in >> theano.scan_module.scan_perform.perform >> (/home/pstjohn/.theano/compiledir_Linux-4.4--generic-x86_64-with-debian-stretch-sid-x86_64-3.6.1-64/scan_perform/mod.cpp:4490) >> File "/home/pstjohn/Packages/Theano/theano/gof/op.py", line 888, in rval >> r = p(n, [x[0] for x in i], o) >> File "/home/pstjohn/Packages/Theano/theano/gpuarray/linalg.py", line >> 208, in perform >> pivots_ptr, b_ptr, ldb, dev_info_ptr) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/skcuda/cusolver.py", >> >> line 637, in cusolverDnSgetrs >> trans = trans.encode('ascii') >> AttributeError: 'int' object has no attribute 'encode' >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> File "/home/pstjohn/Packages/Theano/theano/compile/function_module.py", >> line 884, in __call__ >> self.fn() if output_subset is None else\ >> File "/home/pstjohn/Packages/Theano/theano/scan_module/scan_op.py", >> line 963, in rval >> r = p(n, [x[0] for x in i], o) >> File "/home/pstjohn/Packages/Theano/theano/scan_module/scan_op.py", >> line 952, in p >> self, node) >> File "theano/scan_module/scan_perform.pyx", line 405, in >> theano.scan_module.scan_perform.perform >> (/home/pstjohn/.theano/compiledir_Linux-4.4--generic-x86_64-with-debian-stretch-sid-x86_64-3.6.1-64/scan_perform/mod.cpp:4606) >> File "/home/pstjohn/Packages/Theano/theano/gof/link.py", line 325, in >> raise_with_op >> reraise(exc_type, exc_value, exc_trace) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/six.py", >> line 685, in reraise >> raise value.with_traceback(tb) >> File "theano/scan_module/scan_perform.pyx", line 397, in >> theano.scan_module.scan_perform.perform >> (/home/pstjohn/.theano/compiledir_Linux-4.4--generic-x86_64-with-debian-stretch-sid-x86_64-3.6.1-64/scan_perform/mod.cpp:4490) >> File "/home/pstjohn/Packages/Theano/theano/gof/op.py", line 888, in rval >> r = p(n, [x[0] for x in i], o) >> File "/home/pstjohn/Packages/Theano/theano/gpuarray/linalg.py", line >> 208, in perform >> pivots_ptr, b_ptr, ldb, dev_info_ptr) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/skcuda/cusolver.py", >> >> line 637, in cusolverDnSgetrs >> trans = trans.encode('ascii') >> AttributeError: 'int' object has no attribute 'encode' >> Apply node that caused the error: GpuCusolverSolve{A_structure='general', >> trans='N', inplace=False}(GpuContiguous.0, GpuContiguous.0) >> Toposort index: 2 >> Inputs types: [GpuArrayType<None>(float32, matrix), >> GpuArrayType<None>(float32, matrix)] >> Inputs shapes: [(5, 5), (5, 1)] >> Inputs strides: [(20, 4), (4, 4)] >> Inputs values: ['not shown', gpuarray.array([[ 0.52106488], >> [-0.57578796], >> [ 0.14195317], >> [-0.31932843], >> [ 0.69153875]], dtype=float32)] >> Outputs clients: [['output']] >> >> HINT: Re-running with most Theano optimization disabled could give you a >> back-trace of when this node was created. This can be done with by setting >> the Theano flag 'optimizer=fast_compile'. If that does not work, Theano >> optimizations can be disabled with 'optimizer=None'. >> HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and >> storage map footprint of this apply node. >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> File "gpu_solve_test.py", line 27, in <module> >> x_theano = fn(A_val, b_val) >> File "/home/pstjohn/Packages/Theano/theano/compile/function_module.py", >> line 898, in __call__ >> storage_map=getattr(self.fn, 'storage_map', None)) >> File "/home/pstjohn/Packages/Theano/theano/gof/link.py", line 325, in >> raise_with_op >> reraise(exc_type, exc_value, exc_trace) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/six.py", >> line 685, in reraise >> raise value.with_traceback(tb) >> File "/home/pstjohn/Packages/Theano/theano/compile/function_module.py", >> line 884, in __call__ >> self.fn() if output_subset is None else\ >> File "/home/pstjohn/Packages/Theano/theano/scan_module/scan_op.py", >> line 963, in rval >> r = p(n, [x[0] for x in i], o) >> File "/home/pstjohn/Packages/Theano/theano/scan_module/scan_op.py", >> line 952, in p >> self, node) >> File "theano/scan_module/scan_perform.pyx", line 405, in >> theano.scan_module.scan_perform.perform >> (/home/pstjohn/.theano/compiledir_Linux-4.4--generic-x86_64-with-debian-stretch-sid-x86_64-3.6.1-64/scan_perform/mod.cpp:4606) >> File "/home/pstjohn/Packages/Theano/theano/gof/link.py", line 325, in >> raise_with_op >> reraise(exc_type, exc_value, exc_trace) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/six.py", >> line 685, in reraise >> raise value.with_traceback(tb) >> File "theano/scan_module/scan_perform.pyx", line 397, in >> theano.scan_module.scan_perform.perform >> (/home/pstjohn/.theano/compiledir_Linux-4.4--generic-x86_64-with-debian-stretch-sid-x86_64-3.6.1-64/scan_perform/mod.cpp:4490) >> File "/home/pstjohn/Packages/Theano/theano/gof/op.py", line 888, in rval >> r = p(n, [x[0] for x in i], o) >> File "/home/pstjohn/Packages/Theano/theano/gpuarray/linalg.py", line >> 208, in perform >> pivots_ptr, b_ptr, ldb, dev_info_ptr) >> File >> "/home/pstjohn/miniconda3/envs/pymc3/lib/python3.6/site-packages/skcuda/cusolver.py", >> >> line 637, in cusolverDnSgetrs >> trans = trans.encode('ascii') >> AttributeError: 'int' object has no attribute 'encode' >> Apply node that caused the error: GpuCusolverSolve{A_structure='general', >> trans='N', inplace=False}(GpuContiguous.0, GpuContiguous.0) >> Toposort index: 2 >> Inputs types: [GpuArrayType<None>(float32, matrix), >> GpuArrayType<None>(float32, matrix)] >> Inputs shapes: [(5, 5), (5, 1)] >> Inputs strides: [(20, 4), (4, 4)] >> Inputs values: ['not shown', gpuarray.array([[ 0.52106488], >> [-0.57578796], >> [ 0.14195317], >> [-0.31932843], >> [ 0.69153875]], dtype=float32)] >> Outputs clients: [['output']] >> >> HINT: Re-running with most Theano optimization disabled could give you a >> back-trace of when this node was created. This can be done with by setting >> the Theano flag 'optimizer=fast_compile'. If that does not work, Theano >> optimizations can be disabled with 'optimizer=None'. >> HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and >> storage map footprint of this apply node. >> Apply node that caused the error: >> for{gpu,scan_fn}(Elemwise{minimum,no_inplace}.0, >> GpuSubtensor{int64:int64:int8}.0, GpuSubtensor{int64:int64:int8}.0, >> Elemwise{minimum,no_inplace}.0) >> Toposort index: 20 >> Inputs types: [TensorType(int64, scalar), GpuArrayType<None>(float32, >> 3D), GpuArrayType<None>(float32, 3D), TensorType(int64, scalar)] >> Inputs shapes: [(), (10, 5, 5), (10, 5, 1), ()] >> Inputs strides: [(), (100, 20, 4), (20, 4, 4), ()] >> Inputs values: [array(10), 'not shown', 'not shown', array(10)] >> Outputs clients: [[HostFromGpu(gpuarray)(for{gpu,scan_fn}.0)]] >> >> HINT: Re-running with most Theano optimization disabled could give you a >> back-trace of when this node was created. This can be done with by setting >> the Theano flag 'optimizer=fast_compile'. If that does not work, Theano >> optimizations can be disabled with 'optimizer=None'. >> HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and >> storage map footprint of this apply node. >> >> >> Is there a separate issue from the 'trans' error from using scan? >> >> -- >> >> --- >> You received this message because you are subscribed to the Google Groups >> "theano-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- --- You received this message because you are subscribed to the Google Groups "theano-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
