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.