ΠΡΠΎΠ΅ΠΊΡ ZLUDA ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ» ΠΎΡΠΊΡΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CUDA Π΄Π»Ρ GPU AMD, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π±Π΅Π· ΠΏΡΠΎΡΠ»ΠΎΠ΅ΠΊ. ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° CUDA Π΄Π»Ρ GPU NVIDIA. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ AMD ΡΡΠ΅ΠΊΠ° ROCm ΠΈ runtime HIP (Heterogeneous-computing Interface for Portability). ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ MIT ΠΈ Apache 2.0. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π² Linux ΠΈ Windows.
Π‘Π»ΠΎΠΉ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ CUDA Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ GPU AMD ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° Π³ΠΎΠ΄Π°, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π΄Π°Π²Π½ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ CUDA Π½Π° GPU Intel. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ GPU ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π²Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ZLUDA ΡΠ²Π»ΡΠ»ΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠΌ Intel, Π½ΠΎ Π² 2021 Π³ΠΎΠ΄Ρ Π΄Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΏΠΎΡΡΠΈΡΠ°Π»Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΡΠΊΠ° CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° GPU Intel Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ° ΠΈ Π½Π΅ ΡΡΠ°Π»Π° ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ.
Π Π½Π°ΡΠ°Π»Π΅ 2022 Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ²ΠΎΠ»ΠΈΠ»ΡΡ ΠΈΠ· Intel ΠΈ Π·Π°ΠΊΠ»ΡΡΠΈΠ» ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ AMD Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ»ΠΎΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ CUDA. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ AMD ΠΏΠΎΠΏΡΠΎΡΠΈΠ»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ Π°ΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ AMD ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ZLUDA ΠΈ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ZLUDA. Π‘ΠΏΡΡΡΡ Π΄Π²Π° Π³ΠΎΠ΄Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ AMD ΡΠ΅ΡΠΈΠ»Π°, ΡΡΠΎ Π·Π°ΠΏΡΡΠΊ CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° GPU AMD Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°, ΡΡΠΎ ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΎΡΡΡΡΡ ΡΠ²ΠΎΠΈ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ GPU ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ ΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π΅Π³ΠΎ ΡΡΠ΄ΡΠ±Π° ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΈ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ. ΠΠ΅Π· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ , ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π»ΠΈΡΠ½ΠΎ Π°Π²ΡΠΎΡΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ DLSS (Deep Learning Super Sampling).
Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ZLUDA ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Geekbench, 3DF Zephyr, Blender, Reality Capture, LAMMPS, NAMD, waifu2x, OpenFOAM ΠΈ Arnold. ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ cuDNN, cuBLAS, cuSPARSE, cuFFT, NCCL ΠΈ NVML.
ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ CUDA-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ZLUDA ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Ρ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠΈ, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ZLUDA Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ GPU-ΠΊΠΎΠ΄Π°. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΊΡΡΠ΅. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Geekbench Π½Π° GPU AMD Radeon 6800 XT Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄Π»Ρ CUDA, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ZLUDA, ΠΏΠΎΠΊΠ°Π·Π°Π» Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° Π±Π°Π·Π΅ OpenCL.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ CUDA Driver API ΠΈ ΠΈΠ·ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π° ΡΠ°ΡΡΠΈ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ API CUDA ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ZLUDA ΡΠ΅ΡΠ΅Π· Π·Π°ΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² HIP runtime, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ ΠΎΠ΄ΠΈΡ Π½Π° CUDA. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ cuDeviceGetAttribute() Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° hipDeviceGetAttribute(). ΠΠΎΡ ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ NVIDIA, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ NVML, cuBLAS ΠΈ cuSPARSE, — Π΄Π»Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ZLUDA ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π΄ΡΡΡΠΎΠ΅ΠΊ Π½Π°Π΄ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ AMD.
GPU-ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ PTX (Parallel Thread Execution), ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π²Π½Π°ΡΠ°Π»Π΅ Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ LLVM IR, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ GPU AMD.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru