in simple terms, if non-integer row keying is used anywhere, it tries to
rewrite pipelines so that product orientations never require non-int keys
to denote columns. In case pipeline makes it impossible, optimizer will
refuse to produce a plan.

e.g. suppose A is distributed string-keyed.

(A.t %.% A) collect  // ok

A.t collect // optimizer error

val (U, V, s) = dssvd(A) // OK, U keyed same way as A

val (U,V) = dals (A) // OK too

etc. etc.




On Wed, Jun 18, 2014 at 6:02 PM, Dmitriy Lyubimov <dlie...@gmail.com> wrote:

>
>
>
> On Wed, Jun 18, 2014 at 5:58 PM, Ted Dunning <ted.dunn...@gmail.com>
> wrote:
>
>> On Wed, Jun 18, 2014 at 5:48 PM, Dmitriy Lyubimov <dlie...@gmail.com>
>> wrote:
>>
>> > >
>> > > Or simply that rows and columns are labeled?
>> > >
>> > rows are labeled. but they have algebraic signficance.
>> >
>>
>> Do they really?
>>
>> For the in-core system, if I add two matrices with different row labels,
>> the row labels are ignored.
>
>
> In-core system has always hard ordinal indexing. The out-of-core system
> has only hard ordinal indexing for columns, or rows when they are
> int-keyed.
>
>  If I multiply two matrices where the column
>> labels of the first matrix are in a different order than the row labels of
>> the second, the labels are again ignore.  If I do the transpose
>> multiplication where the row labels aren't in the same order, again, no
>> effect.
>>
>> Does the DSL actually permute the rows to make operations work correctly?
>>
>
> You'd be surprised  :)
>
>

Reply via email to