본문 바로가기

Java

[박혜웅] JAVA libraries for Linear Algebra (선형대수학), Sparse Matrix (희소행렬)


Matrix Toolkits for JAVA(MTJ) - 강력 추천

<장점>
사용하기 편하고 dense 또는 sparse matrix, vector 연산에 모두 유용하다.
Sparse matrix에 대하여, "행렬*벡터 곱"는 빠르다.

<단점>
클래스와 메소드가 너무 많고 예제도 없어서 찾기가 힘든 문제점도 있다.
Sparse matrix에 대하여, "행렬*행렬 곱"은 속도가 매우 느리다.
소스를 직접 보면 알겠지만, "행렬*행렬 곱"의 소스는 Dense Matrix 기준으로 연산하기 때문이다. 
따라서 FlexCompRowMatrix 와 SparseVector 를 이용하여 직접 구현해 줘야 한다.

<기타>
nonezero가 십만 이하의 작은 데이타의 경우 GPU 연산(CUDA)과 속도가 비슷하지만,
큰 데이타의 경우는 GPU연산이 훨씬 빠르다. 
아무래도 부동소수점 연산 때문에 CPU보다 GPU가 나은 것 같고, JAVA보다 C계열이 빠른 듯 하다..