2010-01-15 6 views
6

2 (대부분의 경우) 스파 스 매트릭스를 곱해야합니다. 그 행렬은 꽤 (약 10k * 10k) 비트이며이 작업을 위해 2 개의 제온 쿼드 코어와 하나의 스레드를 가졌습니까?자바 행렬 곱셈 (FAST)

다중 스레드 moltiplication을위한 빠른 라이브러리가 있습니까? 다른 조언?

답변

4

나는 CERN의 Colt을 시도 할 것입니다. 지금은 조금 오래되었지만 여전히 노력하고있는 것을위한 훌륭한 라이브러리를 제공합니다.

병렬 처리의 경우 최신 Parallel Colt을 사용해보십시오.

+0

정확하게 게시하려고했던 것. – BobMcGee

+0

매트릭스 10k * 10k를 만들 수 있습니까? – BigG

+0

물론, 그 크기는 800MB (double)입니다. 64 비트 JVM을 사용하고 있는지 확인하십시오. –

1
+0

저는 8 코어가 2,6GHz이고 그 중 하나만 사용합니다 – BigG

+0

http://jscience.org/ –

+1

단 정밀도 곱셈을 수행하는 경우 좋은 그래픽 카드에서 실행되는 GPGPU 구현은 * 여전히 * 8 코어를 이겼다. GPGPU는 스트림 프로세서 (현대 칩 수백 개)가 많기 때문에 CPU보다 10 배에서 100 배 빠릅니다. – BobMcGee

-1

예, 멀티 스레드 매트릭스 곱셈을위한 라이브러리가 있습니다. Google을 친구로 삼으십시오. 비록 하나의 스레드 만 가지고 있다면 멀티 스레딩이 필요하지 않을 수도 있습니다. 왜 8 코어 머신에 스레드가 하나만 있습니까? 고려해야 할 라이브러리 중 하나는 Java BLAS 인터페이스입니다.

당신은 분명히이 접근법을 직접 쓰는 대신 라이브러리를 찾고 있습니다.

+0

혼란 스럽네요.하지만 OP가 그 알고리즘을 다중 스레드하지 않았다는 말을하려고합니다. 따라서 LA의 다중 스레드 구현이 도움이 될 것입니다. (?) – Chinasaur

2

콜트 및 패러렐 콜트를 존중하여 매우 빠르지는 않습니다. Java 사용을 주장하고 빠른 수치 계산이 필요하다면 JBLAS를 사용하십시오. JBLAS는 ATLAS를 사용합니다. 다중 스레드 ATLAS를 사용하도록 JBLAS를 컴파일했습니다. 기본적으로이 작업을 수행하지 않습니다. 몇 가지 구성 옵션을 변경해야합니다. 그러나 단일 스레드 JBLAS는 멀티 스레드 콜트 및 병렬 콜트보다 빠릅니다. 나는 Colt, Parallel Colt, JAMA와 JBLAS를 테스트했다. JBLAS는 국가 별 마일로 최고입니다.

콜트 및 패러렐 콜트는 매우 느립니다. JAMA도 그렇습니다. Java 용 라이브러리는 JBLAS입니다.

0

Java Matrix Benchmark을 보셨습니까? 네이티브 코드를 사용/호출하는 커플을 포함하여 가장 일반적인 Java 선형 대수 패키지 중 몇 가지 사이의 성능을 비교합니다. 매트릭스 곱셈은 물론 테스트/비교 된 것 중 하나이며 최신 벤치 마크 실행은 실제로 듀얼 쿼드 코어 Intel Xeon 시스템에서 수행되었습니다.

스파 스 매트릭스를 사용하여 라이브러리가 수행하는 방식 (또는 해당 라이브러리가 전혀 지원되지 않는 경우)이 표시되지 않습니다.

순수한 Java 구현으로 매우 우수한 성능을 얻을 수 있지만, 큰 매트릭스로 최상의 성능을 원한다면 "JVM에서 나가야합니다".

+0

지금까지이 질문이 5 년 이상 된 것을 알지 못했습니다 ... – apete