Hey, > So, as of now, the generation of row-wise reduction can be triggered > through the interface: > > viennacl::reduce<op_add>(viennacl::row_wise(Mat)) > viennacl::reduce<op_max>(viennacl::col_wise(Mat)) > viennacl::reduce<op_min>(Vec) > > This plugs into a statement under the form: > > ---------------------------------- > Node 1 > ============== > type : COMPOUND_OPERATION > operator : OPERATION_UNARY_REDUCTION > lhs : Node 2 > rhs : OPERATION_BINARY_ADD_TYPE
Are you sure about encoding OPERATION_BINARY_ADD_TYPE as RHS? This looks like a hack to me, not a clean solution. > > Node 2 > ============== > type : COMPOUND_OPERATION > operator : OPERATION_UNARY_ROW_WISE_TYPE > lhs : MATRIX > rhs : UNDEFINED > ------------------------------------ Yep, I agree with this. > I think that an operator is a symbolic entity, and that the difference > between an elementwise addition and a vector summation should not be > encoded at the level of the addition operation. This is why in both > cases the same OPERATION_BINARY_ADD_TYPE will be involved. Agree. > I think that the statement representation is nice enough, but the UI may > not be optimal from a compilation time perspective. > > On the other hand, calling > > viennacl::reduce(A, VIENNACL_ADD_ROW_WISE); > > seems not so great at all since this will involve a *lot* of duplication > in the scheduler and the generator. Yet, I don't see any way of having a > dynamic interface (no expression template) while preserving the > flexibility of the statement mentionned above. Any idea? Expression templates are to some extent needed to efficiently build up the expression tree. Even though I'd prefer to select the operations at runtime, I can't think of a way to efficiently modify the reduce<> interface for pure runtime arguments. Instead, we could use viennacl::row_reduce<op>(A); viennacl::column_reduce<op>(A); viennacl::reduce<op>(x); in order to avoid the introduction of viennacl::row_wise() and viennacl::col_wise() without any useful semantics outside reduce(). What's your opinion about this? Best regards, Karli ------------------------------------------------------------------------------ Android apps run on BlackBerry 10 Introducing the new BlackBerry 10.2.1 Runtime for Android apps. Now with support for Jelly Bean, Bluetooth, Mapview and more. Get your Android app in front of a whole new audience. Start now. http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk _______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel