एफएलओपी (लोअरकेस एस प्रति मार्टिनो फर्नांडीस टिप्पणी प्रति एफएलओपी के बहुवचन को इंगित करता है) मशीन भाषा फ्लोटिंग पॉइंट निर्देशों का जिक्र कर रहा है, इसलिए यह निर्भर करता है कि आपका कोड कितना निर्देश संकलित करता है।
सबसे पहले, यदि इन सभी चर पूर्णांक हैं, तो इस कोड में कोई FLOP नहीं है। आइए मान लीजिए कि आपकी भाषा इन सभी स्थिरांकों और चरों को सिंगल-प्रेसिजन फ्लोटिंग पॉइंट वेरिएबल्स के रूप में पहचानती है (एकल-परिशुद्धता का उपयोग करके स्थिरांक को आसान बनाता है)।
इस कोड (MIPS पर) करने के लिए संकलन सकता है:
Assignment of variables: x is in $f1, a is in $f2, i is in $f3.
All other floating point registers are compiler-generated temporaries.
$f4 stores the loop exit condition of 10.0
$f5 stores the floating point constant 1.0
$f6 stores the floating point constant 2.0
$t1 is an integer register used for loading constants
into the floating point coprocessor.
lui $t1, *upper half of 0.0*
ori $t1, $t1, *lower half of 0.0*
lwc1 $f3, $t1
lui $t1, *upper half of 10.0*
ori $t1, $t1, *lower half of 10.0*
lwc1 $f4, $t1
lui $t1, *upper half of 1.0*
ori $t1, $t1, *lower half of 1.0*
lwc1 $f5, $t1
lui $t1, *upper half of 2.0*
ori $t1, $t1, *lower half of 2.0*
lwc1 $f6, $t1
st: c.gt.s $f3, $f4
bc1t end
add.s $f1, $f1, $f5
lui $t1, *upper half of 5.0*
ori $t1, $t1, *lower half of 5.0*
lwc1 $f2, $t1
mul.s $f2, $f2, $f1
add.s $f2, $f2, $f6
add.s $f3, $f3, $f5
j st
end: # first statement after the loop
तो Gabe है परिभाषा के अनुसार, वहाँ पाश (3x add.s
और 1x mul.s
) के अंदर 4 फ्लॉप रहे हैं। यदि आप लूप तुलना c.gt.s
पर भी गिनती करते हैं तो 5 एफएलओपी हैं। प्रोग्राम द्वारा उपयोग किए जाने वाले कुल 40 (या 50) एफएलओपी के लिए इसे 10 से गुणा करें।
एक बेहतर अनुकूलन संकलक यह मान सकता है कि a
का मान लूप के अंदर उपयोग नहीं किया जाता है, इसलिए इसे केवल a
के अंतिम मान की गणना करने की आवश्यकता है। यह कोड ऐसा दिखता है जैसे
lui $t1, *upper half of 0.0*
ori $t1, $t1, *lower half of 0.0*
lwc1 $f3, $t1
lui $t1, *upper half of 10.0*
ori $t1, $t1, *lower half of 10.0*
lwc1 $f4, $t1
lui $t1, *upper half of 1.0*
ori $t1, $t1, *lower half of 1.0*
lwc1 $f5, $t1
lui $t1, *upper half of 2.0*
ori $t1, $t1, *lower half of 2.0*
lwc1 $f6, $t1
st: c.gt.s $f3, $f4
bc1t end
add.s $f1, $f1, $f5
add.s $f3, $f3, $f5
j st
end: lui $t1, *upper half of 5.0*
ori $t1, $t1, *lower half of 5.0*
lwc1 $f2, $t1
mul.s $f2, $f2, $f1
add.s $f2, $f2, $f6
इस मामले में, आप 2 कहते हैं और पाश अंदर 1 तुलना (10 से mutiplied आप 20 या 30 फ्लॉप देता है) है, प्लस 1 गुणा और लूप के बाहर 1 इसके अलावा उत्पन्न कर सकता है। इस प्रकार, आपके प्रोग्राम में अब 22 या 32 एफएलओपी लगता है कि हम तुलनाओं की गणना करते हैं या नहीं।
नाइटपिक: फ्लॉप ** फ्लो ** ओटिंग पॉइंट ** ओ ** पेरेशन ** पी ** एर ** एस ** पारिस्थितिकी, प्रदर्शन का एक उपाय है। एफएलओपी ** FL ** ओटिंग पॉइंट ** ओपी ** eration है। एफएलओपी (लोअरकेस एस) एफएलओपी का बहुवचन है। –
आप चर प्रकारों का उल्लेख नहीं करते हैं। यदि सभी चींटियां हैं, तो यह 0 फ्लॉप है। –
फ़्लॉप्स फ़्लोटिंग पॉइंट ऑपरेशंस के लिए विशिष्ट है। हो सकता है कि आप "चक्र" में रुचि रखते हैं (सीपीयू को कुछ कार्यों को करने के लिए सीपीयू लेती है)? –