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