- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Typical VTune output from typical FORTRAN code:
Line Source _____________________________ Cloc
132 ELSE
133 WTERM=WTERM-0.5*DELTA*W2(L,K)* ________ 65
134 & (UUU(L+1,K+1)+UUU(L,K+1)+VVV(LN,K+1)+VVV(L,K+1)___ 6
135 & +WWW(L,K)+WWW(L,K+1)) ___________ 11
136 ENDIF
137 IF(ISFCT(MVAR).GE.2)THEN ______________ 11
138 FWU(L,K)=0.5*WTERM
139 IF(ISFCT(MVAR).EQ.3)THEN
140 FWU(L,K)=WTERM
141 ENDIF
142 ELSE
143 WW=WTERM/(CON(L,K+1)+CON(L,K)+BSMALL) ___ 9
144 FWU(L,K)=MAX(WW,0.)*CON(L,K) _________ 316
145 & +MIN(WW,0.)*CON(L,K+1) ___________ 4
146 ENDIF
147 ELSE
148 FWU(L,K)=0.
149 ENDIF
150 ENDDO __________________________________ 4
My question is, "how can you (or the compiler) possibly optimize code when you have no clue how long instructions will take to execute?" I realize some of these are continuation lines; so I combine the times and treat them as one; but I look over the code and can see no consistent relationship between the complexity of the statement and the number of clock cycles! This is maddening.
I know why line 144 takes so long. It has a MAX and a MIN in it which are two branches. I'm not that stupid.
Am I interpreting this correctly? That the numbers in the right column (Cloc) means the average number of clock cycles required to perform this instruction? or is it not this specific? I mentioned in another message I've seen a C statement if(z>Z)then take 1784 clocks!
Line Source _____________________________ Cloc
132 ELSE
133 WTERM=WTERM-0.5*DELTA*W2(L,K)* ________ 65
134 & (UUU(L+1,K+1)+UUU(L,K+1)+VVV(LN,K+1)+VVV(L,K+1)___ 6
135 & +WWW(L,K)+WWW(L,K+1)) ___________ 11
136 ENDIF
137 IF(ISFCT(MVAR).GE.2)THEN ______________ 11
138 FWU(L,K)=0.5*WTERM
139 IF(ISFCT(MVAR).EQ.3)THEN
140 FWU(L,K)=WTERM
141 ENDIF
142 ELSE
143 WW=WTERM/(CON(L,K+1)+CON(L,K)+BSMALL) ___ 9
144 FWU(L,K)=MAX(WW,0.)*CON(L,K) _________ 316
145 & +MIN(WW,0.)*CON(L,K+1) ___________ 4
146 ENDIF
147 ELSE
148 FWU(L,K)=0.
149 ENDIF
150 ENDDO __________________________________ 4
My question is, "how can you (or the compiler) possibly optimize code when you have no clue how long instructions will take to execute?" I realize some of these are continuation lines; so I combine the times and treat them as one; but I look over the code and can see no consistent relationship between the complexity of the statement and the number of clock cycles! This is maddening.
I know why line 144 takes so long. It has a MAX and a MIN in it which are two branches. I'm not that stupid.
Am I interpreting this correctly? That the numbers in the right column (Cloc) means the average number of clock cycles required to perform this instruction? or is it not this specific? I mentioned in another message I've seen a C statement if(z>Z)then take 1784 clocks!
Message Edited by djbenton@dsllc.com on 06-15-200607:50 AM
Message Edited by djbenton@dsllc.com on 06-15-200607:52 AM
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page