2016-07-19 2 views
3

분석을 위해 큰 희소 시스템을 Ax = b 형태로 풀 필요가 있습니다. 의 치수는 3Mx3M이며 양의 값입니다.R에서 희소 행렬의 멀티 코어 해석

지금은 희소 행렬 및 작업 해결사를 지원하는 'Matrix'패키지를 사용합니다. 나는 약 40 초 만에 나의 문제를 해결할 수있다. 그러나 내 서버의 32 코어 중 31 코어가 계산에 하나의 코어 만 사용할 수 있기 때문에 현재 나를 비웃고 있습니다.

저는 foreach 루틴을 만들려고했는데, 이것은 매우 RAM/오버 헤드가 많이 소모됩니다. 차라리 BLAS/LAPACK 솔버와 통합 된 멀티 코어 지원을 사용할 것입니다. Microsoft R Open은 유망한 것으로 보였지만 밀도가 높은 행렬에 대해서는 BLAS/LAPACK 만 지원합니다. 나는 아무 소용이없이 광범위하게 인터넷 검색을 시도했다.

R의 스파 스 매트릭스를 해결하기 위해 접근 가능한 멀티 코어 솔 루버를 사용할 수 있습니까?

도움이 매우 적절합니다. 당신이 BLAS 라이브러리와 R을 다시 컴파일하고자하는 경우

+1

하지 R을하지만, PETSc 라이브러리를보십시오. 병렬 처리를 위해 MPI를 사용하며, 소수의 양의 한정 행렬 (aij/baij)에 사용할 수있는 [solvers and preconditionners] (http://www.mcs.anl.gov/petsc/documentation/linearsolvertable.html) . 또는 MUMPS와 같은 병렬 직접 솔버를 사용할 수도 있습니다. 예제는 [there] (http://www.nersc.gov/users/software/programming-libraries/math-libraries/petsc/c-example-mumps/)를 참조하십시오. 그러나 R에서 C 함수를 호출하는 인터페이스를 작성해야합니다. – francis

+0

많은 경우 희소 행렬의 선형 대수는 CPU에 바인딩되지 않고 메모리에 바인딩됩니다. –

+0

일반적으로 Dmitriy Selivanov입니다. 그러나 내 컴퓨터는 250 + GB RAM을 가지고 있으므로 메모리가 계산에서 병목 현상이 아닌 것으로 생각됩니다. 내 스파 스 매트릭스는 각각 800MB 정도입니다. – WvWestering

답변

0

, 당신은 다음과 같이 살펴 수행 할 수 있습니다 Using Intel MKL with R

+0

BLAS는 조밀 한 매트릭스와 함께 작동합니다! 대부분의 POSIX 시스템에서 대부분의 경우 재 컴파일이 필요하지 않습니다. –

+0

이것은 참으로가는 길과 같습니다! 여기에 내 결과를 Stackoverflow에보고하려고합니다. – WvWestering

+0

@WvWestering BLAS 라이브러리가있는 솔루션을 찾았습니까? –

관련 문제