เนื้อหาต่อไปนี้อาจเกี่ยวกับข้อผิดพลาดในการคำนวณใน GPU
ให้เวลาเพียงพอ Intel i7-3610QM และ Nvidia GeForce GTX 660 จะไม่เห็นด้วยกับอีกคนหนึ่งซึ่งได้รับคำแนะนำเดียวกัน (cuda 5.5, compute_20, sm_20)
ดังนั้นหนึ่งเหลือเพื่อสรุปว่าหนึ่งในสองทำให้เกิดข้อผิดพลาด
ในระหว่างการศึกษาความเป็นไปได้ของการจำลองอนุภาคความเป็นไปได้ฉันสังเกตว่าหลังจากการแปลงความแม่นยำสองพันครั้ง (การเปลี่ยนแปลงรวมถึงบาป cos การคูณการหารการบวกและการลบ) ข้อผิดพลาดเริ่มคลานเข้ามา
ฉันจะให้ข้อความที่ตัดตอนมาเล็กน้อยของคุณเพื่อเปรียบเทียบ (หมายเลขแรกคือ CPU เสมอ, 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 ปัดขึ้น ด้วยความอยากรู้อยากเห็นสิ่งนี้ดูเหมือนจะเกิดขึ้นกับตัวเลขติดลบเท่านั้น
แต่ประเด็นคือคำแนะนำที่เหมือนกันนั้นไม่ได้รับประกันว่าจะให้ผลลัพธ์ที่เหมือนกันแม้แต่ในเครื่องดิจิตอล
ฉันหวังว่านี่จะช่วยได้
แก้ไขเป็นข้อผิดพลาด: ในกรณีที่มีข้อผิดพลาดทางคณิตศาสตร์ GPU นี้ (ctrl + f "GPU ตัวแรกที่สนับสนุนหน่วยความจำ ECC") อาจเป็นที่สนใจเช่นกันถึงแม้ว่าจะไม่เกี่ยวข้องกับข้อผิดพลาดข้างต้น