AMD GPU 용 SYCL 및 OpenCL

Oct 03 2020

저는 AMD 5700XT GPU를 가지고 있고 SYCL을 배우려고하지만 AMD GPU 드라이버 스택의 현재 상태에 대해 많은 의구심을 가지고 있습니다. 내가 읽은 내용에 따르면 AMD GPU에는 mesa, amdgpu 및 amdgpu-pro와 같은 여러 드라이버 스택이 있습니다. 내가 올바르게 이해한다면 mesa에는 자체 opencl 구현이 있으며 amdgpu 드라이버에 대한 또 다른 구현이 있습니다.

또한 amd에는 또 다른 OpenCL 구현 인 HIP 인 ROCm이 있는데 CUDA 및 일부 도구와 같은 것입니다.

AMD GPU에서 SYCL을 실행할 수있는 ComputeCpp 및 hipSYCL의 최소 2 개 구현이 있습니다. OpenCL 및 SPIR-V 장치에서 실행되는 이미지에 따라 clang 구현이 AMD gpus에서도 실행될 수 있어야합니까?

정확히 이해하면 일부 확장 (SYCL 2020)이 포함 된 SYCL (DPC ++)의 구현 인 oneAPI와 해당 SYCL 구현 (CUDA에 대한 cuBLAS 또는 cuSPARSE의 종류) 위에있는 일부 라이브러리도 있습니다. 다른 SYCL 구현 위에 oneAPI 라이브러리를 실행할 수 있어야합니까?

결국 그래픽 (OpenGL 및 Vulkan)에 메사를 사용하면 그 위에 ROCm을 실행할 수 있습니까? ROCm 및 OpenCL 메사 구현은 메사 그래픽 드라이버와 어떻게 상호 작용합니까?

보시다시피 모든 생태계에 대해 큰 혼란이 있습니다. 누군가가 그것에 약간의 빛을 제공 할 수 있습니까?

답변

2 illuhad Oct 06 2020 at 00:40

내 이해는 amdgpu라는 단일 커널 드라이버가 있다는 것입니다. Mesa는 사용자 영역에 거주하며 OpenGL 구현입니다. amdgpu-pro는 대체 폐쇄 소스 사용자 영역 라이브러리 (OpenGL, OpenCL 등)를 제공합니다.

clover는 Mesa 위에 OpenCL 구현입니다. 나는 그것이 어떤 상태인지 확실하지 않지만 (내 인상은 한동안 잘 유지되지 않았고 개발이 중단되었다는 것입니다) SYCL 프로그램을 실행할 수 있을지 의문입니다.

ROCm은 OpenCL 구현 그 이상입니다. AI 플랫폼, 가속화 된 라이브러리, 도구 및 컴파일러를 제공하는 AMD의 GPGPU 플랫폼입니다. 또한 OpenCL 구현도 포함되어 있습니다. HIP는 OpenCL 구현이 아니라 사실상 AMD가 CUDA 프로그래밍 모델을 구현 한 것입니다.

내가 아는 한, 불행히도 AMD는 SPIR이나 SPIR-V를 지원하지 않기 때문에 최근 AMD OpenCL 구현은 SYCL 프로그램을 실행할 수 없습니다. AMD OpenCL은 SPIR-V를 지원하지 않았으므로 DPC ++ / clang이 작동하지 않습니다. ComputeCpp는 SPIR에서도 작동 할 수 있지만 이에 대한 지원은 이미 AMD의 OpenCL 구현에서 제거되었습니다.

AMD에 대한 SYCL 지원에 관한 한 hipSYCL은 일반적으로 갈 길입니다. 안타깝게도 AMD는 데이터 센터 카드에도 사용되는 칩에 ROCm 지원을 집중하기 때문에 ROCm (hipSYCL이 빌드하는)에서 특정 GPU를 지원하지 않습니다. 자세한 내용은 여기를 참조하십시오.https://github.com/RadeonOpenCompute/ROCm#supported-gpus

oneAPI는 컴퓨팅 플랫폼에 대한 인텔의 포괄적 인 용어로 라이브러리, 도구 및 컴파일러 (ROCm과 유사)를 제공합니다. DPC ++ / LLVM SYCL / 인텔 SYCL은 oneAPI의 일부입니다. 이 모든 용어는 Intel의 Khronos SYCL 2020 표준 구현이라는 동일한 것을 나타냅니다. 거의 모든 인텔 확장 기능이 SYCL 2020 사양에 병합되었으므로 DPC ++를 별도의 언어로 생각하지 마십시오.

하나의 API 라이브러리에 추가 백엔드를 추가 할 수 있습니다. 예를 들어 Codeplay는 NVIDIA에 대해 수행했습니다. 원칙적으로 다른 SYCL 구현으로 이식하는 것도 가능합니다. hipSYCL과 DPC ++ 간의 호환성을 개선하여 hipSYCL로 잠재적으로 해당 방향으로 이동할 수있는 몇 가지 기초 작업을 진행하고 있습니다.https://www.urz.uni-heidelberg.de/en/2020-09-29-oneapi-coe-urz

메사 위에서 ROCm을 실행할 수 없습니다. GPU 컴퓨팅을위한 완전히 독립적 인 스택입니다. 내가 아는 한 ROCm과 메사 사이에는 상호 작용이 없습니다.