Skip to main content
QUICK REVIEW

[논문 리뷰] C Language Extensions for Hybrid CPU/GPU Programming with StarPU

Ludovic Courtès|arXiv (Cornell University)|2013. 04. 03.
Parallel Computing and Optimization Techniques참고 문헌 16인용 수 10
한 줄 요약

이 논문은 GCC 컴파일러 확장 기능을 통해 C 언어에 StarPU를 사용한 하이브리드 CPU/GPU 프로그래밍을 위한 확장을 제안한다. 작업 기반 병렬 처리 모델을 C 언어에 직접 통합함으로써 프로그래밍을 단순화하고 오류를 줄이며 컴파일 타임 진단 기능을 제공하면서도 표준 C와의 호환성을 유지한다.

ABSTRACT

Modern platforms used for high-performance computing (HPC) include machines with both general-purpose CPUs, and "accelerators", often in the form of graphical processing units (GPUs). StarPU is a C library to exploit such platforms. It provides users with ways to define "tasks" to be executed on CPUs or GPUs, along with the dependencies among them, and by automatically scheduling them over all the available processing units. In doing so, it also relieves programmers from the need to know the underlying architecture details: it adapts to the available CPUs and GPUs, and automatically transfers data between main memory and GPUs as needed. While StarPU's approach is successful at addressing run-time scheduling issues, being a C library makes for a poor and error-prone programming interface. This paper presents an effort started in 2011 to promote some of the concepts exported by the library as C language constructs, by means of an extension of the GCC compiler suite. Our main contribution is the design and implementation of language extensions that map to StarPU's task programming paradigm. We argue that the proposed extensions make it easier to get started with StarPU,eliminate errors that can occur when using the C library, and help diagnose possible mistakes. We conclude on future work.

연구 동기 및 목표

  • 하이브리드 CPU/GPU 프로그래밍을 위한 StarPU의 C 라이브러리 인터페이스 사용의 복잡성과 오류 유발 성향을 해결한다.
  • StarPU의 작업 기반 프로그래밍 모델을 C 언어에 직접 통합하여 개발자의 진입 장벽을 낮춘다.
  • 컴파일러에 작업 및 데이터 종속성 정보를 노출시켜 컴파일 타임 진단 및 정적 분석을 가능하게 한다.
  • 저수준 스케줄링 및 데이터 이동 세부 정보를 추상화하여 이질적 시스템 간 성능 포트폴리오성을 향상시킨다.
  • 향후 확장 사항인 OpenCL 커널 생성, 중첩 작업, 하이브리드 클러스터 환경에서의 MPI 지원을 위한 기반을 마련한다.

제안 방법

  • StarPU의 작업 프로그래밍 모델에 직접 매핑되는 언어 확장을 GCC 컴파일러 스위트에 통합한다.
  • 작업 정의, 그 구현 방식(CPU/GPU), 데이터 접근 모드(읽기 전용, 왤기 전용, 읽기/쓰기)를 정의하기 위한 애너테이션을 도입한다.
  • 컴파일러 애너테이션을 사용해 작업 종속성과 데이터 이동을 표현함으로써 정적 분석 및 오류 탐지를 가능하게 한다.
  • 각 작업에 대해 다수의 구현 방식(예: CPU용 C, GPU용 OpenCL)을 지원하고 런타임 가용성에 따라 자동으로 선택할 수 있도록 한다.
  • StarPU의 런타임 스케줄러와 통합하여 CPU와 GPU 간에 작업을 자동으로 스케줄링하고 데이터 이동을 자동으로 관리한다.
  • 컴파일러 플러그인을 사용하지 않을 경우 애너테이션된 프로그램이 여전히 유효한 순차적 C 코드로 남아 있어 후행 호환성을 확보한다.

실험 결과

연구 질문

  • RQ1StarPU의 작업 기반 프로그래밍 모델을 C 언어에 통합할 수 있는 C 언어 확장 기능을 설계할 수 있는가? 이는 사용성 향상과 정확성 향상에 기여하는가?
  • RQ2컴파일러 애너테이션을 통해 작업 및 데이터 종속성 정보를 어떻게 노출시켜 정적 오류 탐지 및 진단을 가능하게 할 수 있는가?
  • RQ3C 언어에 StarPU의 작업 모델을 통합함으로써 개발자의 인지적 부담과 구현 난이도를 어느 정도 줄일 수 있는가?
  • RQ4컴파일 타임 지식을 활용해 하이브리드 CPU/GPU 시스템에서의 런타임 스케줄링 결정을 어떻게 안내할 수 있는가?
  • RQ5OpenCL 커널 생성, 중첩 작업, 클러스터 환경에서의 MPI 지원과 같은 향후 확장 기능은 언어 확장 프레임워크에 어떻게 통합될 수 있는가?

주요 결과

  • 제안된 C 언어 확장 기능은 StarPU의 작업 기반 프로그래밍 모델을 C 언어에 성공적으로 통합하여 더 직관적이고 오류가 적은 인터페이스를 가능하게 했다.
  • 컴파일러 플러그인은 작업 애너테이션과 데이터 종속성을 분석하여 컴파일 타임 오류를 탐지할 수 있었으며, 코드 정확성을 향상시켰다.
  • 플러그인을 사용하지 않아도 확장 기능을 사용한 프로그램은 여전히 유효한 순차적 C 코드로 남아 있어 후행 호환성과 점진적 도입이 보장되었다.
  • 통합을 통해 더 나은 정적 분석이 가능해져 컴파일러가 작업 정의와 데이터 접근 모드 간의 일관성 오류를 식별할 수 있었다.
  • 향후 작업에서는 C 루프에서 OpenCL 커널 생성, 중첩 작업 지원, 추가 애너테이션을 통한 StarPU-MPI 기반 클러스터 환경 확장 등이 가능할 것으로 기대된다.
  • 언어 수준에서 작업 기반 프로그래밍을 지원할 경우 하이브리드 CPU/GPU 프로그래밍의 복잡성을 크게 줄일 수 있으며, 성능 포트폴리오성도 유지할 수 있음을 입증했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.