PETSc는 희소 행렬 수학을 위해 LAPACK 라이브러리를 사용합니까?


10

외부 BLAS / LAPACK 라이브러리를 사용하여 PETSc를 컴파일하면 희소 행렬의 성능에 큰 영향을 미치거나 밀도가 높은 행렬 수학에 해당 라이브러리 만 사용합니까?


전제 조건으로 LU를 사용할 수 있습니다.
stali

답변:


10

PETSc는 몇 가지 벡터 프리미티브에 BLAS를 사용하지만 일반적으로 메모리 대역폭에 의해 제한되며 "최적화"에는 많은 차이가 없으므로 성능 차이가 크지 않습니다.

Lanczos 또는 Arnoldi 고유 값 및 특이 값의 일부 분석과 같은 일부 분석에도 Lapack을 사용하지만 일반적으로 성능에 민감하지 않습니다.

밀도가 높은 "레벨 3"작업은 일반적으로 타사 라이브러리 (예 : MUMPS, SuperLU, UMFPACK)에서 스파 스 직접 솔버를 사용할 때 성능에 민감한 상황에서만 나타납니다. BLAS를 호출합니다.

큰 문제에 적용된이 희박한 직접 솔버에 의존하는 경우 조정 된 BLAS 구현으로 구축하는 것이 좋습니다. 그렇지 않으면 큰 차이가 없습니다.


Jed, PETSc는 분산 행렬의 경우 고유 값 / 단수 값 추정을 위해 LAPACK을 어떻게 사용합니까? 그런 다음 블록 방식 루틴입니까 아니면 ScaLAPACK입니까?
Alexander

Arnoldi 반복은 반복 횟수 (예 : 30 또는 100)와 동일한 차원의 Hessenberg 행렬을 생성합니다. Hessenberg 매트릭스의 고유 값 또는 특이 값은 LAPACK을 사용하여 각 프로세스에서 중복 계산됩니다. 크기가 작고 데이터가 이미 중복 배포되어 있기 때문에 병렬로 수행하는 것보다 훨씬 빠릅니다. Lanczos와 유사합니다.
Jed Brown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.