AMD gpu için SYCL ve OpenCL
Bir AMD 5700XT gpu'm var ve SYCL öğrenmeye çalışıyorum ancak AMD gpu sürücü yığınlarının mevcut durumu hakkında pek çok şüphem var. Okuduğuma göre, AMD gpus için birkaç sürücü yığını var: mesa, amdgpu ve amdgpu-pro. Doğru anlarsam, mesa'nın kendi opencl uygulaması vardır ve amdgpu sürücüleri için başka bir uygulama vardır.
Ayrıca, amd'de bir başka OpenCL uygulaması olan ROCm, CUDA ve bazı takımlar gibi bir şey olan HIP var, değil mi?
En az 2 uygulama vardır, ComputeCpp ve hipSYCL, muhtemelen AMD gpus üzerinde SYCL çalıştırabilir. OpenCL ve SPIR-V cihazlarıyla çalıştığı görüntüye göre clang uygulamasının AMD gpus üzerinde de çalışabilmesi gerekmez mi?
Doğru anladığımda, bazı uzantılarla (SYCL 2020) SYCL'nin (DPC ++) bir uygulaması olan ve bu SYCL uygulamasının (CUDA için cuBLAS veya cuSPARSE olduğu gibi) üzerine bazı kitaplıklar olan bir tane API var. Başka bir SYCL uygulamasının üzerine birAPI kitaplığı çalıştırmak mümkün olmalı mı?
Fon olarak, grafikler için mesa (OpenGL ve Vulkan) kullanırsam, bunun üzerine ROCm çalıştırmam mümkün müdür? ROCm ve OpenCL mesa uygulaması, mesa grafik sürücüleriyle nasıl etkileşim kurar?
Gördüğünüz gibi tüm ekosistem hakkında büyük bir kafa karışıklığım var. Birisi ona biraz ışık tutabilir mi?
Yanıtlar
Anladığım kadarıyla tek bir çekirdek sürücüsü, amdgpu var. Mesa kullanıcı alanında yaşıyor ve bir OpenGL uygulamasıdır. amdgpu-pro, alternatif kapalı kaynaklı kullanıcı alanı kitaplıkları (OpenGL, OpenCL vb.) sağlar.
clover, Mesa'nın üstünde bir OpenCL uygulamasıdır. Hangi durumda olduğundan emin değilim (benim izlenimim, bir süredir çok iyi korunmadığı ve geliştirmenin durduğu yönündedir), ancak SYCL programlarını çalıştırabileceğinden şüpheliyim.
ROCm, bir OpenCL uygulamasından daha fazlasıdır. Yapay zeka platformu, hızlandırılmış kitaplıklar, araçlar ve derleyiciler sağlayan AMD'nin GPGPU platformudur. Ayrıca bir OpenCL uygulaması içerir. HIP bir OpenCL uygulaması değil, etkin bir şekilde AMD'nin CUDA programlama modelini uygulamasıdır.
Bildiğim kadarıyla, ne yazık ki yeni AMD OpenCL uygulaması SYCL programlarını çalıştıramıyor çünkü AMD ne SPIR'i ne de SPIR-V'yi desteklemiyor. AMD OpenCL, SPIR-V'yi hiçbir zaman desteklemediğinden, DPC ++ / clang çalışmayacaktır. ComputeCpp ayrıca SPIR ile de çalışabilir, ancak bunun için destek AMD'nin OpenCL uygulamasından bir süre önce kaldırılmıştı.
AMD için SYCL desteği söz konusu olduğunda, hipSYCL genellikle gidilecek yoldur. Ne yazık ki AMD, ROCm desteğini veri merkezi kartlarında da kullanılan yongalara odakladığı için ROCm'de (hipSYCL'nin oluşturduğu) özel GPU'nuzu desteklemez. Daha fazla ayrıntı için buraya bakın:https://github.com/RadeonOpenCompute/ROCm#supported-gpus
oneAPI, Intel'in bilgi işlem platformları için genel terimidir ve kitaplıklar, araçlar ve derleyiciler sağlar (ROCm'ye benzer şekilde). DPC ++ / LLVM SYCL / Intel SYCL, oneAPI'nin bir parçasıdır. Tüm bu terimler, Intel'in Khronos SYCL 2020 standardını uygulaması gibi aynı şeyi ifade eder. Intel'in neredeyse tüm uzantıları SYCL 2020 spesifikasyonunda birleştirildi, bu nedenle DPC ++ 'yı ayrı bir dil olarak düşünmeyin.
BirAPI kitaplığına ek arka uçlar eklemek mümkündür, örneğin Codeplay bunu NVIDIA için yapmıştır. Prensipte bunları başka bir SYCL uygulamasına taşımak da mümkündür. HipSYCL ve DPC ++ arasındaki uyumluluğu geliştirerek hipSYCL ile potansiyel olarak bu yönde ilerlemek için bazı temel çalışmalar üzerinde çalışıyoruz:https://www.urz.uni-heidelberg.de/en/2020-09-29-oneapi-coe-urz
ROCm'yi mesa'nın üzerinde çalıştırmak mümkün değildir. GPU hesaplama için tamamen bağımsız bir yığın. Bildiğim kadarıyla ROCm ve mesa arasında hiçbir etkileşim yok.