Nội dung sau đây có thể là về lỗi tính toán trong GPU.
Khi có đủ thời gian, Intel i7-3610QM và Nvidia GeForce GTX 660 sẽ không đồng ý với nhau theo cùng một hướng dẫn. (cuda 5.5, tính toán_20, sm_20)
Vì vậy, một người còn lại để kết luận rằng một trong hai người mắc lỗi.
Trong một tiêu chuẩn nghiên cứu khả thi mô phỏng hạt tôi nhận thấy rằng sau một nghìn lần biến đổi độ chính xác gấp đôi (các phép biến đổi bao gồm sin, cos, phép nhân, phép chia, phép cộng và phép trừ) bắt đầu xuất hiện.
Tôi sẽ cung cấp cho bạn một đoạn trích số nhỏ để so sánh (số thứ nhất luôn là CPU, GPU thứ hai)
-1.4906010142701069
-1.4906010142701074
-161011564.55005690
-161011564.55005693
-0.13829959396003652
-0.13829959396003658
-16925804.720949132
-16925804.720949136
-36.506235247679221
-36.506235247679228
-3.3870884719850887
-3.3870884719850896
(lưu ý rằng không phải mọi chuỗi biến đổi đều gây ra lỗi)
Mặc dù lỗi tối đa gần như không đáng kể (0.0000000000000401%)
nhưng nó vẫn tồn tại và góp phần gây ra lỗi tích lũy.
Bây giờ lỗi này có thể là do sự khác biệt trong việc thực hiện một trong các thư viện nội tại. Thật vậy, có vẻ như GPU thích làm tròn hoặc cắt bớt nơi CPU làm tròn. Thật kỳ lạ, điều này dường như chỉ xảy ra trên các số âm.
Nhưng vấn đề là các hướng dẫn giống hệt nhau không nhất thiết được đảm bảo để trả về kết quả giống hệt nhau, ngay cả trên các máy kỹ thuật số.
Tôi hy vọng điều này đóng góp.
EDIT dưới dạng sidenote: Trong trường hợp lỗi số học GPU, điều này (ctrl + f "GPU đầu tiên có hỗ trợ bộ nhớ ECC") cũng có thể được quan tâm, mặc dù không nhất thiết liên quan đến các lỗi ở trên.