VASP의 병렬화

Aug 19 2020

나는 1 k-point, 54 개의 원자 NBANDS=152, 그리고 NGZ=80. VASP 버전 5.4.4에서 AIMD 시뮬레이션을 실행하고 있습니다.

슈퍼 컴퓨터에는 32 개의 코어 / 노드가 있습니다. 최신 멀티 코어 머신 인 Infiniband로 연결된 LINUX 클러스터입니다. 효율적이고 빠른 계산을 위해 매개 변수를 선택하고 리소스를 요청하는 가장 좋은 방법이 무엇인지 궁금했습니다. 다음은 제가 고려한 몇 가지 시나리오입니다. 효율성과 속도 측면에서 "최고의"방법이 무엇인지 궁금합니다.

  1. 내가 여기서 읽은 내용을 바탕으로
  • 19 밴드 (152/8)를 요청해야합니다. 20 개의 코어를 요청하려면 NBANDS = 160을 설정하십시오.
  • 그런 다음 INCAR 파일에서 NCORE = 20을 설정하고 1 노드에서 20 개의 코어를 요청합니까?
  • 아니면 NCORE = 10으로 설정하는 것이 더 낫습니다. 그런 다음 노드 당 2 개의 노드와 10 개의 코어와 같은 것을 요청합니까? 아니면 너무 많은 통신 오버 헤드를 만들어 시뮬레이션 속도를 늦출까요?
  1. 코어 수 = 원자 수 = 54를 사용하기로 결정하면
  • NCORE = 32를 설정 한 다음 2 개 노드 (1 개 노드에서 32 개 + 두 번째 노드에서 22 개)를 통해 54 개의 코어를 요청해야합니까? 아니면 9 코어 / 노드와 6 노드?
  1. 전체 노드 만 요청할 수는 없나요? 노드 1 개, 코어 32 개
  • 그런 다음 NCORE = 32로 설정하고 전체 노드를 요청합니다. 그러나 VASP 매뉴얼 은 NPAR = 1이 될 것이기 때문에 이에 반대한다고 제안합니다.
  • 하나의 노드에서 32 개의 코어가 서로 통신하는 여러 노드에 걸쳐있는 코어를 갖는 것보다 더 효율적이라고 가정하기 때문에 이것은 나를 약간 혼란스럽게합니다.

답변

11 TristanMaxson Aug 20 2020 at 04:04

VASP에 대한 많은 벤치마킹을 수행 한 사람으로서 실험적인 접근 방식을 시도해 볼 것을 제안합니다. 병렬화가 필요한 경우 VASP가 추가 대역을 추가 할 것이라고 생각하므로 개인적으로 걱정하지 않습니다. 물리적으로 노드의 레이아웃 (1 개 프로세서의 32 개 코어, 2 개 프로세서의 16 개 코어, 단일 CPU의 특수 AMD 프로세서 레이아웃)은 클러스터마다 크게 다를 수 있습니다.

MD 시뮬레이션을 실행하고 있으므로 긴 시뮬레이션을 실행하기 전에 각 시스템을 벤치마킹하는 것이 좋습니다. 사소한 변경으로 인해 다시 벤치 마크 할 필요는 없지만 50 개에서 150 개에서 300 개 원자로 이동하면 이상이 바뀔 수 있습니다. 합리적인 것처럼 보이는 전체 NCORE 범위로 일련의 빠른 계산을 실행하십시오. 최상의 결과를 사용하십시오. 나는 가장 큰 노드의 모든 요소를 ​​확인하는 경향이 있습니다.

32 코어의 경우 NCORE = (1, 2, 4, 8, 16, 32)를 확인합니다. 10 개 정도의 기하학적 단계에 대해 시간을 측정합니다. 이것은 시간 낭비처럼 보일 수 있지만 결국에는 많은 시간을 절약 할 수 있습니다.

그렇게하지 않을 타당한 이유가 없다면 거의 항상 전체 노드를 요청하는 것이 좋습니다. 주변을 둘러 보면서 결국 KPAR 옵션을 보게 될 것입니다. 저는 여러 의견을 들었습니다. 개인적으로 kpoint 병렬화가없는 것보다 더 나은 결과를 얻지 못했습니다. 그래도 메모리 차이를 만들 수 있습니다.

7 DoubleKx Aug 21 2020 at 03:50

Tristan의 제안에 따라 벤치마킹 결과를 게시 할 것이라고 생각했습니다. 아마도 미래의 누군가에게 유용 할 것입니다. MD에서 10 단계 만 수행했습니다 (1fs 단계 크기, 총 10fs).

백분율 차이는 모두 코어가 32 개, 노드가 1 개인 NCORE = 1 실행과 관련이 있습니다. 코어가 64 개인 2 개 노드로 이동하면 속도가 33 % 향상됩니다 (NCORE = 32).

분명히 이것은 클러스터에 따라 다를 수 있습니다. 그건 그렇고 이것은 캐나다의 Sharcnet에있는 Graham 클러스터입니다. 그래서 동료 캐나다인들에게 유용하기를 바랍니다. :)