2010-06-12 6 views
2

StackOverflow에서 관련 스레드를 살펴 봤지만별로 운이 없었습니다. 나는 또한 Java (C#과 .NET 배경에서 온다.)에 매우 익숙하다. Java 세계에서 사용 가능한 것은 너무 많아 압도적입니다.MKL 가속화 수학 라이브러리

통계, FFT, 선형 대수학, 행렬 등의 매우 복잡한 수치 계산이 필요한 새로운 Java-on-Linux 프로젝트를 시작합니다. 따라서 수학 연산의 성능을 극대화하는 것은 수학이 올바른지 확인하는 것과 마찬가지로 필수 사항입니다. 그래서 나는 아마도 MKL과 같은 네이티브 가속화를 활용하는 Java 라이브러리를 찾는 것에 관심을 갖고 있으며 입증되었습니다 (따라서 상업적 옵션은 확실히 여기에있을 수 있습니다).

.NET 공간에는 Centerspace NMath 및 Extreme Optimization과 같은 상업용 수학 라이브러리가 고도로 최적화되고 MKL이 가속화되었습니다. 자바에서 비교할 수 있나요? 나는 자바에 대한 발견 한 수학 라이브러리의 대부분

하나가하지 않는 것

적극적으로 (예 : 콜트로) 유지하거나 MKL 또는 (예 : 아파치 코 몬즈 수학 등의) 다른 기본 가속을 활용 나타나지 않습니다.

나는 자바에서 직접 MKL (예 : JNI)을 활용하려고 생각했지만, 자바를 처음 접했을 때 (자바와 네이티브 라이브러리 간 상호 운용은 말할 것도 없다) 이미 올바르게 수행 한 자바 라이브러리를 찾는 것이 더 현명한 것처럼 보였다. 효율적이며 입증되었습니다. 내가 및 자바 제품의 나의 무지 (심지어 어떤 내가 언급 한 라이브러리에 대한에서) 실수 나 잘못 생각하는 경우

는 다시 나는 죄송합니다. 그것은 나를보고 어디 그래서 쉽게에 대한 오해 될 수 스택 많이 상용화 된 마이크로 소프트에서 오는 내가 언급 한 자바 라이브러리에 대한에 대한 완전히 새로운 세계입니다. 나는 어떤 도움이나 조언도 크게 감사 할 것입니다.

+0

금융 및 과학 산업의 Java 개발자가하는 일에 대해 저는 궁금합니다. – Kaopua

답변

-1

당신은 아마 내가 생각하기를 피하는 것이 좋습니다. 나는 내가 너무 잘 알고 좀하지, 그래서 몇 가지 다른 사람들이 나와 함께 동의하지 않는 한이에서 너무 많이하지 않지만, 그것을 밖으로 가야하기 때문에 JNI를 호출하면, 상당히 큰 오버 헤드가 잘못 될 수있다 JRE를 당신이 한 번을 넣어 함께 하나의 함수로 많은 것들을 그룹화하고 그렇게하지 않으면, 그것을 할 수있는 모든 것을, 외부 라이브러리의 약간의 혜택은 그들을 호출의 비용으로 상당히 능가한다. 나는 MKL 라이브러리를 찾고 최적화 된 순수 자바 라이브러리를 찾는다. 나는 내가 표준의 사람보다 잘 알고 있다고 말할 수 없다. 미안하지만.

+1

MKL에서 제공하는 대부분의 작업은 '많은 것을 함께 그룹화'한 것으로 간주됩니다. –

1

FFT (배열 일괄 처리)와 같은 경우 자바 의 범위 검사는 일 수 있습니다 (적어도 최근에는 그랬습니다). 아마도 인덱스 경계의 가능성을 최적화하는 라이브러리를 찾고 싶을 것이다. The HotSpot spec

자바 프로그래밍 언어 사양에 따라

배열 경계 각 어레이 액세스를 수행 할 필요 검사. 컴파일러 이 배열 액세스에 사용 된 인덱스가 범위 내에 있음을 증명할 수있는 경우 인덱스 범위 검사 을 제거 할 수 있습니다.

저는 실제로 JNI를 살펴보고 개별적으로 매우 큰 경우 대량 작업을 수행합니다. 작업이 오래 걸릴수록 (즉, 큰 선형 시스템 또는 큰 FFT를 해결할 때) JNI를 사용하는 것이 더 가치가 있습니다 (비록 당신이 거기에서 그리고 다시 memcpy해야 할지라도).

1

개인적으로 나는 자바에서 상업용 등급 라이브러리로 중량이 큰 수학을 내리는 일반적인 접근 방식에 동의합니다.

Java/MKL 통합 I found this을 검색하는 것은 기술적으로 가능합니다. 고려해야 할 또 다른 옵션은 NAG libraries입니다. 나는 Fortran에서 프로그램을하지만 통합 문제가 없기 때문에 항상 MKL을 사용합니다. 나는 그들의 품질과 성능을 확실히 추천 할 수있다. 예를 들어 우리는 MKL 버전의 FFTW를 소스 코드를 기반으로 제작 한 버전과 비교하여 테스트했습니다. MKL 구현은 작은 정수배만큼 빠릅니다.

JNI를 통해 라이브러리를 호출하는 성능에 대해 염려가되는 경우 더 작은 호출보다 작은 호출보다 작은 호출을 만들기 위해 응용 프로그램을 구조화해야합니다. JNI 사용의 어려움에 관해서는, (JNI 프로그래밍을 한 적이있다.) 인터페이스를 사용하는 방법을 배워야한다는 초기의 노력은 충분히 보상받을 것이라는 견해가있다.

아직까지는 당신이 사용할 수있는 Java 수학 라이브러리에 대한 제안으로 압도당한 것 같지 않습니다. 당신처럼 나는 그물에서 트롤 된 연구 수준의 낮은 사용률의 자바 라이브러리에 대해 의심 스러울 것이다.