다중 가속기 API를 위한 작업 기반 데이터플로우 통합 방법론
초록
본 논문은 OpenMP/OmpSs‑2 기반의 작업‑기반 데이터플로우 모델에 Task‑Aware 라이브러리(TA‑libs)를 도입해 CUDA, SYCL, Triton 등 서로 다른 가속기 API를 하나의 DAG로 결합한다. nOS‑V 스레드 관리 라이브러리와 PoCL 포팅을 통해 런타임 간 스레드 경쟁을 해소하고, GPT‑2 사전학습과 HPCCG 벤치마크에서 성능 손실 없이 다중 API를 투명하게 활용함을 보였다.
상세 분석
이 연구는 현대 HPC·AI 시스템에서 CPU와 GPU·FPGA·AI 가속기 등 다양한 디바이스가 혼재하는 상황을 고려한다. 기존에는 각 가속기마다 CUDA, SYCL, Triton, OpenCL 등 전용 API와 전용 런타임을 사용했으며, 이들 간의 동기화·자원 관리가 서로 독립적이어서 오버서브스크립션, 메모리 풋프린트 증가, 예측 불가능한 지연이 발생했다. 논문은 이러한 문제를 ‘Task‑Aware API’라는 개념으로 해결한다. 구체적으로 TACUDA와 TASYCL은 각각 CUDA와 SYCL 커널 호출을 OpenMP/OmpSs‑2의 task 객체로 래핑하여, 데이터 의존성을 DAG의 엣지로 표현한다. 이렇게 하면 런타임이 자동으로 의존성 분석, 스케줄링, 스트림/큐 관리, 그리고 필요 시 호스트‑디바이스 동기화를 수행한다.
핵심 기술은 세 가지로 요약할 수 있다. 첫째, 작업‑기반 데이터플로우 모델을 활용해 호스트 작업과 디바이스 커널을 동일한 DAG에 포함시킴으로써, 전통적인 fork‑join 방식보다 더 미세한 병렬성을 확보한다. 둘째, Task‑Aware 라이브러리가 제공하는 ‘first‑class task’ 인터페이스는 기존 CUDA·SYCL 코드의 최소 수정만으로도 작업 기반 런타임에 통합될 수 있게 한다. 셋째, nOS‑V 통합 스레드 라이브러리는 여러 런타임이 공유하는 CPU 코어를 중앙 집중식 스케줄러가 관리하도록 하여, 각 런타임이 자체 스레드 풀을 생성하는 것을 방지한다. 특히 PoCL(Portable OpenCL) 런타임을 nOS‑V에 포팅함으로써 OpenCL·SYCL 기반 작업도 동일한 스레드 풀에서 실행된다.
성능 평가에서는 두 가지 워크로드를 선택했다. GPT‑2 사전학습은 대규모 텐서 연산과 빈번한 메모리 이동을 요구하는 AI 워크로드이며, HPCCG는 전통적인 선형 시스템 해결을 위한 HPC 벤치마크다. GPU 노드에서는 단일 모놀리식 커널 실행과 비교했을 때, 작업‑기반 DAG 구현이 메모리 풋프린트를 크게 늘리지 않으면서도 실행 시간을 2‑3% 정도 차이로 유지했다. 멀티코어 CPU 환경에서는 nOS‑V를 통한 런타임 통합이 오버서브스크립션을 제거하고, 단일 런타임 사용 시와 동일한 성능을 달성했다. 이는 작업‑기반 접근법이 복잡한 API 조합에도 효율적인 자원 활용을 보장한다는 강력한 증거다.
또한, 이 방법론은 확장성과 이식성 측면에서도 장점을 가진다. TA‑libs는 기본적으로 API‑별 래퍼만 제공하면 되므로, ROCm/HIP, Intel Level Zero, 혹은 차세대 AI 가속기용 API에도 동일한 패턴으로 적용 가능하다. nOS‑V는 POSIX 스레드와 유사한 인터페이스를 제공하므로 기존 런타임을 크게 수정하지 않고도 포팅할 수 있다. 따라서 향후 CPU·GPU·FPGA·AI 가속기가 복합적으로 배치되는 초대규모 슈퍼컴퓨터에서도 동일한 프로그래밍 모델을 유지할 수 있다.
요약하면, 이 논문은 **‘작업‑기반 데이터플로우 + Task‑Aware API + 통합 스레드 관리’**라는 세 축을 결합해, 다중 가속기 환경에서의 프로그래밍 복잡성을 크게 낮추고, 성능 저하 없이 다양한 최적화된 라이브러리를 활용할 수 있는 실용적인 프레임워크를 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기