가리마 코차르(Garima Kochhar), 딥티 체를로팔레(Deepthi Cherlopalle), 조슈아 위지(Joshua Weage). HPC and AI Innovation Lab, 2019년 10월
해당 사항 없음
오늘날 HPC 세계에서는 AMD의 최신 EPYC 프로세서 (코드명 Rome )를 소개할 필요가 거의 없습니다. 우리는 지난 몇 달 동안 HPC 및 AI Innovation Lab 에서 Rome 기반 시스템을 평가해 왔으며 Dell Technologies는 최근에 이 프로세서 아키텍처를 지원하는 서버를 발표했습니다 . Rome 시리즈의 첫 번째 블로그에서는 Rome 프로세서 아키텍처, HPC 성능에 맞게 조정할 수 있는 방법 및 초기 마이크로 벤치마크 성능을 제시하는 방법에 대해 설명합니다. 후속 블로그에서는 CFD, CAE, 분자 역학, 날씨 시뮬레이션 및 기타 애플리케이션 도메인 전반의 애플리케이션 성능에 대해 설명합니다.
Rome은 AMD의 2세대 EPYC CPU로, 1세대 Naples를 업그레이드합니다. 우리는 작년에 이 블로그 에서 나폴리에 대해 논의했습니다.
HPC에 도움이 되는 나폴리와 로마의 가장 큰 아키텍처 차이점 중 하나는 로마의 새로운 IO 다이입니다. Rome에서 각 프로세서는 그림 1과 같이 최대 9개의 칩렛 으로 구성된 다중 칩 패키지입니다. 메모리 컨트롤러, 소켓 내 Infinity 패브릭 링크 및 소켓 간 연결, PCI-e와 같은 모든 IO 및 메모리 기능을 포함하는 하나의 중앙 14nm IO 다이가 있습니다. 소켓당 8개의 메모리 컨트롤러가 있으며, 3200MT/s에서 DDR4를 실행하는 8개의 메모리 채널을 지원합니다. 단일 소켓 서버는 최대 130개의 PCIe Gen4 레인을 지원할 수 있습니다. 듀얼 소켓 시스템은 최대 160개의 PCIe Gen4 레인을 지원할 수 있습니다.
(그림 1중앙 IO 다이 1개와 최대 8코어 다이를 포함하는 Rome 멀티칩 패키지)
중앙 IO 다이를 둘러싸고 최대 8개의 7nm 코어 칩릿이 있습니다. 코어 칩렛을 코어 캐시 다이 또는 CCD라고 합니다. 각 CCD에는 Zen2 마이크로 아키텍처, L2 캐시 및 32MB L3 캐시를 기반으로 하는 CPU 코어가 있습니다. CCD 자체에는 2개의 CCX(Core Cache Complex)가 있으며, 각 CCX에는 최대 4개의 코어와 16MB의 L3 캐시가 있습니다. 그림 2는 CCX를 보여줍니다.
(그림 2 4개의 코어와 공유 16MB L3 캐시가 있는 CCX)
다른 Rome CPU 모델은코어 수가 다르지만 모두 하나의 중앙 IO 다이를 가지고 있습니다.
상단에는 EPYC 7702와 같은 64코어 CPU 모델이 있습니다. lstopo 출력은 이 프로세서에 소켓당 16개의 CCX가 있음을 보여주며, 각 CCX에는 그림 3 및 4와 같이 4개의 코어가 있으므로 소켓당 64개의 코어가 생성됩니다. CCX당 16MB L3, 즉 CCD당 32MB L3은 이 프로세서에 총 256MB L3 캐시를 제공합니다. 그러나 Rome의 총 L3 캐시가 모든 코어에서 공유되는 것은 아닙니다. 각 CCX의 16MB L3 캐시는 독립적이며 그림 2와 같이 CCX의 코어에서만 공유됩니다.
EPYC 7402와 같은 24코어 CPU에는 128MB L3 캐시가 있습니다. 그림 3 및 4의 lstopo 출력은 이 모델에 CCX당 3개의 코어와 소켓당 8개의 CCX가 있음을 보여줍니다.
(64코어 및 24코어 CPU의 그림 3 및 4 lstopo 출력)
CCD의 수에 관계없이 각 Rome 프로세서는 논리적으로 4 개의 사분면 으로 나뉘며, CCD는 가능한 한 사분면에 고르게 분포되어 있고 각 사분면에는 2개의 메모리 채널이 있습니다. 중앙 IO 다이는 소켓의 4개 사분면을 논리적으로 지원하는 것으로 생각할 수 있습니다.
Rome의 중앙 IO 다이는 나폴리에서 측정된 것보다 메모리 레이턴시를 개선하는 데 도움이 됩니다. 또한 CPU를 단일 NUMA 도메인으로 구성할 수 있어 소켓의 모든 코어에 대해 균일한 메모리 액세스가 가능합니다. 이 내용은 아래에 설명되어 있습니다.
Rome 프로세서의 4개의 논리 사분면을 사용하면 CPU를 서로 다른 NUMA 도메인으로 분할할 수 있습니다. 이 설정을 소켓당 NUMA 또는 NPS라고 합니다.
HPC는 최상의 메모리 대역폭과 가장 짧은 메모리 레이턴시를 제공할 것으로 기대되며 애플리케이션은 NUMA를 인식하는 경향이 있으므로 가능한 경우 HPC에 NPS4를 사용하는 것이 좋습니다. NPS4를 사용할 수 없는 경우 CPU 모델인 NPS2 또는 NPS1에서 지원하는 가장 높은 NPS를 사용하는 것이 좋습니다.
Rome 기반 플랫폼에서 사용할 수 있는 다양한 NUMA 옵션을 고려하여 PowerEdge BIOS는 MADT 열거에서 두 가지 다른 코어 열거 방법을 허용합니다. 선형 열거는 다음 소켓으로 이동하기 전에 하나의 CCX, CCD, 소켓을 채우는 순서대로 코어에 번호를 매깁니다. 32c CPU에서 코어 0-31은 첫 번째 소켓에, 코어 32-63은 두 번째 소켓에 있습니다. 라운드 로빈 열거형은 NUMA 지역의 코어 번호를 매깁니다. 이 경우 짝수 번호의 코어는 첫 번째 소켓에, 홀수 번호의 코어는 두 번째 소켓에 있습니다. 간단하게 하기 위해 HPC에 선형 열거를 사용하는 것이 좋습니다. NPS4에 구성된 듀얼 소켓 64c 서버의 선형 코어 열거 예는 그림 5를 참조하십시오. 그림에서 4개의 코어로 구성된 각 상자는 CCX이고, 연속된 8개의 코어로 구성된 각 세트는 CCD입니다.
(그림 5 듀얼 소켓 시스템의 선형 코어 열거, 소켓당 64c, 8 CCD CPU 모델의 NPS4 구성)
Rome과 관련된 또 다른 BIOS 옵션은 기본 IO 디바이스라고 합니다. 이것은 InfiniBand 대역폭 및 메시지 속도에 대한 중요한 튜닝 노브입니다. 이를 통해 플랫폼은 하나의 IO 디바이스에 대한 트래픽의 우선 순위를 지정할 수 있습니다. 이 옵션은 1소켓 및 2소켓 Rome 플랫폼에서 사용할 수 있으며, 모든 CPU 코어가 활성 상태일 때 전체 메시지 속도를 달성하려면 BIOS 메뉴에서 플랫폼의 InfiniBand 디바이스를 기본 디바이스로 선택해야 합니다.
나폴리와 마찬가지로 Rome은 하이퍼 스레딩또는 논리 프로세서도 지원합니다. HPC의 경우 이 기능을 사용하지 않도록 설정하지만 일부 응용 프로그램은 논리 프로세서를 사용하도록 설정하면 이점을 얻을 수 있습니다. 분자 역학 응용 연구에 대한 후속 블로그를 찾아보십시오.
나폴리와 마찬가지로 로마도 CCX를 NUMA 도메인으로 허용합니다. 이 옵션은 각 CCX를 NUMA 노드로 노출합니다. CPU당 CCX가 16개인 듀얼 소켓 CPU가 있는 시스템에서 이 설정을 사용하면 32개의 NUMA 도메인이 노출됩니다. 이 예에서 각 소켓에는 8개의 CCD, 즉 16개의 CCX가 있습니다. 각 CCX는 자체 NUMA 도메인으로 활성화할 수 있으며, 소켓당 16개의 NUMA 노드와 2소켓 시스템의 경우 32개의 NUMA 노드를 제공합니다. HPC의 경우 CCX를 기본 옵션인 비활성화에서 NUMA 도메인으로 두는 것이 좋습니다. 이 옵션을 활성화하면 가상화된 환경에 도움이 될 것으로 예상됩니다.
나폴리와 마찬가지로 Rome은 시스템을 성능 결정론 또는 전력 결정론 모드로 설정할 수 있습니다. 성능 결정론에서 시스템은 CPU 모델의 예상 주파수에서 작동하여 여러 서버 간의 변동성을 줄입니다. 전력 결정론에서 시스템은 CPU 모델의 최대 가용 TDP로 작동합니다. 이로 인해 제조 프로세스에서 부품 간 변동이 증폭되어 일부 서버가 다른 서버보다 더 빨라질 수 있습니다. 모든 서버가 CPU의 최대 정격 전력을 소비할 수 있으므로 소비 전력이 결정적이지만 여러 서버 간에 약간의 성능 편차가 발생할 수 있습니다.
PowerEdge 플랫폼에서 기대할 수 있듯이 BIOS에는 System Profile이라는 메타 옵션이 있습니다. 성능 최적화 시스템 프로파일을 선택하면 터보 부스트 모드가 활성화되고 C 상태가 비활성화되며 결정성 슬라이더가 전원 결정론으로 설정되어 성능이 최적화됩니다.
많은 독자들이 이 섹션으로 바로 이동했을 수 있으므로 바로 뛰어들겠습니다.
HPC & AI Innovation Lab에는 미네르바(Minerva)라는 64개 서버 규모의 로마 기반 클러스터를 구축했습니다. 동종 Minerva 클러스터 외에도 평가할 수 있는 몇 가지 다른 Rome CPU 샘플이 있습니다. 테스트베드는 표 1과 표 2에 설명되어 있습니다.
(표 1 본 연구에서 평가된 Rome CPU 모델)
CPU | 소켓당 코어 수 | Config | 기본 클록 | TDP |
---|---|---|---|---|
7702 | 64ᄃ | CCX당 4c | 2.0 기가헤르츠 | 200w |
7502 | 32ᄃ | CCX당 4c | 2.5GHz | 180w |
7452 | 32ᄃ | CCX당 4c | 2.35 기가헤르츠 | 155와트 |
7402 | 24ᄃ | CCX당 3c | 2.8GHz | 180w |
(표 2 테스트베드)
구성 요소 | 세부 정보 |
---|---|
서버 | PowerEdge C6525 |
프로세서 | 표 1 듀얼 소켓에 표시된 대로 |
메모리 | 256GB, 16GB 3200MT/s DDR4 16개 |
상호 연결 | ConnectX-6 Mellanox Infini 대역 HDR100 |
운영 체제 | Red Hat Enterprise Linux 7.6 |
커널 | 3.10.0.957.27.2.e17.x86_64 |
디스크 | 240GB SATA SSD M.2 모듈 |
Rome의 메모리 대역폭 테스트는 그림 6에 나와 있으며, 이러한 테스트는 NPS4 모드에서 실행되었습니다. 표 1에 나열된 4가지 CPU 모델에서 서버의 모든 코어를 사용할 때 듀얼 소켓 PowerEdge C6525에서 ~270-300GB/s의 메모리 대역폭을 측정했습니다. CCX당 하나의 코어만 사용되는 경우 시스템 메모리 대역폭은 모든 코어로 측정된 것보다 ~9~17% 더 높습니다.
대부분의 HPC 워크로드는 시스템의 모든 코어를 완전히 구독하거나 HPC 센터가 각 서버에서 여러 작업을 수행하는 높은 처리량 모드로 실행됩니다. 따라서 모든 코어 메모리 대역폭은 시스템의 메모리 대역폭과 코어당 메모리 대역폭 기능을 더 정확하게 나타냅니다.
그림 6에는 소켓당 8개의 메모리 채널을 지원했지만 2667MT/s로 실행되는 이전 세대 EPYC Naples 플랫폼에서 측정된 메모리 대역폭도 나와 있습니다. Rome 플랫폼은 Naples보다 5%에서 19% 더 높은 총 메모리 대역폭을 제공하며, 이는 주로 더 빠른 3200MT/s 메모리 덕분입니다. 소켓당 64c를 사용하더라도 Rome 시스템은 코어당 2GB/s 이상을 제공할 수 있습니다.
그림 7과 같이 다른 NPS 구성을 비교한 결과, NPS1에 비해 NPS4에서 ~13% 더 높은 메모리 대역폭이 측정되었습니다.
(그림 6 듀얼 소켓 NPS4 STREAM 트라이어드 메모리 대역폭)
(그림 7 NPS1, NPS2, NPS 4 메모리 대역폭)
그림 8은 단방향 및 양방향 테스트를 위한 단일 코어 InfiniBand 대역폭을 플로팅합니다. 테스트베드는 100Gbps에서 실행되는 HDR100을 사용했으며, 그래프는 이러한 테스트에서 예상되는 회선 속도 성능을 보여줍니다.
그림 8 InfiniBand 대역폭(싱글 코어)
그림 9 InfiniBand 메시지 속도(모든 코어)
메시지 속도 테스트는 테스트 중인 두 서버의 소켓에 있는 모든 코어를 사용하여 다음으로 수행되었습니다. BIOS에서 기본 IO가 활성화되고 ConnectX-6 HDR100 어댑터가 기본 디바이스로 구성된 경우 그림 9와 같이 기본 IO가 활성화되지 않은 경우보다 모든 코어 메시지 속도가 훨씬 높습니다. 이는 HPC를 튜닝할 때, 특히 다중 노드 애플리케이션 확장성을 위해 이 BIOS 옵션이 얼마나 중요한지 보여줍니다.
Rome 마이크로 아키텍처는 16 DP FLOP/사이클을 폐기할 수 있으며, 이는 8 FLOPS/사이클이었던 Naples의 두 배입니다. 이를 통해 Rome은 Naples에 비해 이론적으로 최대 FLOPS가 4배, 향상된 부동 소수점 기능에서 2배, 코어 수의 두 배에서 2배(64c 대 32c)를 제공합니다. 그림 10은 나폴리 기반 시스템의 이전 결과와 함께 테스트한 4개의 Rome CPU 모델에 대해 측정된 HPL 결과를 보여줍니다. Rome HPL 효율성은 그래프의 막대 위에 백분율 값으로 표시되며 TDP CPU 모델이 낮을수록 더 높습니다.
테스트는 전원 결정론 모드에서 실행되었으며 동일하게 구성된 64개 서버에서 ~5%의 성능 델타를 측정했습니다. 따라서 여기에서 결과는 해당 성능 대역에 있습니다.
(그림 10 NPS4의 단일 서버 HPL)
다음으로 다중 노드 HPL 테스트를 실행했고 그 결과는 그림 11에 표시되었습니다. EPYC 7452의 HPL 효율은 64노드 규모에서 90% 이상을 유지하지만, 효율성이 102%에서 97%로, 다시 최대 99%로 떨어지는 것에 대해서는 추가 평가가 필요하다
(그림 11 멀티 노드 HPL, 듀얼 소켓 EPYC 7452, HDR100 InfiniBand 사용)
Rome 기반 서버에 대한 초기 성능 연구에서는 첫 번째 HPC 벤치마크 세트의 예상 성능을 보여줍니다. BIOS 튜닝은 최상의 성능을 위해 구성할 때 중요하며, 튜닝 옵션은 공장에서 구성하거나 Dell EMC 시스템 관리 유틸리티를 사용하여 설정할 수 있는 BIOS HPC 워크로드 프로파일에서 사용할 수 있습니다.
HPC 및 AI Innovation Lab에는 Rome 기반의 64개 서버로 구성된 새로운 PowerEdge 클러스터 Minerva가 있습니다. 새로운 Minerva 클러스터에 대한 애플리케이션 성능 연구를 설명하는 후속 블로그를 보려면 이 공간을 시청하십시오.