spark mllib multi-layer-perceptron 모델을 사용하여 벡터를 예측할 때 동일한 벡터가 때때로 멀티 스레딩에서 다른 결과를 제공한다는 사실을 발견했습니다. 소스 코드를 읽고 BLAS 라이브러리를 기반으로합니다. 멀티 스레딩에서 BLAS 용 테스트 코드를 만들었습니다.BLAS.dgemm 메서드 다중 스레드 계산 오류
BLAS dgemm utils를 사용하여 매트릭스를 계산하면 동일한 매트릭스 데이터가 멀티 스레딩을 사용할 때 다른 결과를 제공합니다.
내 테스트 코드는 github에서 찾을 수 있습니다. 테스트 코드에서 인공 테스트 데이터를 만듭니다. Windows 10을 사용하여 테스트하려면 Java 클래스 경로에 blas dll 파일을 추가하십시오. 반복적으로 실행할 때
blas.dgemm(transa, transb, m, n, k,alpha, a, _a_offset, lda, b, _b_offset, ldb,beta, c, _c_offset, ldc)
결과는 동일합니다
나는 실행하는 하나의 스레드를 사용하는 경우. 그러나 5 개 이상의 스레드를 사용하여 동일한 데이터를 실행하면 blas.dgemm
의 결과가 달라집니다. 이것은 혼동 스럽습니다. blas.dgemm
의 동일한 데이터가 다른 결과를내는 이유는 무엇입니까?
Windows 10을 사용하는 경우 java 클래스 경로에 netlib-native_system-win-x86_64.dll
을 추가하십시오.
나는 꽤 큰 문법적 변화를 만들었고, 내가 잘못 생각한 것이 있다면 다시 바꾸거나 되돌려주십시오. 덕분에 – Shaido
. 앞으로 문법 오류에주의를 기울일 것입니다. 덕분에 –