크로노스 그룹, OpenCL 디바이스 프로그램의 포터블 인코딩 표준 SPIR 1.2 발표

이종 컴퓨팅을 위한 개방형, 크로스 플랫폼 중간 코드 표현 표준으로
다양한 범위의 병렬 컴퓨팅 구조에서 컴파일러 기술의 혁신을 가능케 해.

2014년 1월 21일 – 오스트리아 비엔나에서 개최되는 HiPEAC 2014에서 크로노스 그룹은 SPIR™ 1.2 표준을 공식 비준하고 공공에 배포한다고 발표 하였다. 이 표준은 OpenCL™ 장치 프로그램을 소스 코드가 아닌, 이식성을 갖춘 바이너리 인코딩을 통해 배포 할 수 있도록 해 준다. SPIR (Standard Portable Intermediate Representation, 표준 이식 중간 코드 표현)는 산업계 최초의 개방형, 크로스 플랫폼 중간 코드 표현 방식 표준으로서, 이식성을 갖춘 이종 병렬 컴퓨팅을 제공하며, LLVM IR 기술에 기초하고 있다. SPIR는 개발자로 하여금 민감한 자신의 커널 소스 코드를 노출 시키지 않으며, OpenCL C 뿐만 아니라 다양한 프론트 엔드 언어를 활용하여 목표로 하는 OpenCL 플랫폼에 쉽게 프로그램을 이식 시킬 수 있게 해 준다. 발표된 SPIR 표준 문서와 관련 자료는 아래 사이트에서 다운로드 받을 수 있다. http://www.khronos.org/registry/spir

SPIR의 개발 전에는 이종 시스템에서의 병렬 가속을 위한 새로운 도구나 언어를 개발하기 위해서는 각 벤더의 독특한 하드웨어 구조에 맞는 백-엔드 컴파일러를 구현하기 위한 매우 상세한 지식을 필요로 하였다. SPIR 표준을 벤더들이 채택하고 SPIR 바이너리 코드를 가속할 수 있게 됨으로써, 다수의 가속 보드, SoC, 그래픽스 프로세서, FPGA 등 다양한 범위의 플랫폼에서 고급언어를 자유롭게 사용하는 등의 혁신이 가능해 졌다.

SPIR는 LLVM과 OpenCL의 장점을 활용하여 구축되어, 이식성을 갖춘 병렬 프로그래밍을 위한 미들웨어 컴파일러의 산업 생태계를 풍성하게 해 줄 것이다. SPIR는 LLVM 3.2 IR의 특별 구현으로 볼 수 있으나, OpenCL 만의 시맨틱을 포함한 인코딩을 지원한다. OpenCL 1.2와 2.0의 표준 확장판인 cl_khr_spir 는 SPIR 인스턴스를 OpenCL 런타임으로 로딩하는 방법을 정의한다. SPIR 의 개발은 이미 여러 OpenCL 구현 벤더가 발표 했으며, 크로노스 그룹과 LLVM 그리고 Clang 커뮤니티의 공개적인 컨설팅 도움을 받았다.

SPIR 표준과 함께, 크로노스 그룹은 다음과 같은 오픈 소스 소프트웨어를 Github 에 공개하였다. 해당 라이선스 규정은 LLVM과 Clang의 라이선스과 동일하다.

  • 수정된 Clang 3.2 – OpenCL C Version 1.2의 디바이스 프로그램으로부터 SPIR 코드를 생성
  • SPIR 모듈 검증 도구 – LLVN 패스 와 같은 형식으로 구현됨
  • 헤더 파일 – SPIR 1.2 표준에서 정의된 모든 enum 자료형

상세한 정보를 원하는 경우 아래 사이트에서 자료를 다운로드 받을 수 있다. https://github.com/KhronosGroup

SPIR 1.2표준과 배포된 관련 소프트웨어 도구를 이용해 다양한 컴퓨팅 및 그래픽스 스택을 구현을 통해 SPIR가 여러 벤더 제품의 이식성을 높이고 혁신을 주도하는데 많은 개발자들이 다음과 같은 개발 분야에 많은 분들이 참여하기를 기대한다.

  • 프론트 엔드 – SPIR를 통해 OpenCL 백-엔드의 생산 품질 목표로 하는 이종 병렬 프로그램을 위한 새로운 언어 전처리기와 프로그래밍 추상화
  • 백엔드 – 전처리기와 추상화의 생산 품질을 재사용할 수 있도록 하는, 멀티코어, 벡터, VLIW 등의 기술에 기반한 새로운 타겟 플랫폼.
  • 도구 – SPIR 형식의 프로그램을 분석하고 최적화할 수 있는 진보된 프로그램.

한 예로, OpenACC와 C++ AMP 개발자 그룹은 양쪽 모두 다양한 벤더의 상에서, 최적화된 백엔드에 접근하는 SPIR를 목표로 개발 할 것이라고 밝혔다.

산엡계의 반응
“AMD는 크로노스 그룹이 SPIR 1.2표준 개발을 완료한 것을 매우 기쁘게 생각하며, 이 표준이 산업계의 이종 컴퓨팅을 이끄는 새로운 모멘텀이 될 것으로 기대합니다. 또한 SPIR 1.2 는 여러 종류의 프로그램 언어의 사용을 가능하게 함으로써, 그래픽스 하드웨어의 엄청난 계산 능력의 이점을 활용할 수 있게 될 것으로 기대합니다. SPIR 1.2에는 OpenCL 커널 코드를 바이너리 형태로 배포할 수 있도록 한 기능과 같은 개발자들이 요청한 다수의 새로운 기능을 갖추고 있습니다.” AMD사의 HSA 응용 담당 수석 이사이며 동시에 HSA 재단의 운영 이사인 그레고리 스토너는 설명했다.

브리스톨 대학의 마이크로 일렉트로닉스 연구 그룹을 맡고 있는 사이먼 매킨토시-스미스는 새 표준에 대해 다음과 같이 언급하였다. “저는 이 SPIR 표준이 이종 병렬 시스템에서 새로운 연구 영역을 개척할 것으로 기대합니다. 이와 같은 이식성을 갖춘 중간 표현 방식은 놀라운 새로운 소프트웨어 도구의 개발이나 병렬처리 언어의 개발을 가능하게 해줄 것이며, 차세대 병렬 구조의 채택을 더욱 가속화 할 것입니다”

Codeplay사의 앤드루 리차드 대표는, “SPIR는 이종 컴퓨팅의 혁신을 이끄는 키가 될 것입니다. SPIR를 사용하기 전에는, 최신의 이종 시스템에서 강력하고 효율적인 새로운 도구나 언어를 만들기 위해서는, 여러 다른 종류 벤더의 하드웨어에 대한 아주 상세한 이해가 필요했습니다. 하지만 이제는 개방형, 크로스 플랫폼 표준인 SPIR를 이용하여, 다양한 범주의 하드웨어 구조에서 혁신적인 개발을 할 수 있게 되었습니다. 이 소식은 이종 컴퓨팅을 신기원을 열었다 할 수 있습니다. 여러 벤더가 함께 사용할 수 있는 훌륭한 표준을 함께 만든 여러분들의 노고에 큰 칭찬을 보냅니다” 라며 새로운 표준에 대한 칭찬을 아끼지 않았다.

“SPIR 표준이 공개되는 것을 보니 매우 기쁩니다. 이 표준은 다양한 하드웨어 플랫폼에서 응용의 출시를 좀더 편리하게 하고 이식성을 높여 줌으로 OpenCL 채택을 더욱 활성화 시킬 것으로 예상합니다” 또한, “SPIR 와 OpenCL은 핸드폰, 태블랫에서 PC에 이르는 다양한 영역의 컴퓨팅 장치에서 GPU 컴퓨팅의 이점을 활용할 수 있는 훌륭한 방법이 될 것입니다” Intel사의 Visual & Parallel Computing Group 담당 부사장인 조나단 카잠(Jonathan Khazam)은 SPIR에 대한 기대감을 표시 했다.

크로노스 그룹은, 병렬처리, 그래픽스, 동적 미디어 등을 다양한 플랫폼과 장치에서 저작하고, 가속할 수 있는 개방형 표준을 제정하기 위해 설립된 산업체 컨소시엄으로서, 지금까지, include OpenGL®, OpenGL® ES, WebGL™, WebCL™, OpenCL™, OpenVX™, OpenMAX™, OpenVG™, OpenSL ES™, StreamInput™, COLLADA™ 표준을 제정하였다. 크로노스 그룹의 모든 회원사는 표준의 개발에 기여할 수 있고, 표준 제정되어 발표되기 까지 여러 단계에서의 투표권을 갖는다. 회원에 가입하면, 표준안 문서와 인증 시험 개발 내용에 접근할 수 있어, 관련된 제품 출시 시기를 앞당길 수 있다. 좀더 상세한 정보는 웹 사이트 www.khronos.org에서 얻을 수 있다.

###

Khronos, DevU, StreamInput, WebGL, WebCL, COLLADA, OpenKODE, OpenVG, OpenVX, OpenSL ES, OpenMAX, glTF and SPIR are trademarks of the Khronos Group Inc. ASTC is a trademark of ARM Holdings PLC, OpenCL is a trademark of Apple Inc. and OpenGL is a registered trademark and the OpenGL ES and OpenGL SC logos are trademarks of Silicon Graphics International used under license by Khronos. All other product names, trademarks, and/or company names are used solely for identification and belong to their respective owners.