GPU में गणना की त्रुटियों के बारे में निम्नलिखित सामग्री हो सकती है।
पर्याप्त समय को देखते हुए, इंटेल i7-3610QM और एक एनवीडिया GeForce GTX 660 एक ही निर्देश दिए गए एक दूसरे से असहमत होंगे। (कोडा 5.5, कंप्यूट_20, sm_20)
इसलिए, एक को यह निष्कर्ष निकालना बाकी है कि दोनों में से कोई एक त्रुटि करता है।
एक कण सिमुलेशन व्यवहार्यता अध्ययन बेंचमार्क के दौरान मैंने देखा कि एक हजार या तो दोहरे परिशुद्धता परिवर्तनों के बाद (पाप, कॉस, गुणन, विभाजन, जोड़ और घटाव सहित परिवर्तन) त्रुटियों में रेंगना शुरू कर दिया।
मैं आपको संख्याओं की एक छोटी संख्या की तुलना करने के लिए दूँगा (पहला नंबर हमेशा सीपीयू, दूसरा GPU है)
-1.4906010142701069
-1.4906010142701074
-161011564.55005690
-161011564.55005693
-0.13829959396003652
-0.13829959396003658
-16925804.720949132
-16925804.720949136
-36.506235247679221
-36.506235247679228
-3.3870884719850887
-3.3870884719850896
(ध्यान दें कि हर परिवर्तन क्रम में त्रुटि नहीं होती है)
जबकि अधिकतम त्रुटि लगभग नगण्य है (0.0000000000000401%)
यह अभी भी मौजूद है, और संचयी त्रुटि में योगदान देता है।
अब यह त्रुटि आंतरिक पुस्तकालयों में से किसी एक के कार्यान्वयन में अंतर के कारण हो सकती है। दरअसल, यह देखने में ऐसा लगता है कि GPU राउंड डाउन या ट्रंककेट को पसंद करता है जहां CPU राउंड अप करता है। उत्सुकता से, यह केवल नकारात्मक संख्याओं पर होता है।
लेकिन मुद्दा यह है कि डिजिटल मशीनों पर भी समान परिणाम वापस करने के लिए समान निर्देशों की आवश्यकता नहीं है।
मुझे उम्मीद है कि इसने योगदान दिया।
EDIT को एक सिडनोट के रूप में: GPU अंकगणितीय त्रुटियों के मामले में, यह (ctrl + f "ECC मेमोरी सपोर्ट के साथ पहला GPU") भी रूचि का हो सकता है, हालांकि जरूरी नहीं कि उपरोक्त त्रुटियों के लिए प्रासंगिक हो।