최근 병렬 컴퓨팅의 발전으로, 그래픽 처리 장치(GPU)가 멀티-테넌트 및 멀티-애플리케이션 환경에서 주요 컴퓨팅 단위로 자리 잡고 있다. GPU 중심의 컴퓨팅으로의 전환에도 불구하고, 현재의 GPU 자원 공유 기술은 분할된 자원 간 통신이 불가능하여, 효율적인 자원 공유와 상호 작용에 제한을 두고 있다. 또한, 운영체제가 GPU 작업을 제어하지 못하는 문제는 우선순위 역전 문제를 악화시키며, 높은 우선순위의 커널이 낮은 우선순위의 작업을 선점하지 못한다.
이러한 문제를 해결하기 위해, 본 논문에서는 운영체제가 제어하는 새로운 GPU 스케줄링 및 자원 공유 모델을 제안하여 GPU 중심의 컴퓨팅을 강화한다. 우리의 모델은 GPU 커널 트랜잭션화, GPU 커널 멱등성 분류, 그리고 MIG 기반 분산 학습이라는 세 가지 주요 기법을 도입한다.
먼저 GPU Kernel Transactionization 기법은 GPU 선점형 스케줄링을 위한 커널의 실행 트랜잭션을 정의한다. 이 기법은 GPU 메모리 스냅샷/롤백 기술과 하나의 GPU 커널 실행 트랜잭션 정의를 통해 커널 실행 시 변경되는 커널 버퍼의 데이터 일관성을 보장한다. 본 기법을 통해 99.9th percentail 내에서 18μs의 선점 지연을 보장하며, 대부분의 경우 과부하 상태에서도 우선순위가 높은 작업의 실행 시간 평균 지연은 10% 미만이다.
GPU Kernel Idempotent classify 기법은 정적 분석을 통해 실행 중 입력 데이터를 손상시키지 않는 명등성 GPU 커널을 검출하여 선점형 스케줄링에 활용한다. 검출된 멱등성 커널 정보는 동적으로 GPU 스케줄러에 전달하여 메모리 컨텍스트 스냅샷/롤백 비용 없이 선점형 스케줄링을 수행한다. 본 기법을 통해 rodinia benchmark suite에서 22의 커널 중 12개의 커널이 멱등성 커널로 검출되었으며, 63.6% 비중의 애플리케이션에 대해 메모리 컨텍스트 스위칭 비용 없이 선점형 스케줄링을 적용할 수 있었다.
마지막으로 Distributed Training with MIG 기법은 여러 GPU 뿐만 아니라 단일 GPU에서도 MIG 인스턴스 간의 통신을 지원한다. 이 방법은 여러 작업이 동시에 GPU 자원을 사용할 수 있게 하여 GPU 자원의 효율성을 향상시킨다. 또한 단일 GPU 내의 인스턴스를 사용하여 분산 학습을 함으로써 계산 병렬성을 증가시켜 학습 성능을 개선한다. 이 방식을 통해 여러 모델을 동시에 분산 학습할 때 처리량이 평균 14% 증가하고, 단일 학습에서 분산 학습으로 전환할 때 최대 21.9%의 성능 향상을 달성할 수 있었다.
우리는 세 가지의 기법을 통해서 운영체제에서 GPU 작업에 대한 선점형 스케줄링 지원과 DNN 프레임워크에서 효율적인 GPU 자원 공유 방법을 제공한다. 우리는 이것을 통해 GPU를 primary computing unit으로 사용하는 GPU 자원 공유 컴퓨팅 시스템을 구축한다.