LIR apparently failing to operate on APEX Floyd benchmark
Bugzilla Link | 1008 |
Created on | Jul 20, 2012 16:40 |
Version | svn |
OS | Linux |
Architecture | PC |
Attachments | crud.sac, floyd.sac, floyd2.sac |
Extended Description
Created an attachment (id=920) source code to reproduce fault The APL version of a Floyd's shortest path benchmark runs VERY slowly. When I looked at the IL, I saw that we generate WLs within the LACFUNs. The offending APL code looks like this: [4] siz←⍴D [5] :For k :In ⍳siz[0] [6] :For i :In ⍳siz[0] [7] :For j :In ⍳siz[1] [8] D[i;j]←(D[i;k]+D[k;j])⌊D[i;j] [9] :EndFor [10] :EndFor [11]:EndFor The IL generates ⍳siz[0] WITHIN the LOOPFUNs, and although at least one of them has been touched by LIR,they have not been lifted entirely out of the LOOPFUNs. The result is extremely slow code. When I rewrote the Floyd code, it ran quick like a bunny: inline double[.,.] floydXDD(double[.,.] D ,int QUADio) { siz = shape(D)[0]; for( k=0; k
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information