AMD 5700XT GPU가 있고 SYCL을 배우려고 하는데 AMD GPU 드라이버 스택의 현재 상태에 대해 궁금한 점이 많습니다. 내가 읽은 바에 따르면 AMD GPU용 드라이버 스택에는 mesa, amdgpu 및 amdgpu-pro가 있습니다. 내가 올바르게 이해했다면 메사에는 자체 opencl 구현이 있고 amdgpu 드라이버에 대한 또 다른 구현이 있습니다.
그리고 AMD에는 또 다른 OpenCL 구현인 ROCm과 CUDA 및 일부 도구와 유사한 HIP가 있습니다.
AMD GPU에서 SYCL을 실행할 수 있는 ComputeCpp 및 hipSYCL의 두 가지 구현이 있습니다. OpenCL 및 SPIR-V 장치로 실행되는 이미지를 기반으로 clang 구현을 AMD GPU에서도 실행할 수 있어야 합니까?
내가 올바르게 이해하는 한, 일부 확장(SYCL 2020)이 포함된 SYCL(DPC++) 구현인 API와 SYCL 구현 위에 일부 라이브러리(cuBLAS 또는 cuSPARSE가 CUDA와 관련되는 방식과 유사)도 있습니다. 다른 SYCL 구현 위에서 oneAPI 라이브러리를 실행할 수 있습니까?
마지막으로 그래픽용 테이블탑(OpenGL 및 Vulkan)을 사용하는 경우 그 위에서 ROCm을 실행할 수 있습니까? ROCm 및 OpenCL 메사 구현은 메사 그래픽 드라이버와 어떻게 상호 작용합니까?
보시다시피 저는 전체 생태계에 대해 매우 혼란스러워합니다. 누구든지 단서를 제공할 수 있나요?
답변1
내 이해는 커널 드라이버 amdgpu가 있다는 것입니다. 메사는 사용자 공간에 존재하며 OpenGL 구현입니다. amdgpu-pro는 대체 폐쇄 소스 사용자 수준 라이브러리(OpenGL, OpenCL 등)를 제공합니다.
clover는 Mesa 위에 OpenCL을 구현한 것입니다. 어떤 상태인지는 잘 모르겠지만(내 생각에는 한동안 유지 관리가 제대로 되지 않았고 개발이 중단된 것 같습니다.) SYCL 프로그램을 실행할 수 있을지 의심스럽습니다.
ROCm은 단순한 OpenCL 구현 그 이상입니다. AMD의 GPGPU 플랫폼으로 AI 플랫폼, 가속 라이브러리, 도구 및 컴파일러를 제공합니다. OpenCL 구현도 포함되어 있습니다. HIP는 OpenCL 구현이 아니며 실제로 AMD의 CUDA 프로그래밍 모델 구현입니다.
내가 아는 한, 불행하게도 최근 AMD OpenCL 구현은 AMD가 SPIR이나 SPIR-V를 지원하지 않기 때문에 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는 Intel 컴퓨팅 플랫폼의 일반 이름이며 라이브러리, 도구 및 컴파일러(ROCm과 유사)를 제공합니다. DPC++/LLVM SYCL/Intel SYCL은 oneAPI의 일부입니다. 이러한 용어는 모두 Intel의 Khronos SYCL 2020 표준 구현과 동일한 것을 나타냅니다. Intel의 거의 모든 확장 기능이 SYCL 2020 사양에 병합되었으므로 DPC++를 별도의 언어로 생각하지 마십시오.
oneAPI 라이브러리에 추가 백엔드를 추가할 수 있습니다. 예를 들어 Codeplay는 NVIDIA에 대해 이 작업을 수행했습니다. 원칙적으로 다른 SYCL 구현으로 이식될 수도 있습니다. 우리는 hipSYCL과 DPC++ 간의 호환성을 개선하여 잠재적으로 hipSYCL을 이 방향으로 이동하기 위한 몇 가지 기반 작업을 수행하고 있습니다. https://www.urz.uni-heidelberg.de/en/2020-09-29-oneapi-coe-urz
데스크탑에서는 ROCm을 실행할 수 없습니다. 이는 완전히 독립적인 GPU 컴퓨팅 스택입니다. 내가 아는 한 ROCm과 조리대 사이에는 상호 작용이 없습니다.