ΠΡΠΎΠ΅ΠΊΡ ZLUDA ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΈ ΠΎΡΠΊΡΠΈΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° CUDA Π·Π° GPU AMD, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ CUDA ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ, Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π±Π΅Π· ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ. ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π±ΠΈΠ½Π°ΡΠ½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ CUDA ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° CUDA Π·Π° GPU NVIDIA. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π²ΡΡΡ Ρ ΡΠ°Π·ΡΠΈΡΡΠ²Π°ΡΠΈΡ ΡΠ΅ ΡΡΠ΅ΠΊ ROCm, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° AMD, ΠΈ runtime HIP (Π₯Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ). ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Π΅Π·ΠΈΠΊΠ° 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
