[theano-users] Re: Implementing a GPU op
Moreover if you install Theano from scratch : conda install theano pygpu Fetching package metadata . Solving package specifications: . Package plan for installation in environment /root/miniconda2: The following NEW packages will be INSTALLED: libgpuarray: 0.6.8-0 pygpu: 0.6.8-py27_0 theano: 0.9.0-py27_0 you need to run the following correction after : conda install libgpuarray=0.6.4-0 pygpu=0.6.4 And now that works on the server I was initially working on. -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
I found another server on which the code works as on your computer : Using cuDNN version 5110 on context None Preallocating 9151/11439 Mb (0.80) on cuda0 Mapped name None to device cuda0: Tesla K80 (:83:00.0) GpuEye{dtype='float32', context_name=None} [id A] '' |x [id B] |y [id C] Compiling GpuEye{dtype='float32', context_name=None} [id A] '' 0 |x [id B] |y [id C] Results [[ 1. 0. 0.] [ 0. 1. 0.] [ 0. 0. 1.] To reproduce the segmentation fault : *conda install pygpu* Fetching package metadata . Solving package specifications: . Package plan for installation in environment /root/miniconda2: The following packages will be UPDATED: libgpuarray: 0.6.4-0 --> 0.6.8-0 pygpu: 0.6.4-py27_1 --> 0.6.8-py27_0 Proceed ([y]/n)? y And then you can run again : import theano from theano.gpuarray.basic_ops import GpuEye x = theano.tensor.iscalar('x') y = theano.tensor.iscalar('y') z = GpuEye(dtype='float32', context_name=None)(x,y, theano.tensor.constant(0)) theano.printing.debugprint(z) print("Compiling") f = theano.function( [x,y], z) theano.printing.debugprint(f) print("Results") print(f(3, 3)) Using cuDNN version 5110 on context None Preallocating 9151/11439 Mb (0.80) on cuda0 Mapped name None to device cuda0: Tesla K80 (:83:00.0) GpuEye{dtype='float32', context_name=None} [id A] '' |x [id B] |y [id C] Compiling Segmentation fault (core dumped) -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
On Sunday, July 16, 2017 at 1:43:41 AM UTC+2, Pascal Lamblin wrote: > > Your original example seems to work for me, though, so it may have to do > with your setup: > I got it work when I removed device and contexts flags from my theanorc config file and used the command THEANO_FLAGS="init_gpu_device=cuda" python t.py If I add the device flag set to cuda or cuda0, it gives me a seg fault. I found this information when running the test below: "If you want GPU-related tests to run on a specific GPU device, and not the default one, you should use the init_gpu_device theano flag." What does that mean for my configuration ? What shall I change ? Yes, it gets tested in our daily buildbot and on several pull requests per > week, by our continuous integration systems. I also just launched it > manually: > $ theano-nose theano/gpuarray/tests/test_basic_ops.py:test_gpueye > Can not use cuDNN on context None: Disabled by dnn.enabled flag > Mapped name None to device cuda: GeForce GTX 580 (:02:00.0) > . > -- > Ran 45 tests in 21.645s > > OK > I get : ImportError: No module named test_basic_ops When I run THEANO_FLAGS="init_gpu_device=cuda" theano-nose /usr/local/lib/python2.7/dist-packages/theano/gpuarray/tests/test_basic_ops.py:test_gpueye I get if hasattr(theano.tests, "TheanoNoseTester"): AttributeError: 'module' object has no attribute 'tests' > You do not specify C and GPU implementations for the same Op, what we have > in general is two different Ops, one that has CPU inputs and outputs, and > computes on CPU, and another one with GPU inputs and outputs, that computes > on GPU. > This is necessary because the Variables in Theano are strongly typed, and > the device is part of the type. > There are optimizations that replace CPU Ops by GPU ones, inserting > transfer Ops (GpuFromHost, HostFromGpu) if necessary. > GPU Ops, like CPU ones, can have C (using CUDA) or Python implementations > (or both). > Are the rules name-based ? If there is the string Gpu in the name? Or is there any registration as other framework ? Thanks a lot for clarification on the optimization rules. > What surprises me is to get seg faults in the theano function, while I >> would have expected them to occur during evaluation on values... >> > > It is strange indeed. It may be possible that some GPU operations are > executed on GPU during the compilation phase, for constant folding > (constant propagation) for instance. > Does it happen as well with the latest master from GitHub? > Installing the latest dev version from github did not improve results. -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
What surprises me is to get seg faults in the theano function, while I would have expected them to occur during evaluation on values... On Wednesday, July 12, 2017 at 10:05:30 AM UTC+2, Christopher Bourez wrote: > > A second thing that is not clear to me in the documentation of Theano is > how you specify a C implementation and GPU implementation of the same own > op. Thank you > > On Wednesday, July 12, 2017 at 9:58:34 AM UTC+2, Christopher Bourez wrote: >> >> I've also tried to create an example with theano.gpuarray.nnet.GpuSoftmax >> but after compilation it got replaced another implementation*GpuDnnSoftmax >> : * >> >> >> *Elemwise{mul,no_inplace} [id A] ''|HostFromGpu(gpuarray) [id B] '' >>| |GpuSoftmax [id C] ''| |GpuFromHost [id D] ''| |x >> [id E] |InplaceDimShuffle{x,x} [id F] '' |TensorConstant{2} [id >> G]CompilingHostFromGpu(gpuarray) [id A] '' 5 |GpuElemwise{Mul}[(0, >> 1)] [id B] '' 4 |GpuArrayConstant{[[ 2.]]} [id C] >> |InplaceGpuDimShuffle{0,1} [id D] '' 3 >> |GpuDnnSoftmax{mode='channel', algo='accurate'} [id E] '' 2 >> |GpuContiguous [id F] '' 1 |InplaceGpuDimShuffle{0,1,x,x} [id G] >> '' 0 |(float32, (False, False))> [id H]*I'm >> looking of a good example with a GPU Kernel. >> >> On Wednesday, July 12, 2017 at 9:56:08 AM UTC+2, Christopher Bourez wrote: >>> >>> I don't know what you mean by "not modifying" the source for GpuEye: >>> - In this example, I'm importing a not modifyed GpuEye op from Theano >>> basic ops >>> - If I'm using theano.tensor.eye, then it does not use the GpuEye >>> >>> Also, are you sure this test >>> >>> https://github.com/Theano/Theano/blob/2625464534147fd70da60a3a3ddcb63ed8e5a416/theano/gpuarray/tests/test_basic_ops.py#L401 >>> works well ? >>> >>> On Wednesday, July 12, 2017 at 2:48:44 AM UTC+2, Pascal Lamblin wrote: >>>> >>>> Does it work if you do not modify the source for GpuEye at all? >>>> If it does, then maybe sharing your new source would get you more help. >>>> >>>> On Tuesday, July 11, 2017 at 12:12:03 PM UTC-4, Christopher Bourez >>>> wrote: >>>>> >>>>> Hi, >>>>> >>>>> I'm trying to implement a simple GPU op but it always gives me a >>>>> Segmentation fault during compilation, without other message. >>>>> >>>>> For example : >>>>> import theano >>>>> from theano.gpuarray.basic_ops import GpuEye >>>>> >>>>> x = theano.tensor.iscalar('x') >>>>> y = theano.tensor.iscalar('y') >>>>> z = GpuEye(dtype='float32', context_name=None)(x,y, >>>>> theano.tensor.constant(0)) >>>>> >>>>> theano.printing.debugprint(z) >>>>> print("Compiling") >>>>> f = theano.function( [x,y], z) >>>>> theano.printing.debugprint(f) >>>>> print("Results") >>>>> print(f(3, 3)) >>>>> >>>>> I've also tried with the softmax gpu function. Is there something I'm >>>>> missing ? >>>>> >>>>> I copied the file, created a complete new op, and the segmentation >>>>> fault appears when I'm defining a Kernel in gpu_kernels() method of the >>>>> op. >>>>> >>>>> Thank you a lot for your help >>>>> >>>> -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
A second thing that is not clear to me in the documentation of Theano is how you specify a C implementation and GPU implementation of the same own op. Thank you On Wednesday, July 12, 2017 at 9:58:34 AM UTC+2, Christopher Bourez wrote: > > I've also tried to create an example with theano.gpuarray.nnet.GpuSoftmax but > after compilation it got replaced another implementation*GpuDnnSoftmax : * > > > *Elemwise{mul,no_inplace} [id A] ''|HostFromGpu(gpuarray) [id B] '' >| |GpuSoftmax [id C] ''| |GpuFromHost [id D] ''| |x > [id E] |InplaceDimShuffle{x,x} [id F] '' |TensorConstant{2} [id > G]CompilingHostFromGpu(gpuarray) [id A] '' 5 |GpuElemwise{Mul}[(0, > 1)] [id B] '' 4 |GpuArrayConstant{[[ 2.]]} [id C] > |InplaceGpuDimShuffle{0,1} [id D] '' 3 > |GpuDnnSoftmax{mode='channel', algo='accurate'} [id E] '' 2 > |GpuContiguous [id F] '' 1 |InplaceGpuDimShuffle{0,1,x,x} [id G] > '' 0 |(float32, (False, False))> [id H]*I'm > looking of a good example with a GPU Kernel. > > On Wednesday, July 12, 2017 at 9:56:08 AM UTC+2, Christopher Bourez wrote: >> >> I don't know what you mean by "not modifying" the source for GpuEye: >> - In this example, I'm importing a not modifyed GpuEye op from Theano >> basic ops >> - If I'm using theano.tensor.eye, then it does not use the GpuEye >> >> Also, are you sure this test >> >> https://github.com/Theano/Theano/blob/2625464534147fd70da60a3a3ddcb63ed8e5a416/theano/gpuarray/tests/test_basic_ops.py#L401 >> works well ? >> >> On Wednesday, July 12, 2017 at 2:48:44 AM UTC+2, Pascal Lamblin wrote: >>> >>> Does it work if you do not modify the source for GpuEye at all? >>> If it does, then maybe sharing your new source would get you more help. >>> >>> On Tuesday, July 11, 2017 at 12:12:03 PM UTC-4, Christopher Bourez wrote: >>>> >>>> Hi, >>>> >>>> I'm trying to implement a simple GPU op but it always gives me a >>>> Segmentation fault during compilation, without other message. >>>> >>>> For example : >>>> import theano >>>> from theano.gpuarray.basic_ops import GpuEye >>>> >>>> x = theano.tensor.iscalar('x') >>>> y = theano.tensor.iscalar('y') >>>> z = GpuEye(dtype='float32', context_name=None)(x,y, >>>> theano.tensor.constant(0)) >>>> >>>> theano.printing.debugprint(z) >>>> print("Compiling") >>>> f = theano.function( [x,y], z) >>>> theano.printing.debugprint(f) >>>> print("Results") >>>> print(f(3, 3)) >>>> >>>> I've also tried with the softmax gpu function. Is there something I'm >>>> missing ? >>>> >>>> I copied the file, created a complete new op, and the segmentation >>>> fault appears when I'm defining a Kernel in gpu_kernels() method of the op. >>>> >>>> Thank you a lot for your help >>>> >>> -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
I've also tried to create an example with theano.gpuarray.nnet.GpuSoftmax but after compilation it got replaced another implementation*GpuDnnSoftmax : * *Elemwise{mul,no_inplace} [id A] ''|HostFromGpu(gpuarray) [id B] '' | |GpuSoftmax [id C] ''| |GpuFromHost [id D] ''| |x [id E] |InplaceDimShuffle{x,x} [id F] '' |TensorConstant{2} [id G]CompilingHostFromGpu(gpuarray) [id A] '' 5 |GpuElemwise{Mul}[(0, 1)] [id B] '' 4 |GpuArrayConstant{[[ 2.]]} [id C] |InplaceGpuDimShuffle{0,1} [id D] '' 3 |GpuDnnSoftmax{mode='channel', algo='accurate'} [id E] '' 2 |GpuContiguous [id F] '' 1 |InplaceGpuDimShuffle{0,1,x,x} [id G] '' 0 |(float32, (False, False))> [id H]*I'm looking of a good example with a GPU Kernel. On Wednesday, July 12, 2017 at 9:56:08 AM UTC+2, Christopher Bourez wrote: > > I don't know what you mean by "not modifying" the source for GpuEye: > - In this example, I'm importing a not modifyed GpuEye op from Theano > basic ops > - If I'm using theano.tensor.eye, then it does not use the GpuEye > > Also, are you sure this test > > https://github.com/Theano/Theano/blob/2625464534147fd70da60a3a3ddcb63ed8e5a416/theano/gpuarray/tests/test_basic_ops.py#L401 > works well ? > > On Wednesday, July 12, 2017 at 2:48:44 AM UTC+2, Pascal Lamblin wrote: >> >> Does it work if you do not modify the source for GpuEye at all? >> If it does, then maybe sharing your new source would get you more help. >> >> On Tuesday, July 11, 2017 at 12:12:03 PM UTC-4, Christopher Bourez wrote: >>> >>> Hi, >>> >>> I'm trying to implement a simple GPU op but it always gives me a >>> Segmentation fault during compilation, without other message. >>> >>> For example : >>> import theano >>> from theano.gpuarray.basic_ops import GpuEye >>> >>> x = theano.tensor.iscalar('x') >>> y = theano.tensor.iscalar('y') >>> z = GpuEye(dtype='float32', context_name=None)(x,y, >>> theano.tensor.constant(0)) >>> >>> theano.printing.debugprint(z) >>> print("Compiling") >>> f = theano.function( [x,y], z) >>> theano.printing.debugprint(f) >>> print("Results") >>> print(f(3, 3)) >>> >>> I've also tried with the softmax gpu function. Is there something I'm >>> missing ? >>> >>> I copied the file, created a complete new op, and the segmentation fault >>> appears when I'm defining a Kernel in gpu_kernels() method of the op. >>> >>> Thank you a lot for your help >>> >> -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Re: Implementing a GPU op
I don't know what you mean by "not modifying" the source for GpuEye: - In this example, I'm importing a not modifyed GpuEye op from Theano basic ops - If I'm using theano.tensor.eye, then it does not use the GpuEye Also, are you sure this test https://github.com/Theano/Theano/blob/2625464534147fd70da60a3a3ddcb63ed8e5a416/theano/gpuarray/tests/test_basic_ops.py#L401 works well ? On Wednesday, July 12, 2017 at 2:48:44 AM UTC+2, Pascal Lamblin wrote: > > Does it work if you do not modify the source for GpuEye at all? > If it does, then maybe sharing your new source would get you more help. > > On Tuesday, July 11, 2017 at 12:12:03 PM UTC-4, Christopher Bourez wrote: >> >> Hi, >> >> I'm trying to implement a simple GPU op but it always gives me a >> Segmentation fault during compilation, without other message. >> >> For example : >> import theano >> from theano.gpuarray.basic_ops import GpuEye >> >> x = theano.tensor.iscalar('x') >> y = theano.tensor.iscalar('y') >> z = GpuEye(dtype='float32', context_name=None)(x,y, >> theano.tensor.constant(0)) >> >> theano.printing.debugprint(z) >> print("Compiling") >> f = theano.function( [x,y], z) >> theano.printing.debugprint(f) >> print("Results") >> print(f(3, 3)) >> >> I've also tried with the softmax gpu function. Is there something I'm >> missing ? >> >> I copied the file, created a complete new op, and the segmentation fault >> appears when I'm defining a Kernel in gpu_kernels() method of the op. >> >> Thank you a lot for your help >> > -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[theano-users] Implementing a GPU op
Hi, I'm trying to implement a simple GPU op but it always gives me a Segmentation fault during compilation, without other message. For example : import theano from theano.gpuarray.basic_ops import GpuEye x = theano.tensor.iscalar('x') y = theano.tensor.iscalar('y') z = GpuEye(dtype='float32', context_name=None)(x,y, theano.tensor.constant(0)) theano.printing.debugprint(z) print("Compiling") f = theano.function( [x,y], z) theano.printing.debugprint(f) print("Results") print(f(3, 3)) I've also tried with the softmax gpu function. Is there something I'm missing ? I copied the file, created a complete new op, and the segmentation fault appears when I'm defining a Kernel in gpu_kernels() method of the op. Thank you a lot for your help -- --- 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 theano-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.