오늘날 컴퓨터는 데이터를 처리하기 위해서 CPU, GPU, FPGA, ASIC 등을 다양하게 활용한다. 하지만 이들을 최대한 활용하는 애플리케이션 개발은 쉽지 않다. 각 하드웨어의 프로그래밍 모델과 환경이 저마다 다르기 때문이다. 이를 극복하려면 다양한 처리 장치의 프로그래밍 환경과 모델을 통합한 플랫폼이 필요하다.
일반화된 이종 하드웨어 기반 데이터 처리
oneAPI, C++ 기반 이종 컴퓨팅 설계 지원
oneMKL/DNN/VPL 등의 라이브러리 제공
오늘날 컴퓨터의 데이터 처리는 전반적인 작업을 처리하는 CPU를 그래픽 작업을 전문으로 처리하는 GPU가 보조하는 형태로 이뤄진다. 기술의 발달로 애플리케이션의 숫자, 종류, 복잡도가 늘면서 더 특화된 처리가 가능한 FPGA, ASIC 등이 처리 가속 역할로 탑재되는 사례도 증가하고 있다.
하지만 다양한 처리 장치가 탑재됐다 하더라도 이들을 적재적소에 활용해 최대한의 효율을 끌어내는 애플리케이션을 만들기란 쉽지 않다. CPU, GPU, FPGA, ASIC 등의 프로그래밍 모델과 환경이 저마다 다르기 때문이다. 이러한 프로그래밍 파편화와 장벽은 프로그래밍, 유지보수의 어려움으로 이어진다.
따라서 개발자는 애플리케이션의 코드 및 성능 이식성을 확보해야 한다는 과제에 직면해 있다. 특정 애플리케이션의 코드가 여러 처리 장치에서 작동해야 하는 동시에 비슷한 성능을 내야 한다는 것이다. 이를 극복하려면 다양한 처리 장치의 프로그래밍 환경과 모델을 통합한 플랫폼이 필요하다.
▲ 자이나디스트 양준식 수석연구원 [사진=이수민 기자]
이에 인텔은 2019년, 다양한 컴퓨팅 아키텍처를 기반으로 하는 시스템에서 구동하는 애플리케이션의 개발을 가속하는 개방형 표준, ‘oneAPI’를 발표했다.
인텔 FPGA 트레이닝 파트너사인 자이나디스트(XINADIST)에서 인텔 FPGA 관련 교육과 개발을 담당하는 양준식 수석연구원에게 oneAPI란 무엇이며, 이를 활용하기 위해서는 무엇을 준비하고 숙지해야 하는지를 물었다.
Q. oneAPI의 용도는 무엇이고 활용처는 어딥니까?
A. oneAPI는 직접, 혹은 API 프로그래밍을 지원합니다. 또한, CPU, GPU, FPGA 및 AI 가속기 등 광범위한 하드웨어 전반에 완벽한 네이티브 코드 성능을 보여주는 통일된 언어와 라이브러리를 제공합니다. 이는 스트리밍 분석, 비디오 트랜스 코딩, 금융, AI 및 유전자 해석과 같은 시장에 적용될 수 있습니다.
Q. oneAPI는 특화된 작업, 즉 FPGA를 활용하기 위해 고안된 겁니까?
A. 인텔의 주력 하드웨어는 CPU와 GPU입니다. 인텔은 CPU와 GPU만으로 최적화하기 힘든 고객의 워크로드를 가속하기 위해 FPGA를 제공하고 있습니다. 그리고 고객들이 하나의 개발 도구로 인텔 하드웨어들을 최적화해서 사용할 수 있도록 만들어진 것이 ‘oneAPI 툴킷’입니다. oneAPI 툴킷의 대표적인 역할 중 하나는 FPGA가 특정 알고리즘을 가속하도록 하는 것입니다. 이때 FPGA는 PCIe 포트에 장착되어 알고리즘 가속에 필요한 이종 컴퓨팅 연산을 담당합니다.
Q. 현장에서 알고리즘 가속에 주로 어떤 FPGA가 활용됩니까?
A. 인텔은 자사의 ‘아리아10(Arria10)’ 혹은 ‘스트라틱스10(Stratix10)’ FPGA를 탑재한 ‘FPGA PAC(Programmable Acceleration Card)’를 제공하고 있습니다.
▲ 실제 인텔 FPGA PAC D5005 [사진=이수민 기자]
인텔 FPGA PAC는 PCIe 인터페이스의 데이터센터용 가속 카드로, 인라인 및 색인(Lookaside) 가속을 모두 지원하며, oneAPI 툴킷으로 프로그래밍 가능합니다.
Q. oneAPI 툴킷에서 활용되는 DPC++ 언어는 무엇입니까?
A. DPC++는 보편적인 프로그래밍 언어인 C++를 기반으로 데이터 병렬처리(Data parallelism)와 이종 프로그래밍(Heterogeneous programming)을 지원하기 위해 SYCL 표준을 따릅니다. oneAPI 툴킷은 C, C++, DPC++ 언어 기반의 개발환경을 제공하기에 개발자들은 곧바로 작업에 착수할 수 있습니다.
Q. oneAPI 툴킷이 제공하는 라이브러리로는 어떤 것들이 있습니까?
A. △수학 커널(Math kernel; oneMKL), △심층 신경망(Deep neural network; oneDNN), △비디오 처리(Video processing; oneVPL), △DPC++(oneDPL), △데이터 분석(Data analytics; oneDAL) 등의 라이브러리를 제공하고 있습니다.
또한, 최적화된 파이선(Python) 라이브러리와 심층 학습(Deep Learning) 프레임워크를 제공해 다양한 아키텍처에서 고성능을 발휘합니다. 이는 엔드투엔드(End-to-end) 기계 학습(Machine Learning)과 데이터 과학 파이프라인을 더욱 빠르게 합니다. 업계에 따라 이는 중요한 고려 사항이 될 것입니다.
Q. oneAPI 툴킷은 3종(기본·HPC·IoT)인데, 각각의 특성은?
A. 기본(Base) 툴킷은 CPU, GPU와 FPGA 전반에 걸쳐 성능과 데이터 중심의 애플리케이션을 구축과 검증, 배포를 지원합니다. 고성능 컴퓨팅(HPC) 툴킷은 확장 가능한 빠른 C++, Fortran, OpenMP, MPI 애플리케이션을 추가로 제공합니다. 마지막으로 사물인터넷(IoT) 툴킷은 네트워크 종단(Network edge)에서 실행되는 효율적이고 안정적인 고성능 솔루션을 구축할 수 있도록 고안됐습니다.
Q. oneAPI를 활용해 개발한 코드를 시뮬레이션할 때 유의할 부분은?
A. oneAPI로 개발한 코드는 CPU, GPU, FPGA 등의 환경에 맞춰 에뮬레이션(Emulation)할 수 있습니다. 각 하드웨어는 아키텍처와 특징이 다르므로 하드웨어 구조를 이해하고 있다면 성능 최적화 작업을 더 쉽게 진행할 수 있습니다.
Q. oneAPI 툴킷의 미래를 어떻게 보십니까?
A. 인텔은 oneAPI 툴킷을 차세대 통합 개발 도구로 보고 많은 지원을 아끼지 않고 있습니다. 보편적인 C++ 언어가 기반이라 새로운 언어를 배우지 않고도 이종 하드웨어 프로그래밍이 가능해 많은 고객으로부터 좋은 반응을 끌어내고 있습니다. 향후 출시될 인텔 하드웨어도 oneAPI 툴킷의 지원을 받을 것으로 보입니다.
실제 인텔 FPGA PAC D5005 기반의 oneAPI 툴킷 데모는 오는 7월 6일(화) 오전 10시 30분에 있을 인텔 웨비나에서 확인하실 수 있습니다.