희소 선형 시스템 솔버를 선택할 때 어떤 지침을 따라야합니까?


49

스파 스 선형 시스템은 응용 분야에서 주파수가 증가함에 따라 나타납니다. 이러한 시스템을 해결하기 위해 선택할 수있는 많은 루틴이 있습니다. 최상위 수준에서는 직접 (예 : 희소 가우시안 제거 또는 Cholesky 분해, 특수 순서 알고리즘 및 다중 정면 방법) 방법과 반복적 (예 : GMRES, (bi) 공액 구배) 방법 사이에 유역이 있습니다.

직접 또는 반복 방법을 사용할지 어떻게 결정합니까? 그 선택을 한 후에 어떻게 특정 알고리즘을 선택합니까? 대칭의 활용에 대해 이미 알고 있지만 (예 : 희소 대칭 양의 한정 시스템에 대한 켤레 구배 사용) 방법을 선택할 때 고려해야 할 다른 고려 사항이 있습니까?

답변:


33

반복 솔버를 선택할 때 중요한 것은 연산자의 스펙트럼입니다 . 이 백서를 참조하십시오 . 그러나, 참조, 많은 부정적인 결과가 이 문서 에는 반복 솔버 모든 문제에 대한 승리하지 이 논문 그들이 어떤 스펙트럼 GMRES에 대한 어떠한 수렴 곡선을 얻을 수있는 것을 증명하는합니다. 따라서 몇 가지 고립 된 경우를 제외하고 반복 솔버의 동작을 예측하는 것이 불가능한 것 같습니다. 따라서 가장 좋은 방법은 직접 솔버가있는 PETSc 와 같은 시스템을 사용하여 모두 시도하는 것 입니다.


2
"당신이 할 수있는 모든 것을 던져라"는 내가 익숙했던 조언과 거의 비슷했다. :) 당신이 연결하는 세 번째 논문은 제가 전에 보지 못한 것입니다. 고마워!
JM

2
Matt는 대단한 답변을 제공하지만, 그가 온 커뮤니티 (대규모 과학 컴퓨팅)의 맥락 내에서 가져와야합니다. 작은 문제 (예를 들어, 10 만 미만의 미지수)의 경우, 문제가 강하게 타원이 아닌 경우 직접 솔버가 반복적 방법보다 성능이 뛰어납니다. 나는 초기의 시작 전략을 향해 당신을 조종 할 좋은 일반적인 논문을 보지 못했습니다.
Aron Ahmadia

5
Aron의 추정은 양호하지만 채우기에 크게 의존합니다. 드문 직접적인 방법은 일반적으로 인내심을 소모하기 전에 메모리를 소모하기 때문입니다.
Matt Knepley

18

직접 방법과 반복 방법 중에서 선택하는 것은 현재 목표와 문제에 달려 있습니다.

직접 메소드의 경우 다음을 참고할 수 있습니다.

  • 선형 시스템 의 계수 매트릭스 는 계산 과정에서 변경되며 희소 시스템의 경우 메모리 요구 사항을 소진하고 채우기로 인해 작업 노력을 증가시킬 수 있습니다
  • 유용한 결과를 얻으려면 반드시 작성해야합니다
  • 우변이 여러 개인 경우 후속 단계에서 분해를 재사용 할 수 있습니다.
  • 선형 시스템을 해결하는 데만 사용할 수 있습니다.
  • 거의 실패합니다.

반복적 인 방법의 경우 다음을 확인할 수 있습니다.

  • 목표는 적은 반복 횟수 후에 만 ​​부분 결과를 제공하는 것입니다.
  • 솔루션 노력은 동일한 문제에 대한 직접적인 방법보다 적어야합니다.
  • 저장과 관련하여 경제적 임 (필인 없음)
  • 종종 프로그래밍하기 쉽습니다.
  • 알려진 대략적인 솔루션을 이용할 수 있습니다.
  • 때때로 그들은 빠르며 때로는 그렇지 않습니다 (때로는 발산 적입니다).
  • 복잡한 문제의 경우 반복 방법은 직접 방법에 비해 훨씬 덜 강력합니다.

직접 또는 반복 방법을 사용하는시기에 대한 지침?

  • 계수 행렬이 희소이고 직접 방법 인 경우 반복 방법은 희소성을 효율적으로 활용할 수 없습니다 (채우기 생성 방지).
  • 여러 오른쪽에 대한 직접적인 방법.
  • 정확성이 중요하지 않은 경우 반복 방법이 더 효율적일 수 있습니다.
  • 비선형 방정식 시스템에 대한 반복 방법.

8
직접적인 방법이 여러 오른쪽에 항상 더 좋은 것은 아니라는 점에 유의하는 것이 중요하다고 생각합니다. 아마도 오른쪽에 더 낫지 만 직접 방법이 이고 반복 방법이 이면 반복 솔버를 사용하는 것이 여전히 유리합니다 오른쪽. O ( 없음 ) O ( N 2 ) O ( 1 )O(n)O(n)O(n2)O(1)
Jack Poulson

8

나는 이미 주어진 답변에 완전히 동의합니다. 모든 반복적 인 방법에는 일종의 초기 추측이 필요하다고 덧붙였습니다. 이 초기 추측의 품질은 종종 선택한 방법의 수렴 속도에 영향을 줄 수 있습니다. Jacobi, Gauss Seidel 및 Success over Over Relaxation과 같은 방법은 각 단계에서 가능한 한 많은 오류를 반복적으로 "매끄럽게하기"위해 작동합니다 ( 자세한 내용은이 백서 참조).) 처음 몇 단계는 고주파수 오류를 빠르게 줄이지 만 저주파 오류는 매끄럽게하기 위해 더 많은 반복이 필요합니다. 이것이 이러한 방법의 수렴을 느리게 만드는 것입니다. 이와 같은 경우 먼저 저주파 오류를 해결 한 다음 (예 : 거친 메시에서 동일한 문제를 해결 한 후) 더 높은 주파수 오류를 해결하여 (예 : 미세한 메시에서) 수렴을 가속화 할 수 있습니다. 나누고 정복하여이 개념을 재귀 적으로 적용하면 다중 그리드 방법을 얻게됩니다. 선형 시스템이 대칭이 아니더라도, 솔버의 수렴을 가속화 할 수있는 비단 수 희소 행렬 시스템 (예를 들어, 대수 멀티 그리드 방법)에 대한 멀티 그리드 방법의 대안적인 구현이 있습니다. 그러나 병렬 시스템에서의 확장 성은 많은 연구 의 주제입니다..


5
이 답변은 멀티 그리드의 효과가 좋은 초기 추측을 찾는 데서 온다는 인상을주는 것 같습니다. 실제로 초기 추측은 선형 문제에 대한 사소한 문제이며 실제로 Full Multigrid에 대한 문제입니다. 멀티 그리드는 스펙트럼 분리로 인해 작동합니다. 어려운 문제에 대해 멀티 그리드의 성능을 높이는 것은 중요한 과제입니다. 멀티 그리드 (Multigrid)는 병렬로 매우 잘 작동하며 여러 Gordon Bell 상을 수상한 주요 요소였으며 오늘날 가장 큰 머신에서 고효율로 실행되는 몇 가지 오픈 소스 패키지입니다. GPU 구현에 대해서는 CUSP 라이브러리를보십시오.
Jed Brown

대부분의 경우 무작위 초기 추측으로 충분합니다. Lanczos 알고리즘을 사용하여 고유 값을 추출 할 때 임의의 시작 / 다시 시작 벡터가 도움이됩니다. Lanczos 알고리즘에서 때때로 재시작이 발생합니다.
AnilJ

3

귀하의 질문에 누락 된 중요한 정보가 있습니다 : 매트릭스의 출처는 어디입니까? 해결하려는 문제의 구조는 솔루션 방법을 제안 할 큰 잠재력을 가지고 있습니다.

행렬이 부드러운 계수를 갖는 부분 미분 방정식에서 시작된 경우 특히 3 차원에서 기하 멀티 그리드 방법을 이길 수 없습니다. 문제가 덜 규칙적이라면 대수 멀티 그리드가 좋은 방법입니다. 둘 다 일반적으로 Krylov 공간 방법과 결합되었습니다. 다른 효율적인 솔버는 빠른 멀티 폴 방법 또는 빠른 푸리에 변환에서 파생 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.