On another point in the same code, I try and grab several adhacent rows from the original matrix 'v' and transpose them, and put them into what I call a slab. It is not a tile like you see in the chapel DGEMM.

        var vslab : [cslice, common] R;
//either
        [(r, c) in vslab.domain] vslab[r, c] = v[c, r];
//or
        [j in cslice] vslab[j, common] = v[j, common];

where R is a general real(?w).

Technically vslab is 'const' so I stabbed in the dark and tried

        const slab : domain(2) = (cslice, common);
        const vslab = [(r, c) in slab] v[c, r];

It seems to run in the same elapsed time, is genuinely 'const', and looks cleaner.

Does it create any un-necessary data, i.e. does it create a temporary on the right before assigning to vslab or does it do it only in cslice*common
real(?w) numbers?

Thanks - Damian

Pacific Engineering Systems International, 277-279 Broadway, Glebe NSW 2037
Ph:+61-2-8571-0847 .. Fx:+61-2-9692-9623 | unsolicited email not wanted here
Views & opinions here are mine and not those of any past or present employer


_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to