호퍼 (마이크로아키텍처)

섬네일| NVIDIA H100 GPU 4개
오른쪽|섬네일| 아키텍처의 시초, 그레이스 호퍼의 사진
**호퍼**(Hopper)는 엔비디아가 개발한 그래픽 처리 장치 (GPU) 마이크로아키텍처이다. 데이터 센터용으로 설계되었으며, 에이다 러브에이스 아키텍처와 동급이다. 엔비디아 테슬라의 최신 세대이다.

컴퓨터 과학자이자 미 해군 준장을 역임한 그레이스 호퍼의 이름을 딴 호퍼 아키텍처는 2019년 11월에 유출되었으며 2022년 3월에 공식적으로 공개되었다. 특징으로 하는 이전 버전인 튜링 및 암페어 마이크로아키텍처와 비교하면 새로운 스트리밍 멀티프로세서 와  더 빠른 메모리 하위 시스템을를 사용하여 개선되었다.

## 아키텍처
엔비디아 호퍼 H100 GPU는 800억 개의 트랜지스터를 사용하여 TSMC 4N 공정으로 구현된다. 이는 최대 144개의 스트리밍 멀티프로세서로 구성된다.  SXM5 소켓 환경에서 엔비디아 호퍼 H100은 PCIe 보다 더 나은 성능을 보여주었다. 

### 스트리밍 멀티프로세서 (SM)
호피의 스트리밍 멀티프로세서는 튜링 및 암페어 마이크로아키텍처보다 개선되었지만 스트리밍 멀티프로세서(SM)당 최대 동시 워프 수는 64개로 유지되었다.  호퍼 아키텍처는 공유 메모리와 전역 메모리 간의 양방향 비동기 메모리 전송을 지원하는 텐서메모리 가속기(TMA)를 제공한다.  TMA에서 애플리케이션은 최대 5D 텐서를 전송할 수 있다. 공유 메모리에서 전역 메모리로 쓸 때, 요소별 축소 및 비트별 연산자를 사용하여 레지스터 및 SM 명령어를 피하면서 사용자가 워프 특화 코드를 작성할 수 있도록 할 수 있다. TMA는 `cuda::memcpy_async` 를 통해 표출된다. 

애플리케이션을 병렬화할 때 개발자는 스레드 블록 클러스터를 사용할 수 있다. 스레드 블록은 클러스터 내 다른 스레드 블록의 공유 메모리( 분산 공유 메모리 라고도 부름)에서 원자적 연산들을 수행할 수 있다. 분산 공유 메모리는 L2 캐시와 동시에 SM에 의해 사용될 수 있다. SM 간 데이터 통신에 사용될 때 이는 분산 공유 메모리와 L2의 결합된 대역폭을 활용할 수 있다. 최대 포터블 클러스터 크기는 8이지만 엔비디아 호퍼 H100은 `cudaFuncAttributeNonPortableClusterSizeAllowed` 기능을 사용하여 클러스터 크기 16을 지원할 수 있지만 잠재적으로 액티브 블록 수가 줄어들 수 있다. L2 멀티캐스팅 및 분산 공유 메모리를 사용하면 동적 랜덤 액세스 메모리 읽기 및 쓰기에 필요한 대역폭이 줄어든다.

호퍼는 이전 제품보다 SM·사이클 단위마다 2배 많은 FP32 작업을 통해 향상된 단정밀도 부동 소수점 형식 (FP32) 처리량을 제공한다. 또한 호퍼 아키텍처는 스마스-워터만 알고리즘을 포함한 새로운 명령어를 추가로 지원한다.  암페어 아키텍처와 마찬가지로 TensorFloat-32(TF-32)연산이 지원된다. 두 아키텍처의 매핑 패턴은 동일하다. 

### 메모리
엔비디아 호퍼 H100은 최대 80GB의 HBM3 및 HBM2e 메모리를 지원한다. HBM3 메모리 시스템은 엔비디아 암페어 A100의 2TB/s에 비해 50% 증가한 3TB/s를 지원한다. 아키텍처 전반에 걸쳐 L2 캐시 용량과 대역폭이 증가했다. 

호퍼를 사용하면 CUDA 컴퓨팅 커널이 개별 메모리 할당을 포함하여 자동 인라인 압축을 활용하여 더 높은 대역폭에서 메모리에 액세스할 수 있다. 데이터(와 압축 가능성)가 언제든지 변경될 수 있으므로 이 기능은 애플리케이션에 사용 가능한 메모리 양을 늘리지 않는다. 메모리 압축기는 여러 압축 알고리즘 중에서 자동으로 선택한다. 

엔비디아 호퍼 H100은 L1 캐시, 텍스처 캐시 및 공유 메모리를 결합하여 용량을 256KB로 늘린다. 이전 버전과 마찬가지로 L1 및 텍스처 캐시를 통합 버퍼로 설계된 통합 캐시로 결합한다. `cudaFuncAttributePreferredSharedMemoryCarveout` 속성은 L1 캐시의 카브아웃을 정의하는 데 사용될 수 있다. 호퍼는 전체 통신 대역폭이 더 빨라진 차세대 제품을 통해 NVLink에 향상된 기능을 도입한다. 

#### 메모리 동기화 도메인
일부 CUDA 응용 프로그램은 메모리 순서로 인해 펜스 또는 플러시 작업을 수행할 때 간섭을 경험할 수 있다. GPU는 어떤 쓰기가 보장되고 어떤 쓰기가 우연한 타이밍에 표시되는지 알 수 없기 때문에 불필요한 메모리 작업을 기다리게 되어 펜스 또는 플러시 작업 속도가 느려질 수 있다. 예를 들어 커널이 GPU 메모리에서 계산을 수행하고 병렬 커널이 피어와 통신을 수행하는 경우 로컬 커널이 쓰기를 플러시하여 NVLink 또는 PCIe 쓰기 속도가 느려진다. 호퍼 아키텍처에서 GPU는 펜스 작업을 통해 넷 캐스트를 줄일 수 있다. 

### DPX 명령어
호퍼 아키텍처 수학 API(응용 프로그래밍 인터페이스)는 SM에서 하프 워드당 작업을 수행하는 `__viaddmin_s16x2_relu` 와 같은 함수를 표출한다. max(min(a + b, c), 0) . 스미스-워터만 알고리즘에서는 `__vimax3_s16x2_relu`을 사용할 수 있으며, 3방향 최소값 또는 최대값 다음에 0으로 고정된다. 마찬가지로 호퍼는 니들만-브니쉬 알고리즘의 구현 속도를 높인다.

### 트랜스포머 엔진
호퍼 아키텍처는 트랜스포머 엔진을 활용한다.

### 전력 효율성
SXM5 폼 팩터 H100의 열 설계 전력(TDP)은 700 와트이다.  비동기성과 관련하여 호퍼 아키텍처는 높은 수준의 활용도를 얻을 수 있으므로 더 나은 와트당 성능을 가질 수 있다. 

## 그레이스 호퍼
&nbsp;
그레이스 호퍼 GH200은 호퍼 기반 H200 GPU와 그레이스 기반 72코어 CPU를 단일 모듈에 결합한 것이다. 모듈의 총 전력 소모량은 최대 1000이다. CPU와 GPU는 NVLink를 통해 연결되어 CPU와 GPU 메모리 간의 메모리 일관성을 제공한다.

## 역사
2019년 11월, 한 유명 트위터 계정 https://x.com/kopite7kimi/ 에 따르면 암페어 이후의 다음 아키텍처가 컴퓨터 과학자이자 하버드 마크 I의 최초 프로그래머 중 한 명인 미 해군 준장 그레이스 호퍼 이름을 따서 호퍼라고 불릴 것임을 알리는 트윗을 게시했다. 이 계정에서는 호퍼가 다중 칩 모듈 설계를 기반으로 하여 낭비를 줄이면서 수율을 높일 수 있다고 명시했다.

2022년 엔비디아 GTC 컨퍼런스에서 공식적으로 호퍼를 발표했다. 2023년에는 AI 붐이 일면서 H100의 수요가 급증했다. 오라클의 래리 엘리슨은 그 해 엔비디아 CEO 젠슨 황과의 만찬에서 그와 테슬라의 일론 머스크 및 XAI가 H100을 "구걸하고 있었다"고 말했다. "내 생각에는 그것을 묘사하는 가장 좋은 방법인 것 같다. 초밥과 구걸의 한 시간."

## 각주

## 참고 자료
* 
* 
* 
* 
* 

## 추가 문헌
* 
* 
* 

분류:그래픽스 마이크로아키텍처
분류:엔비디아 마이크로아키텍처