고성능 컴퓨팅(HPC) 워크로드는 일반적으로 CPU 또는 GPU를 대상으로 하는 것이 기본입니다. 그러나 이제 강력한 인텔® FPGA 가속기를 사용할 수 있게 되면서 이러한 상황이 달라지고 있습니다. 이 사례 연구에서 보여준 바와 같이, HPC 워크로드는 상위 수준 개발 워크플로를 사용할 때에도 FPGA에서 최고의 성능을 발휘할 수 있습니다. 이 사례 연구는 응용 프로그램의 세부 정보, 도구 흐름, 최신 인텔® Agilex™ 7 FPGA 기술로의 마이그레이션을 설명합니다. 다른 연구원은 자체 HPC 응용 프로그램을 위해 이 정보를 고려할 수 있습니다.
소개
분자 모델링은 현대 과학 연구에서 점점 더 중요한 도구가 되었습니다. 계산 방법의 도움으로 과학자는 복잡한 분자 모델을 만들어 속성과 행동을 연구할 수 있습니다. 그러나 이러한 모델을 만들려면 수십억 번의 계산이 필요하며, 연구원은 목표를 실현하기 위해 계산 과제를 극복해야 합니다.
분자 모델링 과제
카탈루냐 고급 화학 연구소(CSIC)는 분자 구조 분야를 개선하기 위한 새로운 기술 개발에 초점을 맞추고 있습니다. 분자 구조에 대한 지식은 생물 의학에서 새로운 의약품 및 치료법을 개발하는 데 사용될 수 있습니다. 계산 분자 모델을 개발하고 그 구조를 검증하는 기술은 널리 알려져 있으며 이해도도 높습니다.
분자 구조를 검증하기 위한 반복적 방법론은 다음 단계를 거칩니다.
- 계산 분자 모델을 만듭니다.
- 계산 스펙트럼을 생성합니다.
- 계산 스펙트럼을 분자의 알려진 분석 스펙트럼과 비교합니다.
- 스펙트럼이 일치하면 분자의 구조가 동일합니다.
- 일치하지 않으면 컴퓨팅 모델을 개선하고 새로운 스펙트럼을 생성합니다.
이 방법론에 따르는 과제는 검증 단계에서 필요한 컴퓨팅 작업입니다.
인텔® 제온® Gold 프로세서(3.2GHz, 코어 1개, 스레드 1개)를 사용하여 2백만 개의 데이터 포인트가 있는 간단한 분자를 분석하려면 계산에 9,644.544초 또는 2시간 41분이 걸립니다. 이는 근무일 약 3~4회만 반복할 수 있으며 개발 시간에 상당한 영향을 미칩니다.
이는 분명히 고성능 컴퓨팅 문제였기 때문에 CSIC의 과학자들은 바르셀로나 슈퍼컴퓨팅 센터(BSC)에 도움을 요청했습니다.
HPC, FPGA에 최적
BSC는 세계적 수준의 컴퓨팅 리소스, 특히 CPU, GPU, FPGA를 탑재한 이기종 데이터 센터 아키텍처로 잘 알려져 있습니다. BSC는 CPU가 너무 느리다는 점을 알고 있었기 때문에 GPU 또는 FPGA가 요구 사항에 더 적합한지 알아보고자 했습니다.
BSC 팀은 OpenCL 커널로 작성된 알고리즘을 조사했습니다.
주요 알고리즘 기능:
이 알고리즘은 단정밀도 및 배정밀도 부동 소수점을 모두 사용하며, 이는 GPU와 FPGA에서 효율적으로 지원됩니다.
상한값 또는 잠재적 상한값이 N인 내포된 for 루프가 있습니다. 여기서 N은 2백만입니다.
GPU를 사용하려면 모든 for 루프를 완전히 언롤해야 하므로 엄청난 양의 하드웨어와 큰 GPU가 필요하며, 결과적으로 전력 소비량이 많아집니다.
FPGA를 사용하는 것이 더 효율적인 구현 옵션일까요? FPGA를 사용하면 워크로드 개발에 어려움이 있을까요?
HPC에서 FPGA의 이점
FPGA는 GPU가 최적화되지 않은 워크로드를 처리할 수 있습니다. FPGA는 사용자 지정 하드웨어를 사용하여 알고리즘을 구현하지만, 오늘날에는 소프트웨어 개발자에게 FPGA 성능을 제공하는 oneAPI와 같은 상위 수준 도구 흐름 등의 옵션이 있습니다.
FPGA의 고유한 기능은 다음과 같습니다.
- 성능: FPGA는 알고리즘에 가장 잘 맞도록 완전히 유연한 아키텍처를 갖추고 있습니다. 즉, CPU와 GPU의 고정된 아키텍처에 맞게 알고리즘을 조정할 필요가 없습니다. 들어오는 데이터는 CPU를 사용하지 않고도 메모리에서 직접 처리할 수 있습니다.
- 프로그래밍 가능성: FPGA 워크로드는 즉시 변경하고 최신 알고리즘 개발로 업데이트할 수 있습니다. 워크로드를 병렬로 실행할 수 있으며, 풍부한 I/O 리소스를 사용하여 대규모 워크로드를 여러 FPGA에 분산할 수 있습니다.
- 생산성: FPGA는 OFS(Open FPGA Stack)을 통해 생산성을 높일 수 있어 기존 서버에 OFS 카드를 손쉽게 설치하고 시스템을 구성할 수 있습니다.
- 전력: 전력 소비는 매우 중요합니다. FPGA는 CPU와 GPU보다 짧은 클럭 주기와 낮은 클럭 주파수로 실행할 수 있어 전력 소비량과 비용이 절감됩니다.
- 가격: FPGA 가속 카드에는 여러 가지 옵션이 있습니다. 성능 향상을 위해 FPGA 카드를 설치하면 기존 솔루션을 갱신하는 것보다 비용 효율이 더 향상할 수 있습니다.
BSC의 HPC 팀은 FPGA가 이 알고리즘에 가장 적합하다고 판단했습니다.
레거시 가속기
BSC의 HPC 가속 팀은 이미 2개의 인텔® Programmable Acceleration Card(인텔® PAC) 솔루션을 이용할 수 있었습니다.
팀은 기존 OpenCL 알고리즘을 사용하여 인텔 PAC에서 계산 스펙트럼을 계산했습니다.
결과는 아래 표에 담겨 있으며 다음과 같이 요약할 수 있습니다.
- 인텔 Arria 10 GX FPGA가 장착된 인텔 PAC에서 나온 초기 결과는 CPU 결과보다 17.8배 가속한 것으로 나타났으며 커널 실행 시간을 약 10,000초에서 540.457초로 단축하였습니다.
- 그런 다음 FPGA의 적응형 아키텍처를 활용하여 BSC는 정확도를 허용치만큼만 떨어뜨리면서 64비트 배정밀도 부동 소수점 누산기를 40비트 정수 데이터 유형으로 변환할 수 있었습니다. 부동 소수점 계산을 임의의 정밀도 데이터 유형으로 대체하는 기능은 FPGA에서만 가능하며, 처리 시간은 274.02초로 더 단축되었습니다.
- 인텔® Stratix® 장치 기반의 인텔® FPGA PAC D5005로 이 프로세스를 반복하면 처리 시간이 81초로 훨씬 단축되었습니다.
FPGA 결과는 인상적이지만, 두 가지 이전 세대 FPGA 기술로 생성되었으며 16년 전 처음 출시된 OpenCL을 사용했습니다. BSC의 팀은 최신 도구와 실리콘을 사용하여 더 나은 성능을 달성할 수 있을지 궁금했습니다.
현대 데이터 센터를 위한 유연하고 구성 가능한 솔루션
현대적인 실리콘: 인텔® Agilex™ FPGA
인텔의 최신 FPGA 기술은 인텔 Agilex 7 FPGA입니다. 인텔 Agilex 7 F-시리즈는 다양한 응용 프로그램에서 고성능 컴퓨팅을 제공하도록 설계되었습니다. 고급 아키텍처는 FPGA와 CPU의 이점을 결합하여 높은 처리량과 짧은 지연 시간 성능을 지원합니다.
인텔 Agilex 7 F-시리즈의 또 다른 이점은 전원 효율성입니다. 이는 고성능을 유지하면서 전력 소비량을 줄이는 고급 전원 관리 기능으로 설계되었습니다. 인텔 Agilex 7 F-시리즈의 FPGA 패브릭은 10nm 공정 기술을 사용하여 제작되어 저전력으로 고성능 컴퓨팅을 제공할 수 있습니다. 이 전원 효율성은 데이터 센터, 에지 컴퓨팅, 자율 주행 차량과 같은 상황에 전력 소비량을 최소화하면서 고성능 컴퓨팅이 필요한 응용 프로그램에서 매우 중요합니다.
또한, 보안은 모든 현대 데이터 센터에서 매우 중요한 관심사입니다. 인텔 Agilex 7 F-시리즈는 고급 보안 기능을 제공하여 이러한 우려를 해결합니다. 이는 보안 부팅 및 런타임 보안을 제공하는 임베디드 보안 하위 시스템으로 설계되었습니다. 또한, 시스템의 신뢰성을 보장하는 하드웨어 신뢰 루트가 내장되어 있습니다. 이러한 보안 기능은 금융 기관, 정부 기관, 의료 서비스 제공업체 등의 민감한 데이터를 저장하는 응용 프로그램에 필수적입니다.
현대적인 툴체인: 인텔® oneAPI Base Toolkit
인텔® oneAPI Base Toolkit(Base Kit)은 고성능 아키텍처 간 응용 프로그램 생성 프로세스를 간소화하도록 설계된 소프트웨어 개발 툴킷입니다. SYCL로 구축되었으며 CPU, GPU, FPGA, AI 가속기를 포함한 다양한 프로세서에서 작동할 수 있습니다.
SYCL("시클"이라고 발음)은 개방형 표준으로, Khronos Group에서 관리합니다. 로열티가 없는 플랫폼 간 추상화 계층이며 개발자가 ISO C++를 사용하여 이기종 프로세서용 코드를 작성할 수 있습니다. 호스트 코드와 커널 코드 모두 동일한 소스 파일에 포함될 수 있습니다.
oneAPI의 주요 이점 중 하나는 개발 프로세스의 간소화입니다. 인텔 oneAPI Base Toolkit(Base Kit)을 통해 개발자는 다른 프로그래밍 언어를 배우지 않고도 다른 아키텍처에서 실행되는 응용 프로그램을 만들 수 있습니다. 즉, 개발자는 코드를 한 번만 작성하면 다른 프로세서에서 실행할 수 있어 많은 시간과 노력을 절약할 수 있습니다.
oneAPI의 아키텍처 간 호환성은 미래에 다양한 프로세서에서 실행할 것을 아는 개발자가 응용 프로그램을 미래에 대비시킬 수 있다는 것을 의미합니다. 이는 다양한 유형의 하드웨어에서 실행할 수 있는 응용 프로그램을 만들고자 하는 개발자에게 특히 중요합니다. 따라서 BSC와 같은 시설에 이상적입니다.
BSC에서 던진 질문
인텔 Agilex 7 장치와 oneAPI를 사용하면 분자 모델링의 효율성을 더욱 향상할 수 있지만, 이러한 변화로 인해 다음과 같은 과제가 생겼습니다.
OpenCL 소스는 SYCL로 마이그레이션해야 합니다. 그러면 어떤 어려움이 발생합니까?
BSC는 인텔 Agilex 7 FPGA 장치를 구매할 수 있지만, FPGA 가속 카드를 쉽게 구현할 수 있습니까?
쉬운 코드 마이그레이션
BSC의 조사를 통해 OpenCL에서 코드를 쉽게 마이그레이션할 수 있는 SYCL의 다음 두 가지 측면이 강조되었습니다.
- 커널 코드 마이그레이션: SYCL은 다른 C++ 라이브러리 및 프레임워크와 원활하게 작동하도록 설계되어 기존 C++ 코드베이스에 쉽게 통합할 수 있습니다.
- 호스트 코드 업데이트: SYCL은 병렬 프로그래밍의 세부 사항 중 많은 부분을 추상화하는 상위 수준 API를 제공합니다. 따라서 개발자가 이기종 프로그래밍을 훨씬 쉽게 시작할 수 있습니다.
커널 코드 마이그레이션
OpenCL 커널 코드는 기능 변경 없이 마이그레이션되었습니다. 유일한 변경 사항은 다음과 같은 SYCL 구문을 처리하는 것이었습니다.
- OpenCL 커널 선언이 SYCL 람다 함수로 조정되었습니다.
- 각 커널 인수에 대해 버퍼 접근자가 추가되었습니다.
이러한 사소한 변경의 이유는 쉽게 설명할 수 있습니다. OpenCL보다 이기종 프로그래밍에 유용한 SYCL의 주요 개선 사항은 호스트와 커널 간의 더 간단하지만 더 강력한 인터페이스 사양입니다. SYCL은 C++17로 구축되기 때문에 다른 C++ 기반 코드를 쉽게 통합할 수 있습니다. 새로운 SYCL 인터페이스 모델과 일치하도록 구문을 변경하는 것 외에 대부분 OpenCL 커널 코드는 SYCL로 이동할 때 거의 수정할 필요가 없습니다.
호스트 코드 업데이트
OpenCL에서 명시적으로 관리해야 하는 많은 세부 사항이 SYCL에서 자동으로 처리되므로 원래 OpenCL 호스트 코드가 크게 간소화되었습니다. 원래 코드는 566줄로 구성되었지만, 업데이트된 SYCL 코드는 단 285줄이었습니다.
예상대로 호스트와 커널 간의 인터페이스가 지정된 호스트 코드가 마이그레이션의 영향을 가장 많이 받았습니다. 그러나 SYCL에는 훨씬 더 강력한 인터페이스 사양 및 관리자가 있으므로 OpenCL에서 필요했던 많은 작업이 더 이상 필요하지 않습니다. 결과적으로 가장 큰 업데이트는 더 이상 필요하지 않은 선언 및 변수를 제거하는 것입니다.
BittWare의 가속 카드
가속 카드를 개발하는 데는 시간과 노력이 필요합니다. 이는 단순히 보드에 구성 요소를 추가하는 것만이 아닙니다. FPGA 장치는 CPU와 통신하기 위해 워크로드 주변에 모든 지원 인터페이스 및 통신 로직이 필요합니다.
오늘날의 FPGA는 최신 장치의 DDR5를 포함한 신호 무결성부터 열 관리 고려 사항에 이르기까지 적합한 PCIe 카드를 구축하기 위한 성능 요구 사항을 크게 높입니다. 환경 모니터링 또는 카드 수준 보안 등의 작업을 위한 강력한 도구 제품군을 구축하면서 카드 설계에 대한 투자는 불과 몇 년 전보다 훨씬 더 위험해졌습니다.
이 개발 과제를 해결하기 위해 BSC는 Molex의 자회사이자 인텔 Titanium 파트너인 BittWare를 선택했습니다.
BittWare는 인텔 FPGA를 사용하여 엔터프라이즈급 가속 제품을 설계 및 제조합니다. BSC의 원래 인텔 PAC 카드 제조업체였던 이 기업은 현재 최신 인텔 Agilex 7 장치를 탑재한 PCIe 카드를 제공합니다. 고객은 자체 카드를 제작하려는 시도와 비교했을 때 BittWare(및 모회사 Molex)의 강점이 위험을 크게 줄이는 요소라고 보고 있습니다.
이러한 고성능 프로그래밍 가능 가속기를 통해 고객은 위험을 줄이면서 인텔 FPGA 솔루션을 신속하게 개발 및 배포할 수 있습니다.
BittWare는 컴퓨팅, 네트워킹, 스토리지 등 다양한 시장 영역을 모색하고 있습니다. 자연어 인식, 추천 엔진, 네트워크 모니터, 추론, 보안 통신, 분석, 압축, 검색 등 많은 워크로드가 FPGA에 적합합니다. BittWare는 기존 RTL 외에도 인텔 FPGA 기반이며 oneAPI를 지원하는 많은 제품을 제공합니다.
BSC는 인텔 Agilex 7 A027 장치를 사용하는 기성 BittWare IA-840f 카드를 구매하여 개발 문제를 해결할 수 있습니다.
기대 이상의 결과
인텔 oneAPI Base Toolkit(Base Kit)과 BittWare IA-840f 가속 카드를 사용한 결과는 기대를 뛰어넘었습니다.
- 소스 코드는 쉽고 원활하게 마이그레이션되었습니다.
- BittWare 가속 카드가 연결되고 oneAPI와 함께 작동했습니다.
개선된 성능
최신 도구와 실리콘을 사용하여 BSC는 이전 결과를 재생성하고 이를 아래 표에 추가할 수 있었습니다. 알고리즘은 새로운 플랫폼에서 61초, 사용자 지정 누산기 버전에서 41초 만에 실행되었으며, 이는 CPU보다 233배, 초기 OpenCL Arria 솔루션보다 약 13배 향상한 속도입니다.
플랫폼 | 타일 크기 | 언롤 팩터 | 목표 Fmax(MHz) | 실제 Fmax(MHz) | 내부 루프 지연 시간 | 커널 실행 시간(N=2,000,000) | 게인 |
---|---|---|---|---|---|---|---|
CPU3 | 3200 | 9644.544 | 1.0배 | ||||
Aria 10 PAC | 256 | 16 | 200 | 232 | 14 | 540.457 | 17.8배 |
Aria 10 PAC2 | 4096 | 32 | 200 | 244 | 5 | 270.020 | 35.2배 |
D5005 | 1024 | 64 | 180 | 241 | 16 | 130.012 | 74.2배 |
D50052 | 8192 | 64128 | 270 | 255 | 168 | 130.01281.573 | 118.2배 |
IA-840f | 2816 | 88 | 150 | 374 | 12 | 61.277 | 157.4배 |
IA-840f2 | 10240 | 160 | 350 | 380 | 8 | 41.305 | 233.5배 |
원시 성능 그 이상
CPU 또는 GPU와 달리 FPGA는 개발자에게 제약을 가하는 고정된 아키텍처가 없습니다. 이러한 적응성을 통해 개발자는 고정관념에서 벗어날 수 있습니다. BSC는 이 기능을 활용하고 누적 정확도를 줄여 알고리즘의 성능을 개선했습니다.
클럭 주기가 소요되는 반복적 계산을 통해 배정밀도 정확도를 달성할 수 있지만, FPGA는 표준 C++/SYCL/OpenCL 데이터 유형에만 국한되지 않습니다. 임의 너비의 데이터 유형을 생성할 수 있습니다. 데이터 범위를 분석한 후 BSC는 결과의 정확도를 전혀 떨어뜨리지 않으면서 배정밀도 부동 소수점 누산기를 40비트 정수 누산기로 대체할 수 있다고 판단했습니다.
이를 통해 개발자는 실리콘이 제공할 수 있는 모든 원시 성능에 단순히 의존하는 대신 알고리즘을 개선할 수 있습니다. 코드를 업데이트하고 oneAPI를 다시 실행하여 새로운 구현을 생성한 후 검증 시간이 단 41초로 줄어들어 원래 CPU보다 233배 빠른 속도를 제공했습니다.
결론
점점 더 많은 HPC의 사례 연구에서 최신 인텔 Agilex FPGA 솔루션이 워크로드 성능뿐만 아니라 개발 용이성 요구 사항에서도 다른 아키텍처와 경쟁할 수 있음을 보여주고 있습니다. 또한, HPC에서 이기종 솔루션에 대한 수요가 증가할 것이라는 점을 염두에 두고 성능을 평가하거나 컴퓨팅 클러스터를 구축하기 위해 기성 PCIe 카드를 사용할 수 있습니다.
추가 정보
- 이 사례 연구를 웨비나 차세대 인텔® Agilex™ FPGA를 사용한 고성능 컴퓨팅으로 검토하기
- 인텔 oneAPI Base Toolkit 다운로드하기
- oneAPI Base Toolkit용 인텔 FPGA 추가 기능에서 oneAPI 및 FPGA와 관련된 모든 정보 확인하기
- oneAPI FPGA Github에서 더 많은 oneAPI FPGA 예제 검토하기
- 120일 동안 무료로 이용할 수 있는 oneAPI용 인텔® DevCloud 지금 시작하기