[논문 리뷰] Cross-Platform Performance Portability Using Highly Parametrized SYCL Kernels
이 논문은 C++ 템플릿과 SYCL의 이식성 덕분에 다양한 아키텍처(예: ARM HiKey 960, Intel i7-6700K)에서 수동 최적화된 벤더 라이브러리(예: cuBLAS, ARM Compute Library, MKL-DNN)와 경쟁 가능한 성능을 내는 고도로 파rameterized된 SYCL 커널을 구현함으로써, 이식성 있는 고성능 GPGPU 계산을 가능하게 한다. 각 하드웨어에 맞게 최적화된 커널을 생성함으로써, 효율성을 희생시키지 않은 채 다양한 플랫폼 간 성능 이식성을 달성한다.
Over recent years heterogeneous systems have become more prevalent across HPC systems, with over 100 supercomputers in the TOP500 incorporating GPUs or other accelerators. These hardware platforms have different performance characteristics and optimization requirements. In order to make the most of multiple accelerators a developer has to provide implementations of their algorithms tuned for each device. Hardware vendors provide libraries targeting their devices specifically, which provide good performance but frequently have different API designs, hampering portability. The SYCL programming model allows users to write heterogeneous programs using completely standard C++, and so developers have access to the power of C++ templates when developing compute kernels. In this paper we show that by writing highly parameterized kernels for matrix multiplies and convolutions we achieve performance competitive with vendor implementations across different architectures. Furthermore, tuning for new devices amounts to choosing the combinations of kernel parameters that perform best on the hardware.
연구 동기 및 목표
- 다양한 최적화 요구사항을 가진 이종 가속기 간 성능 이식성의 과제를 해결하기 위해.
- API와 하드웨어 대상이 상이하여 이식성을 저해하는 벤더 전용 라이브러리에 대한 의존도를 줄이기 위해.
- 고도로 파rameterized된 SYCL 커널이 cuBLAS, ARM Compute Library, MKL-DNN와 같은 수동 최적화된 라이브러리의 성능을 따라하거나 초월할 수 있는지 평가하기 위해.
- 각 아키텍처에 맞게 커널 매개변수를 최적화함으로써 다양한 하드웨어 플랫폼 간 효율적이고 이식 가능한 성능을 달성할 수 있음을 입증하기 위해.
제안 방법
- 저자들은 C++ 템플릿을 사용하여 행렬 곱셈 및 컨볼루션 연산을 위한 고도로 파arameterized된 SYCL 커널을 구현한다.
- 각 대상 장치의 아키텍처에 맞게 블록 크기, 타일 크기, 데이터 형식 등의 특정 템플릿 매개변수를 설정하여 이러한 커널을 인스턴스화한다.
- 표준 딥러닝 벤치마크를 사용해 성능을 평가한다: ARM HiKey 960 및 Intel i7-6700K 시스템에서 VGG-16 및 ResNet-50 컨볼루션 레이어.
- SYCL 기반 구현(SYCL-DNN)을 벤더 최적화 라이브러리(ARM Compute Library(CPU/NEON 및 GPU/OpenCL), MKL-DNN, cuBLAS)와 비교한다.
- 일반적인 워크로드 상황을 반영하기 위해 다양한 배치 크기를 사용해 벤치마크를 수행한다.
- 이 접근법은 컴파일 타임 템플릿 전문화를 통해 최적화된 이식 가능한 커널을 생성할 수 있는 SYCL의 능력에 기반한다. 동시에 표준 C++ 문법을 유지한다.
실험 결과
연구 질문
- RQ1고도로 파arameterized된 SYCL 커널은 다양한 하드웨어 플랫폼에서 수동 최적화된 벤더 전용 라이브러리와 경쟁 가능한 성능을 달성할 수 있는가?
- RQ2템플릿 매개변수를 통한 커널 최적화가 아키텍처에 특화된 수동 최적화의 필요성을 얼마나 대체할 수 있는가?
- RQ3ARM 및 Intel 플랫폼에서 SYCL-DNN의 성능은 각각 ARM Compute Library 및 MKL-DNN와 비교해 어떠한가?
- RQ4하나의 이식 가능한 커널 프레임워크가 CPU, GPU, 가속기 모두에서 높은 성능을 제공할 수 있는가? 이때 이식성은 희생되지 않는가?
주요 결과
- ARM HiKey 960에서 SYCL-DNN는 VGG 레이어에서 90~150 gigaflops의 성능을 기록했으며, NEON CPU 버전을 뛰어나고 대부분의 경우 OpenCL GPU 버전과 동등하거나 이를 초월했다.
- Intel i7-6700K에서 GPU 기반 SYCL-DNN는 VGG-16 컨볼루션에서 MKL-DNN CPU 버전을 항상 뛰어넘었으며, 최대 420 gigaflops의 성능을 기록했다.
- ResNet-50에서 MKL-DNN CPU는 SYCL-DNN CPU 및 GPU 버전보다 빠르며, 최고 성능 366 gigaflops 대비 SYCL-DNN는 244 gigaflops를 기록했다.
- ARM에서 VGG-16 벤치마크에서 ARM Compute Library OpenCL 커널은 3×3 컨볼루션에서 SYCL-DNN를 뛰어넘었지만, 전체적으로는 SYCL-DNN가 경쟁 가능한 성능을 유지했다.
- 결과적으로, 적절한 템플릿 매개변수화를 통해 SYCL 커널이 ARM 및 Intel 플랫폼에서 모두 벤더 최적화 라이브러리의 10~20% 이내 성능을 달성함을 확인했다.
- 이 연구는 각 장치에 맞게 커널 매개변수를 최적화함으로써 효율성을 희생시키지 않은 채 성능 이식성이 효과적으로 달성될 수 있음을 입증했다. 이는 성능 특성이 상당히 다른 아키텍처 간에도 적용 가능하다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.