Sorry for late reply. Thanks for having a look into that. 

By type do you mean dimensions or what? 
cases is a square matrix (eg. with shape (32,32) stored as a shared variable
reach is a column vector (eg. with shape (32,1)) which is a resulg of the 
graph creation where a numpy vector is multiplied with tensors.  

I am slighly unsure but how would you do this with broadcasting? I need to 
multiply each row of cases with reach column.


On Tuesday, 21 February 2017 23:44:42 UTC+1, nouiz wrote:
>
> I discussed this with @lamblin. We could do an optimization to fix this, 
> but it would be a very narrow special case. We won't do it in the short 
> term. But you can manually do it yourself. Instead of calling tile, you can 
> reshape cases[group] and reach to 3d tensor with the right dimensions set 
> as broadcastable. This would allow you to do what you want efficently 
> without having alloc in the graph. This is a very good use of broadcasting.
>
> Frédéric
>
> On Wed, Feb 15, 2017 at 12:16 PM Frédéric Bastien <[email protected] 
> <javascript:>> wrote:
>
>> tile generate alloc. To help you about the broadcasting I need more 
>> information.
>>
>> what is:
>> cases.type?
>> reach.type?
>>
>> Fred
>> On Tue, Feb 7, 2017 at 4:51 PM Frédéric Bastien <[email protected] 
>> <javascript:>> wrote:
>>
>>> There is a high quantity of GpuAlloc. What you have shown don't tell us 
>>> what need it in Theano. Can you run the theano function with profiling, and 
>>> before the script end call theano.debugprint(your_theano_function) and send 
>>> this output? It will tell us what need it in the graph.
>>>
>>> On Fri, Feb 3, 2017 at 4:22 AM Šarūnas S. <[email protected] 
>>> <javascript:>> wrote:
>>>
>>>> I wrote a script in theano and started profiling it. What I noticed is 
>>>> GPU spends most of the time in GpuAlloc . 
>>>>
>>>> Could somebody explain me why this is happening and how I could reduce 
>>>> it?
>>>> In C or C++ I would preallocate it, but not sure how to do this in 
>>>> theano.   
>>>>
>>>> I am running on Windows 8.1 with Nvidia GTX 1070 with Theano 
>>>> @ 0.9.0dev4.dev-3c0be3d94102ac6864b2e5ab52ae96d07c6375c6 
>>>>
>>>>
>>>> I am attaching extensive profile result below:
>>>>
>>>> Function profiling
>>>> ==================
>>>>   Message: Sum of all(2) printed profiles at exit excluding Scan op 
>>>> profile.
>>>>   Time in 200 calls to Function.__call__: 3.463001e+00s
>>>>   Time in Function.fn.__call__: 3.451001e+00s (99.653%)
>>>>   Time in thunks: 3.425293e+00s (98.911%)
>>>>   Total compile time: 1.413800e+01s
>>>>     Number of Apply nodes: 590
>>>>     Theano Optimizer time: 1.158200e+01s
>>>>        Theano validate time: 9.390018e-01s
>>>>     Theano Linker time (includes C, CUDA code generation/compiling): 
>>>> 2.107000e+00s
>>>>        Import time 3.500128e-02s
>>>>        Node make_thunk time 2.042000e+00s
>>>>            Node GpuCAReduce{add}{0,1}(GpuElemwise{Composite{(i0 * (i1 * 
>>>> i2))}}[(0, 2)].0) time 9.000063e-03s
>>>>            Node GpuCAReduce{add}{0,1}(GpuElemwise{Mul}[(0, 1)].0) time 
>>>> 7.999897e-03s
>>>>            Node GpuDimShuffle{0,x}(GpuCAReduce{add}{0,1}.0) time 
>>>> 6.999969e-03s
>>>>            Node Shape_i{1}(<CudaNdarrayType(float32, matrix)>) time 
>>>> 4.999876e-03s
>>>>            Node GpuElemwise{Mul}[(0, 1)](CudaNdarrayConstant{[[ 240.
>>>> ]]}, GpuDimShuffle{0,x}.0) time 4.999876e-03s
>>>>
>>>>
>>>> Time in all call to theano.grad() 0.000000e+00s
>>>> Time since theano import 41.580s
>>>> Class
>>>> ---
>>>> <% time> <sum %> <apply time> <time per call> <type> <#call> <#apply> 
>>>> <Class name>
>>>>   90.5%    90.5%       3.100s       3.37e-04s     C     9200      92   
>>>> theano.sandbox.cuda.basic_ops.GpuAlloc
>>>>    7.4%    97.9%       0.254s       4.19e-06s     C    60600     606   
>>>> theano.sandbox.cuda.basic_ops.GpuElemwise
>>>>    1.0%    98.9%       0.034s       2.77e-06s     C    12200     122   
>>>> theano.sandbox.cuda.basic_ops.GpuCAReduce
>>>>    0.5%    99.4%       0.017s       1.84e-06s     C     9200      92   
>>>> theano.sandbox.cuda.basic_ops.GpuReshape
>>>>    0.5%    99.9%       0.016s       7.45e-07s     C    21400     214   
>>>> theano.sandbox.cuda.basic_ops.GpuDimShuffle
>>>>    0.1%    99.9%       0.003s       1.57e-06s     C     1900      19   
>>>> theano.tensor.elemwise.Elemwise
>>>>    0.1%   100.0%       0.002s       5.24e-07s     C     3800      38   
>>>> theano.compile.ops.Shape_i
>>>>    0.0%   100.0%       0.000s       0.00e+00s     C     1900      19   
>>>> theano.tensor.opt.MakeVector
>>>>    ... (remaining 0 Classes account for   0.00%(0.00s) of the runtime)
>>>>
>>>>
>>>> Ops
>>>> ---
>>>> <% time> <sum %> <apply time> <time per call> <type> <#call> <#apply> 
>>>> <Op name>
>>>>   90.5%    90.5%       3.100s       3.37e-04s     C     9200       92 
>>>>   GpuAlloc
>>>>    1.7%    92.2%       0.058s       4.41e-06s     C     13100      131 
>>>>   GpuElemwise{Mul}[(0, 1)]
>>>>    1.0%    93.2%       0.034s       3.21e-06s     C     10600      106 
>>>>   GpuElemwise{maximum,no_inplace}
>>>>    1.0%    94.2%       0.034s       2.77e-06s     C     12200      122 
>>>>   GpuCAReduce{add}{0,1}
>>>>    0.7%    94.8%       0.023s       3.54e-06s     C     6500       65 
>>>>   GpuElemwise{Composite{maximum(((i0 + i1) - i2), i3)}}[(0, 0)]
>>>>    0.5%    95.4%       0.018s       3.27e-06s     C     5500       55 
>>>>   GpuElemwise{mul,no_inplace}
>>>>    0.5%    95.9%       0.018s       4.61e-06s     C     3900       39 
>>>>   GpuElemwise{Composite{((i0 * i1) / i2)}}[(0, 1)]
>>>>    0.5%    96.4%       0.017s       1.84e-06s     C     9200       92 
>>>>   GpuReshape{2}
>>>>    0.4%    96.8%       0.014s       4.33e-06s     C     3200       32 
>>>>   GpuElemwise{Composite{(i0 * (i1 * i2))}}[(0, 2)]
>>>>    0.2%    97.0%       0.008s       8.69e-07s     C     9200       92 
>>>>   GpuDimShuffle{1,0}
>>>>    0.2%    97.3%       0.008s       5.33e-06s     C     1500       15 
>>>>   GpuElemwise{Composite{((i0 * i1) / i2)},no_inplace}
>>>>    0.2%    97.5%       0.008s       6.52e-07s     C     12200      122 
>>>>   GpuDimShuffle{0,x}
>>>>    0.2%    97.7%       0.007s       4.38e-06s     C     1600       16 
>>>>   GpuElemwise{Composite{(((i0 * i1 * maximum(i2, i3)) / (maximum(i2, i3
>>>> ) + maximum(i4, i3))) + ((i5 * i6 * maximum(i4, i3
>>>>
>>>

-- 

--- 
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.

Reply via email to