ΠΡΠΎΠ΅ΠΊΡΠΎΡ ZLUDA ΡΠ°Π·Π²ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π½Π° CUDA ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ°ΡΠ° Π·Π° AMD Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ CUDA Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΎ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π±Π»ΠΈΡΠΊΠΈ Π΄ΠΎ ΠΎΠ½ΠΈΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΡΠΈ. ΠΠ±ΡΠ°Π²Π΅Π½ΠΈΠΎΡ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ Π°Π»Π°ΡΠΊΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π±ΠΈΠ½Π°ΡΠ½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ CUDA Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° CUDA ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π·Π° NVIDIA Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠ· ROCm ΡΡΠ΅ΠΊΠΎΡ Π½Π° AMD ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Heterogeneous Computing Interface for Portability (HIP). ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ Rust ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ΅ MIT ΠΈ Apache 2.0. ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Linux ΠΈ Windows.
Π‘Π»ΠΎΡΠΎΡ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° CUDA Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠΎ AMD Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π΅ ΡΠ°Π·Π²ΠΈΠ΅Π½ Π²ΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° ΠΈΠ·ΠΌΠΈΠ½Π°ΡΠΈΡΠ΅ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ»Π³Π° ΠΈΡΡΠΎΡΠΈΡΠ° ΠΈ ΠΏΡΠ²ΠΈΡΠ½ΠΎ Π±Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ Π·Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ CUDA ΡΠ°Π±ΠΎΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π½Π° Intel. ΠΡΠΎΠΌΠ΅Π½Π°ΡΠ° Π²ΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΠ²Π° ΡΠΎ ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ Π½Π° ZLUDA Π±ΠΈΠ» Π²ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΠΎ ΠΠ½ΡΠ΅Π», Π½ΠΎ Π²ΠΎ 2021 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° ΡΠΌΠ΅ΡΠ°Π»Π° Π΄Π΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° CUDA Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π½Π° Intel Π½Π΅ Π΅ ΠΎΠ΄ Π΄Π΅Π»ΠΎΠ²Π΅Π½ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΈ Π½Π΅ ΡΠ° Π·Π°Π±ΡΠ·Π°Π»ΠΎ ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°ΡΠΈΠ²Π°ΡΠ°.
ΠΠ° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° 2022 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ Π³ΠΎ Π½Π°ΠΏΡΡΡΠΈ ΠΠ½ΡΠ΅Π» ΠΈ Π±Π΅ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½ ΠΎΠ΄ AMD Π΄Π° ΡΠ°Π·Π²ΠΈΠ΅ ΡΠ»ΠΎΡ Π·Π° ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡ ΡΠΎ CUDA. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ, AMD ΠΏΠΎΠ±Π°ΡΠ° Π΄Π° Π½Π΅ ΡΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΡ Π½Π° AMD Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ZLUDA ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠ±Π²ΡΠ·ΡΠ²Π° Π½Π° ΡΠ°Π²Π½ΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Π½Π° ZLUDA. ΠΠ²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΡΠ½Π°, AMD ΠΎΠ΄Π»ΡΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΡΡΡΠ°ΡΠ΅ΡΠΎ Π½Π° CUDA Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° AMD Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Π½Π΅ Π΅ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π·Π° Π±ΠΈΠ·Π½ΠΈΡΠΎΡ, ΡΡΠΎ, ΡΠΏΠΎΡΠ΅Π΄ ΡΡΠ»ΠΎΠ²ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΎΡ, ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ Π΄Π° ΡΠ° ΠΎΡΠΊΡΠΈΠ΅ ΡΠ²ΠΎΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΏΡΠ΅ΡΡΠ°Π½Π°Π° Π΄Π° Π³ΠΎ ΡΠΈΠ½Π°Π½ΡΠΈΡΠ°Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ, Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΡΠ΄Π±ΠΈΠ½Π° ΡΠ΅Π³Π° Π·Π°Π²ΠΈΡΠΈ ΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΡ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ΄ ΠΏΡΠΈΠ΅ΠΌΠΎΡ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠ·ΠΈ Π·Π° ΡΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ΄ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠ΅Π· Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠ°ΠΌΠΎ Π²ΠΎ Π½Π°ΡΠΎΠΊΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π»ΠΈΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π·Π° Π°Π²ΡΠΎΡΠΎΡ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ 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 Π³ΠΎ ΡΠΎΡΡΠ°Π²ΡΠ²Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ. ΠΠ΅ΠΌΠ° ΡΠ°ΠΊΠ²ΠΎ Π΄ΠΎΡΠ½Π΅ΡΠ΅ Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π΅ Π·Π°ΡΡΠ²Π°Π½ Π²ΠΎ ΠΊΠ΅ΡΠΎΡ. ΠΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ ΠΊΠΎΠ΄, ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ ΡΠ΅ Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ ΠΌΠ°ΡΡΠΈΠ½. ΠΠΎΠ³Π° ΡΠ°Π±ΠΎΡΠΈ Geekbench Π½Π° AMD Radeon 6800 XT Π³ΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ, Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° ZLUDA Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΡΠ΅ΠΏΠ΅Ρ CUDA ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΠ΄ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° OpenCL.

ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ CUDA Driver API ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈΠΎΡ CUDA API Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π²ΠΎ ZLUDA ΡΠΎ Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ ΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° HIP, ΡΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³Ρ Π½Π°ΡΠΈΠ½ΠΈ Π΅ ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° CUDA. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° cuDeviceGetAttribute() ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΠ²Π° ΡΠΎ hipDeviceGetAttribute(). ΠΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΎΡΡΠ° ΡΠΎ NVIDIA Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ NVML, cuBLAS ΠΈ cuSPARSE Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½Π° Π½Π° ΡΠ»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½ - Π·Π° ΡΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ZLUDA ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ ΡΠΎ ΠΈΡΡΠΎ ΠΈΠΌΠ΅ ΠΈ ΠΈΡΡ ΡΠ΅Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΏΡΠ΅ΠΊΡ ΡΠ»ΠΈΡΠ½ΠΈ AMD Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠΎΠ΄ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ Π²ΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²Π°ΡΠ° PTX (ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΈΡΠΊΠΈ) ΠΏΡΠ²ΠΎ ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π° ΠΎΠ΄ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π΅Π½ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ Π²ΠΎ ΡΡΠ΅Π΄Π½ΠΎΡΠΎ ΠΏΡΠ΅ΡΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ LLVM IR, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΊΠΎΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±ΠΈΠ½Π°ΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° AMD Π³ΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ.

ΠΠ·Π²ΠΎΡ: opennet.ru
