Hey again,

I realize that these features are actually accessible by calling diag, row,
col, on a matrix range/stride rather than a matrix.... it seems like the
API is complete, then!


2014-08-09 4:52 GMT+02:00 Philippe Tillet <phil.til...@gmail.com>:

> Hello,
>
> For now, the generator treats diag(), row(), col(), etc. as so called
> "offset modifying operators", so that soe equivalences would be both legal
> and valid, and induce no memory overhead
>
> diag(A + B) = diag(A) + diag(B)
> diag(diag(A)) = puts zeros everywhere in A except in its diagonal
> diag(row(i, A)) = puts the ith row of A in the diag of A
>
> The pitfall of this approach is that using ranges and strides on such
> items is impossible, and if diag, row, col, were to inherit from
> vector_base<>, then some functionalities would be lost. For now I can't
> think of any vital such functionality, but in the future one may arise as
> such. Hence my reluctance to implement diag(), row(), col() as vector_base
> instead of operators (plus the code bloat!)!
> On the other hand, changing the states of ranges and stride is not
> desirable, at all, either, excluding the fact that it would induce a huge
> API change that is not doable pre-2.0.
>
> So, I was thinking of adding "handling ranged/strided accesses to offset
> modifiers" on the TODO list of ViennaCL 2.x. Does anybody see any magical
> solution that could allow us to have it on, say, 1.7, without making diag,
> row and col actual objects?
> How about:
> binary_expression<vector, range, op_range>
> ?
>
> We could use it for diag, row, col only in v1.7, and integrate it in v2.0.
> Note that it would also allow, in ViennaCL 2.x, the concise use of
> y = range(x + z + w, range(a, b));
> which is less verbose than declaring xrange, zrange and wrange on the
> stack.
>
> That being said, it is not a vital feature to support ranges/slices on
> offset modifiers. I'm merely pointing this out because it seems to reveal a
> slight design flaw in the way we handle ranges/strides for now (or the way
> I handle diag/row/col ;))
>
> Philippe
>
>
>
------------------------------------------------------------------------------
_______________________________________________
ViennaCL-devel mailing list
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel

Reply via email to