일부 기하학적 변환을 계산하기 위해 프로그램을 프로그래밍하고 있는데 프로그램을 테스트하는 동안 이상한 것을 발견했습니다. 두 가지 다른 컴퓨터 인 Z400 워크 스테이션에서 테스트를 시작했습니다. 제온 ® 프로세서 W3550과 인텔 ® 제온 ® 프로세서 X5560와 Z800 워크 스테이션, 나는 하나 개의 작업에 대해 서로 다른 결과를 가지고 다음 Z400와다른 CPU에서 sin에 대한 다른 값
double x = 24.169408798217777 * sin(0.59420877837561048)/sin(0.97658754841928608)
을 Z800이 값을 던졌습니다 동안 나는 x=16.330508228047432
있어 x=16.330508228047435
값은 마지막 숫자에 따라 다르며 그 값으로 많은 계산을하므로 불편을 겪습니다.
더 많은 선결 물을 얻기 위해 sinl
을 사용해 보았습니다. 그러나 각 워크 스테이션마다 항상 동일한 값을 얻었습니다. 그게 뭐가 잘못 됐어? 어떻게 해결할 수 있습니까?
참조 http://stackoverflow.com/questions/18056677/opencl-double-precision-different-from-cpu-double-precision/18058130#18058130 – Sven
아니요, 이들은 동일한 값입니다. 수정해야 할 것은 결과를 문자열로 변환하는 코드뿐입니다. 15 자리 이상을 표시하지 마십시오. –
값을 비교하면 어떻게됩니까? – imreal