Gromacs 및 DL_POLY와 같은 여러 소프트웨어 패키지를 사용하여 분자 역학 (MD) 시뮬레이션을 실행하고 있습니다.
Gromacs는 이제 입자 분해 및 도메인 분해 알고리즘을 모두 지원합니다. Gromacs 시뮬레이션은 도메인 분해를 사용하지만, 최근까지 입자 분해가 Gromacs에서 구현 된 유일한 방법 임에도 불구하고 도메인 분해를 사용합니다. Gromacs 논문 중 하나 (DOI 10.1002 / jcc.20291)에서 저자는 입자 분해의 초기 선택 이유를 제시합니다.
"초기 설계 결정은 프로세서를 통해 작업을 분산시키기 위해 도메인 분해 가 아닌 입자 분해 로 작업하는 선택이었습니다 . 후자의 경우 공간 도메인이 프로세서에 할당되어 로컬 통신만으로 공간 이웃을 신속하게 찾을 수 있지만 복잡한 문제가 발생할 수 있습니다. 선형 시스템 크기가 상호 작용 범위를 상당히 초과 할 때만 도메인 분해가 더 나은 선택입니다. 분자 분해에서는 각 프로세서가 힘과 좌표 / 속도 업데이트를 계산하지 않습니다. 프로세서에 균등하게 분배 된 사전 계산 된 이웃 목록을 사용하여 입자의 할당 된 부분에 대해 입자 간의 쌍 상호 작용으로부터 발생하는 I 및 J 둘 입자의 속도 업데이트가 필요한, I 및 J, 한 번만 계산되어 다른 프로세서와 통신합니다. 모든 프로세서는 스토리지를 필요한 좌표로 제한하지 않고 로컬 메모리에 시스템의 완전한 좌표 세트를 유지합니다. 메모리 청구는 일반적으로 수백만 개의 입자에 대해서도 제한 요소가 아닌 반면에 이것은 더 간단하고 통신 오버 헤드를 절약합니다. 반면에 최대 1000 배의 파티클을 포함 할 수있는 이웃리스트는 프로세서에 분산됩니다. 통신은 기본적으로 프로세서 링을 중심으로 한 시간 간격으로 좌표와 힘을 보내는 것으로 제한됩니다. 이러한 선택은 시간이 지남에 따라 강력하고 최신 프로세서 클러스터에 쉽게 적용 할 수있는 것으로 입증되었습니다. "
"선형 시스템 크기가 선형 역학 크기가 상호 작용 범위를 상당히 초과 할 때만 더 나은 선택"이라는 문장에서 "선형 시스템 크기"는 무엇을 의미합니까? 위의 단락에서, 입자 분해는 도메인 경계를 가로 질러 이동하는 입자를 다룰 필요가 없다는 이점을 얻습니다. 오히려 전체 시스템 구성 을 저장하기 위해 각 프로세서에 충분한 메모리가 있어야 합니다. 따라서 입자 분해는 매우 유리한 반면 도메인 분해는 매우 바람직하지 않습니다.
나는 이것이 매우 복잡한 질문 (그리고 아마도 많은 책의 주제)이라고 확신하지만, 기본적으로 입자 분해가 그렇게 좋아 보인다면 왜 도메인 분해를 사용해야합니까? 시스템 크기가 매우 큰 경우 도메인 분해가 유리합니까 (각 프로세서에 전체 구성을 저장하기 어렵거나 불가능하게합니까)? 위의 인용 된 단락을 바탕으로 도메인 분해가 왜 최근에 Gromacs의 기본 병렬화 알고리즘인지 모르겠습니다.
DL_POLY now (버전 4)도 도메인 분해를 사용 하는 것 같습니다 . 버전 4 매뉴얼에서 :
"이러한 방식으로 구성 데이터의 분할은 시뮬레이션 셀에서 원자의 위치를 기반으로합니다. 시스템 데이터의 기하학적 할당은 DD 알고리즘의 특징입니다.이 전략이 효율적으로 작동하려면 시뮬레이션 시스템은 합리적으로 균일 한 밀도를 가져야하므로 각 프로세서에 원자 데이터의 거의 동일한 부분이 할당됩니다.이 접근 방식을 통해 힘의 계산 및 운동 방정식의 통합은 프로세서와 프로세서간에 균등하게 공유됩니다. 이 방법은 개념적으로 간단하지만 프로그래밍이 까다 롭지 만 효율성이 가장 큰 대규모 시뮬레이션에 특히 적합합니다.
...
DD 전략의 경우 원자 위치 (병합 및 스 플라이 싱)의 전체 업데이트가 필요한 SHAKE (RATTLE) 알고리즘이 DL_POLY Classic의 Replicated Data 방법보다 간단합니다. "
이는 구현하기가 더 어려울지라도 도메인 분해가 더 효율적일 수 있으므로 도메인 분해가 좋은 것처럼 들립니다.
반면, 이전 버전 (DL_POLY Classic)은 복제 된 데이터 병렬화를 사용했는데, 이는 입자 분해의 또 다른 이름 인 것 같습니다. 해당 버전의 설명서에서 :
복제 된 데이터 (RD) 전략은 MD에서 병렬화를 달성하는 몇 가지 방법 중 하나입니다. 그 이름은 병렬 컴퓨터의 각 노드에서 구성 데이터의 복제에서 파생됩니다 (즉 원자 좌표 정의하는 배열)시뮬레이션 된 시스템의 원자는 모든 처리 노드에서 재생됩니다). 이 전략에서 운동 방정식의 힘 계산 및 통합의 대부분은 노드간에 쉽고 균일하게 공유 될 수 있으며 각 노드에서 독립적으로 처리됩니다. 이 방법은 프로그래밍하기가 비교적 간단하고 효율적입니다. 또한 단일 프로세서에서 매우 쉽게 실행되도록 "축소"될 수 있습니다. 그러나이 전략은 메모리가 비싸고 통신 오버 헤드가 높을 수 있지만 전반적으로 광범위한 응용 프로그램에서 성공한 것으로 입증되었습니다.
이 단락은 복제 된 데이터 / 입자 분해가 "높은 통신 오버 헤드"를 갖는다는 점을 제외하고는이 질문의 첫 번째 단락과 일반적으로 구성되어있는 것으로 보입니다. Gromacs 논문의 단락은 반대라고합니다. 입자 분해는 도메인 분해보다 통신 오버 헤드가 낮기 때문에 바람직합니다.
당신은 어떤 생각이 있습니까?