Hi,

I'm writing a elemwise Op with special purpose, it's c_code should be 
different when it's working with tensor objects. (Actually, it's for 
gh:#5471 <https://github.com/Theano/Theano/issues/5471>)

Current I'm only working with the CPU version.

Here's the approach I'm taking so far, I modified this line in 
tensor/elemwise.py 
<https://github.com/Theano/Theano/blob/master/theano/tensor/elemwise.py#L946> 
into:

defines = "#define TENSOR_ELEMWISE"
undefs = "#undef TENSOR_ELEMWISE"

The elemwise Op looks like:

class MyOp(scalar.ScalarOp):
    nin = 0
    # < ... >
    def c_code(self, node, name, inputs, outputs, sub):
        out, = outputs
        op_name = type(self).__name__
        code = '''
        #ifndef TENSOR_ELEMWISE
        %(out)s = 1227;
        #else
        %(out)s = 1337;
        #endif
        ''' % locals()
        return code

However, even though I build a graph with matrix input, the elemwise Op 
still takes the "1227" branch.
Further investigation of generated code shows MyOp is compiled into a 
separate mod.cpp than the main elemwise loop.

I suppose this could be due to a few optimizations. However, as I'm still 
unfamiliar with opt code base, I couldn't figure out where.

Any clue how to force the c_code of MyOp into the elemwise loop, so that 
the "1337" branch will be taken when dealing with tensor?

Thanks.

-- 

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

Reply via email to