선형 방정식 시스템을 풀기 위해 멀티 그리드 방법을 어떻게 병렬화 할 수 있습니까?


11

내가 이해하는 것처럼 멀티 그리드 방법은 동일한 문제의 더 거친 버전을 해결하고 (저주파 오류를 제거함으로써) 선형 그리드 시스템을 해결하여 고주파수 오류를 부드럽게하기 위해 미세 그리드로 다시 투영합니다. 대규모 시스템의 경우 각 그리드 수준에서 반복 방법을 병렬로 구현하는 방법을 알 수 있습니다. 이 접근법은 병렬로 잘 확장됩니까? 알고리즘에서 동시에 이용할 수있는 다른 동시성 소스가 있습니까?

답변:


14

병렬 기하 멀티 그리드는 구조화 된 그리드에서 구현하기가 간단합니다. 대수 및 비정형 멀티 그리드가보다 기술적 입니다. 구현에 대한 링크는 이 답변 을 참조하십시오 .

곱셈 방법 (예 : 사이클)에서는 한 번에 하나의 레벨 만 계산할 수 있습니다. 레벨의 수는 여기서 은 자유도이고 는 더 큰 계수 (보통 차원 에서 약 또는 ) 임)이므로이 로그 항은 제거 할 수 없습니다. 추가 방법은 일부 상수 요소를 희생하지만 모든 수준을 동시에 계산할 수 있으므로 로그 요소를 입니다. 동시성 증가로 인해 상수가 열악하고 부가적인 방법의 견고성이 줄어드는 실제 하드웨어에 대한 데모는 아직 보지 못했습니다.log c N N c 2 d 3 d d log 2 log c NVlogcNNc2d3ddlog2logcN

Gauss-Seidel은 곱셈이고 효율적으로 병렬화되지 않는 매우 인기있는 스무더입니다. 구조화 된 그리드에서 간단한 이산화를 위해, 그리고 메모리 대역폭이 중요하지 않은 경우, 레드-블랙 Gauss-Seidel의 고전적인 솔루션이 합리적입니다. 보다 복잡한 문제와 최신 하드웨어에 대해 Adams (2001) 는 훨씬 더 효율적인 알고리즘을 보여줍니다. 많은 문제의 경우 각 하위 도메인에서 독립적 인 Gauss-Seidel을 사용하는 간단한 접근 방식은 전적으로 만족 스럽습니다. Gauss-Seidel의 대안은 감쇠 Jacobi 또는 다항 평활 기를 사용 하는 것입니다. 비교는 Adams, Brezina, Hu 및 Tuminaro (2003) 를 참조하십시오 . 이러한 스무더의 성능 모델은 다른 스텐실 계산과 유사하므로 최적의 확장 성이 약합니다.O(N/P) 대기 시간을 포괄 할 수있을 정도로 큰 하위 도메인의 경우

실제로, 거친 그리드는 더 많은 프로세스를 추가하면 런타임이 증가하는 것 외에는 강력한 확장 성 한계에 빠르게 도달하므로 더 작은 MPI 커뮤니케이터에 있어야합니다. 이것은 구현에 약간의 복잡성을 추가합니다. 거친 수준이 거칠기를 계속하기에 너무 많은 구조를 갖는 문제의 경우, 거친 수준 해결은 병목 현상이 될 수 있습니다.

다양한 병렬 멀티 그리드 방법을 테스트 하려면 PETSc 와 같은 라이브러리를 사용하여 사용자 코드를 거의 사용하지 않고 다양한 알고리즘을 실행할 수 있습니다.


Adams (2001) 링크가 더 이상 작동하지 않습니다. 나는 당신이 의미하는 기사가 이것이라고 생각합니다 : ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1592790&tag=1 . "멀티 그리드 스무더를위한 분산 메모리 비정형 가우스-시델 알고리즘"내가 틀렸다면 알려주십시오.
nukeguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.