Devito Codes로 HPC 코드 생성 자동화

인텔® 제온® 6 프로세서를 탑재한 Devito Codes는 최적화된 HPC 코드를 생성하고 유한 차분 솔루션을 구현합니다.

개요:

  • Devito Codes는 주요 컴퓨터 하드웨어 제조업체 및 클라우드 기업과 긴밀하게 협력하여, 해당 기업의 고객들이 플랫폼 성능, 생산성, 휴대성을 극대화할 수 있도록 지원합니다.

  • 인텔® 기술 기반의 Devito Codes는 Python DSL (도메인별 언어) 에서 최적화된 HPC 코드를 생성하여, 과학자가 수학을 기반으로 고성능 유한 차분 솔루션을 구축할 수 있도록 지원합니다.

author-image

기준

HPC 트릴레마: 성능, 휴대성, 생산성 사이의 선택

물리 과학은 응용 수학으로 세상을 설명합니다. 지진학, 전자학, 유체 역학은 물리적 현상을 모델링하기 위해 모두 편미분 방정식 및 유한 차분 시뮬레이션과 같은 기법을 사용합니다.

Python과 NumPy, SciPy, MatPlotLib와 같은 과학 라이브러리 생태계는 과학자와 연구자들이 비교적 짧고 쉽게 활용할 수 있는 코드로 고도화된 분야별 솔루션을 개발할 수 있도록 지원하는 프레임워크를 제공합니다. 이러한 다양성과 생산성이 Python을 현대 과학과 공학 분야의 주요 언어로 성장시킨 원동력입니다. 문자 그대로 '반중력 (antigravity)' 을 '임포트 (import)' 할 수 있는 프로그래밍 언어가 또 있을까요?

순수 Python은 컴파일된 언어에 비해 느릴 수 있지만, 고성능 컴퓨팅 (HPC) 에서 주로 수행하는 역할은 C, C++, Fortran과 같은 저수준 컴파일 언어나 CUDA, SYCL, HIP과 같은 GPU 지원 기술로 구현된 고도로 최적화된 라이브러리에 쉽게 연결할 수 있는 인터페이스 기능을 수행하는 것입니다. NumPy, SciPy와 같은 Python의 과학 라이브러리는 이러한 컴파일된 백엔드를 활용하여 Python의 사용 편의성을 유지하면서도 높은 성능을 제공합니다. 그러나 이 모델은 여전히 특정 분야 작업에 최적화된 HPC 코드의 가용성에 의존하며, 이를 개발 및 유지 관리하기 위해서는 전문 지식과 리소스가 필요합니다.

Devito 솔루션: 과학자가 과학자답게

Devito Codes 팀은 HPC 수준의 유한 차분 코드에 대한 JIT (Just-In-Time) 컴파일 기능을 Python 생태계에 통합하는 것을 목표로 삼았습니다. 과학자들은 Devito를 사용하여 Python의 기호 기반 수학 프레임워크 (SymPy) 내에서 복잡한 편미분 방정식 해법과 목표 중심 최적화 문제를 작성하고, 이를 모든 주요 CPU 및 GPU 아키텍처용으로 병렬화되고 하드웨어에 최적화된 HPC 코드로 원활하게 생성할 수 있습니다.

인텔 제온 6에서 Devito Codes 성능 향상 (값이 클수록 우수)

에너지 산업에서 일반적으로 사용되는 2차원 경사진 횡등방성 (Tilted Transverse Isotropy; TTI) 지진파 모델의 음향 이방성 전파기를 위한 DDevito Codes 커널은 5세대 인텔 제온 스케일러블 프로세서에 비해 인텔 제온 6 프로세서가 얼마나 더 향상된 성능을 제공하는지 잘 보여줍니다.1

Devito Codes의 CEO이자 공동 창립자인 Gerard Gorman은 "대부분의 사람들은 처음에 생산성 향상을 위해 Devito를 도입합니다. 이 기술은 고유한 형태의 신속한 프로토타이핑을 가능하게 하므로, 사람들은 Devito를 일종의 컴퓨팅 실험실로 활용할 수 있습니다."라고 설명합니다.

다양한 하드웨어에서 시뮬레이션, 역산, 최적화 작업에 사용할 수 있는 고성능 커널을 생성하는 Python 프레임워크를 만드는 것은 간단한 일이 아닙니다. Devito는 공유 메모리 시스템용 OpenMP, 가속기용 OpenACC, 병렬성 및 이식성을 위한 MPI 등 여러 HPC 기술을 통합합니다. 고도화된 최적화에는 CUDA, HIP, SYCL과 같은 특수 언어를 사용한 하드웨어 특화 튜닝이 필요합니다. Devito Codes는 구조화된 컴퓨팅을 위해 현재까지 알려진 거의 모든 최적화 기법을 적용하고, 최신 기술을 지속적으로 통합함으로써 시간이 지남에 따라 성능이 누적적으로 향상되도록 합니다. 이러한 기술은 종종 전문가가 수작업으로 최적화한 상용 솔루션과 비교되거나 이를 능가하기도 합니다.

Devito Codes는 복잡한 HPC 코드 개발을 대신 처리하여, 사용자가 모든 가용 컴퓨팅 리소스를 활용하여 시스템 간에 프로젝트를 손쉽게 이전할 수 있도록 지원합니다. HPC 운영자와 서비스 제공업체는 기존 인프라를 유지하면서 이기종 어레이 확장과 대규모 업그레이드를 진행할 수 있으며, 이 과정에서 워크로드의 호환성과 성능은 안정적으로 유지됩니다.

“DevitoPRO 덕분에 지구물리학자는 연구 논문에 제시된 알고리즘을 하루도 채 지나지 않아 구현할 수 있습니다. 기존에는 수개월이 걸리던 코딩과 최적화 작업이 이제는 단기간에 가능해졌습니다. 이러한 빠른 전환 속도로 팀은 전례 없는 수준으로 실험과 혁신을 시도하고, 새로운 알고리즘의 검증과 배포 속도 또한 크게 높일 수 있게 되었습니다." —Mathias Louboutin, 선임 솔루션 아키텍트, Devito

DevitoPRO

Devito는 임페리얼 칼리지 런던의 Gerard Gorman 교수가 주도하는 인텔 병렬 컴퓨팅 센터 (Intel Parallel Computing Centre) 이니셔티브의 일환으로 시작되었습니다. 초기 프로젝트에서 지진 이미징을 위한 고성능 오픈 소스 소프트웨어를 개발했습니다. 프로젝트가 HPC 워크로드에 최적화된 컴파일러로 성장하게 되면서, 팀은 독점 기능, 고급 성능 최적화 기술, 상업적 지원을 갖춘 엔터프라이즈 에디션인 DevitoPRO를 출시했습니다.

DevitoPRO는 주로 에너지 산업의 탐사 지구 물리학 분야를 지원합니다. Python으로 작성된 지진 시뮬레이션을 위한 고도로 최적화된 이식형 코드를 컴파일하는 것 외에도, FWI (Full Waveform Inversion) 및 RTM (Reverse Time Migration) 을 위한 고성능 전파기와 그래디언트 연산자를 제공합니다. 이 외에도 DevitoPRO는 기술 지원, 교육, 맞춤형 소프트웨어 개발, 특정 하드웨어 대상 최적화 서비스 등을 제공합니다.

Devito는 학계와 업계 연구자들을 위해 범용 기호 및 컴파일러 소프트웨어 기술을, 특허 제약 없는 오픈 소스 소프트웨어로 지속적으로 제공하고 있습니다.

SYCL과 인텔을 통한 코드 이식성 확장

전통적으로, 이기종 프로세서 전반에서 실행 가능한 이식형 코드를 생성하려면 NVIDIA GPU에는 CUDA 커널, AMD GPU에는 HIP 커널, x86 및 RISC CPU에는 C/C++ 코드를 각각 컴파일해야 했습니다. 최근 몇 년 사이, SYCL이 등장하면서 HPC 프로그래머에게 최적화된 HPC 코드를 컴파일할 수 있는 새로운 멀티 플랫폼 옵션을 제공하고 있습니다.

“Devito는 기호 연산과 고급 컴파일러 기술을 결합하여, 신뢰할 수 있고 검증 가능하며, 최적화된 코드 생성을 보장합니다. 이는 미션 중심의 수학 소프트웨어에서 매우 중요합니다. 생성형 AI 코드는 이러한 수준의 정밀도와 신뢰성을 갖추지 못하지만, 두 기술을 결합하면 새로운 알고리즘의 개발 및 테스트에서 생산성을 획기적으로 높일 수 있습니다." —Gerard Gorman, Devito Codes의 CEO 겸 공동 창립자

SYCL은 CPU, GPU, FPGA를 포함한 여러 공급업체의 혼합 장치에서 데이터 리소스와 코드 실행을 탐색하고 관리할 수 있는 API를 탑재한 크로스 플랫폼 병렬 C++ 추상화 계층입니다. SYCL은 인텔이 Intel® Data Center GPU에 구현한 oneAPI 및 Data Parallel C++ 기반 기술입니다.

Devito Codes와 인텔 엔지니어는 협업을 통해 SYCL 코드 생성 기능을 DevitoPRO에 도입했습니다. 여기에는 Intel® Data Center GPU Max 1100 및 1550 시리즈 가속기를 위한 특별 최적화가 포함됩니다. 배포 과정에서 DevitoPRO 사용자는 Intel Data Center GPU를 대상으로 지정하기만 하면, SYCL의 성능 이점을 활용하는 JIT (just-in-time) 컴파일을 실행할 수 있습니다.

혼합 정밀 컴퓨팅을 통한 탄성파 지진학의 성능 확장

지진파는 종방향의 1차파 (P파) 와 횡방향의 2차파 (S파) 두 가지 형태로 전파됩니다. 지진학자들이 음향 분석이라고 부르는 P파 모델링은 파장 에너지와 입자 움직임이 동일한 차원에서 진행되기 때문에 수학적으로나 컴퓨팅적으로 비교적 단순합니다. 반면, 지진학자들이 탄성 분석이라고 부르는 P파와 S파 동시 모델링은 기하학적인 복잡성을 야기합니다.

두 파형은 90도 각도로 3차원 공간으로 전파되기 때문에, 이를 설명하기 위해서는 더 많은 항목을 포함하는 더 복잡한 파동 방정식이 필요합니다. 탄성 분석은 정확한 결과를 생성하기 위해 훨씬 더 높은 해상도가 필요하며, 이는 곧 방대한 양의 데이터를 수집해야 한다는 뜻입니다.

지진파는 종방향의 1차파 (P파) 와 횡방향의 2차파 (S파) 두 가지 형태로 구분됩니다.

Devito Codes의 CTO이자 공동 창립자인 Fabio Luporini는 "탄성파 모델을 실행하는 경우, 최상의 시나리오라고 해도 메모리 점유 공간은 음향파 모델에 비해 4~5배 커지게 됩니다. 이는 단순히 물리적 특성 때문입니다. 더 많은 파동장을 동시에 모델링해야 하고, 이 정보를 연립 편미분 방정식 형태로 메모리에 보관해야 하기 때문입니다."라고 설명합니다.

Devito Codes는 현재 세대 하드웨어에서 탄성파 컴퓨팅 워크로드를 가능하게 하는 AI 컴퓨팅 기술인 혼합 정밀도 알고리즘을 개발하고 있습니다. 약간의 정밀도 저하를 허용할 수 있는 워크로드는 FP-32 (32비트 부동 소수점) 에서 FP-32와 FP-16 (16비트 부동 소수점) 을 세심하게 조합한 형태로 변환되는데, 이 방식은 메모리 사용은 절반으로 줄이면서도 동일한 값을 표현합니다. 탄성파 분석 환경에서는 1페타바이트 규모의 데이터세트를 500TB로 줄이기만 해도, 메모리 및 I/O 관리부터 디스크에 스냅샷을 기록하는 과정에 이르기까지, 모든 단계에서 성능이 연속적으로 향상됩니다.

Devito Codes, 혼합 정밀도 도입으로 성능 두 배 향상 (값이 클수록 우수)2

Devito Codes의 테스트에 따르면, 정밀도 전환 및 혼합 (FP-16/FP-32) 방식이 성능을 2배 향상시키고, 메모리 사용 공간을 1/2로 줄여, 처리량을 크게 높일 수 있습니다.2

또한 FP-16 워크로드는 인텔® 제온® 6 프로세서 및 Intel Data Center GPU와 같이 혼합 정밀도를 지원하는 CPU와 GPU에서 더 빠르게 처리됩니다. 초기 테스트 결과, Devito Codes와 혼합 정밀도 방식으로 실행된 탄성파 분석은 하드웨어 업그레이드 없이도 최대 2배의 성능 향상1 을 보여줬으며, 이는 성능이 한 단계 도약한 것과 같은 효과를 가져왔습니다.

결론: 모든 성능 향상이 중요합니다

Devito Codes와 인텔은 유한 차분 시뮬레이션을 위한 이기종 HPC 시스템에서 더 많은 성능을 추출하기 위해 지속적으로 컴파일러 기술을 개선하고 최적화하고 있습니다. Devito의 오픈 소스 및 DevitoPRO 클라이언트에게는 이러한 노력이 매우 중요합니다.

Gorman은 "지층 영상화를 위한 지진 데이터 처리 작업은 프로젝트당 수백만 달러에 달하는 컴퓨팅 비용이 들 수 있습니다. 그래서 우리는 성능을 마지막 1%까지 더 끌어내야 합니다. 시간이 곧 비용으로 직결되기 때문이죠."라고 설명합니다.

최신 업데이트는 GitHub의 Devito Codes 또는 devitocodes.com에서 확인하십시오.

PDF 다운로드 ›