2011-07-29 15 views
6

पुस्तक में Programming Massively Parallel Processors विभिन्न मैट्रिक्स गुणात्मक कर्नेल की दक्षता की तुलना करने के लिए gflops की संख्या का उपयोग किया जाता है। मैं अपनी मशीन पर अपने स्वयं के कर्नल के लिए इसकी गणना कैसे करूं?मैट्रिक्स गुणा कर्नेल के gflops को मापने के लिए कैसे?

कहीं भी एनवीआईडीआईए मंचों में मुझे यह 'एल्गोरिदम' मिला, लेकिन मुझे नहीं पता, यह कितना मान्य है या कहां से दो बार आता है।

NumOps = 2 * pow(MatrixSize,3) 
gflops = 1.0e-9 * NumOps/ExecutionTime 

पेज। कृपया टैग को बदलने में संकोच न करें ...

उत्तर

8

आप बड़े इनपुट के साथ एल्गोरिदम चलाकर और निष्पादन समय को मापकर GFLOP को माप सकते हैं। फिर उस सूत्र में निष्पादन समय और मैट्रिक्स आकार डालें। मैट्रिक्स आकारों के लिए पूरी मशीन को व्यस्त रखने के लिए काफी बड़ा है, एफएलओपी केवल मैट्रिक्स आकार पर कमजोर निर्भर है।

जीपीयू मैट्रिक्स गुणा एल्गोरिदम एक ही संख्या में फ्लोटिंग-पॉइंट ऑपरेशंस को निष्पक्ष एल्गोरिदम के रूप में करता है।

for (i = 0; i < MatrixSize; i++) 
    for (j = 0; j < MatrixSize; j++) 
    for (k = 0; k < MatrixSize; k++) 
     C[j][i] += A[j][k] * B[k][i]; 

पाश शरीर में 2 फ्लोटिंग प्वाइंट संचालन, और पाश शरीर है, जो आप NumOps के लिए सूत्र देता है की MatrixSize * MatrixSize * MatrixSize पुनरावृत्तियों रहे हैं। जीएफएलओपी प्रति सेकेंड ऑपरेशंस की संख्या है, जो 10^9 ('गीगा') से विभाजित है।

+1

+1। मुझे बस उस बिल्टिन एफएमएडी (फ़्यूज्ड गुणा और एड) निर्देश के साथ हार्डवेयर पर जोड़ने दें, जिसमें सभी नवीनतम एनवीडिया जीपस शामिल हैं, लोग मैट्रिक्स साइज़^3 टर्म के सामने 2 के कारक का उपयोग करना चाहते हैं या नहीं। जब तक आप इसे लगातार करते हैं, तब तक इससे कोई फर्क नहीं पड़ता। –

संबंधित मुद्दे