āĻāĻžāϰā§āĻāĻŋāĻ-āĻāύāĻāĻŋāĻāĻŋāĻĒāĻŋāĻāĻ (virtio-nvgpu) āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻāĻŋāĻ āĻĄāĻŋāĻāĻžāĻāϏ āϤā§āϰāĻŋ āĻāϰā§, āϝāĻž āĻā§āĻāĻŋāĻāĻŽ (KVM) āĻšāĻžāĻāĻĒāĻžāϰāĻāĻžāĻāĻāϰā§āϰ āĻ āϧā§āύ⧠āĻāϞāĻŽāĻžāύ āĻā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻĨā§āĻā§ āύā§āϝā§āύāϤāĻŽ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏā§āϰ āĻāĻĒāϰ āĻĒā§āϰāĻāĻžāĻŦ āĻĢā§āϞ⧠āĻāύāĻāĻŋāĻĄāĻŋāϝāĻŧāĻž (NVIDIA) āĻāĻŋāĻĒāĻŋāĻāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āϞā§āĻĄ āĻāϰāĻž āĻāĻāĻāĻŋ āĻāĻžāϰā§āύā§āϞ āĻŽāĻĄāĻŋāĻāϞ āĻāĻŦāĻ āĻšā§āϏā§āĻā§ āĻāϞāĻŽāĻžāύ āĻāĻāĻāĻŋ āĻāĻžāϰā§āĻāĻŋāĻ āĻĄāĻŋāĻāĻžāĻāϏ āύāĻŋāϝāĻŧā§ āĻāĻ āĻŋāϤāĨ¤ āĻāĻžāϰā§āύā§āϞ āĻŽāĻĄāĻŋāĻāϞā§āϰ āĻā§āĻĄāĻāĻŋ āϏāĻŋ (C) āĻāĻžāώāĻžāϝāĻŧ āϞā§āĻāĻž āĻāĻŦāĻ āĻāĻŋāĻĒāĻŋāĻāϞāĻāĻŋ⧍ (GPLv2) āϞāĻžāĻāϏā§āύā§āϏā§āϰ āĻ āϧā§āύ⧠āϞāĻžāĻāϏā§āύā§āϏāĻĒā§āϰāĻžāĻĒā§āϤ, āĻ āύā§āϝāĻĻāĻŋāĻā§ āĻāĻžāϰā§āĻāĻŋāĻ āĻĄāĻŋāĻāĻžāĻāϏā§āϰ āĻā§āĻĄāĻāĻŋ āϰāĻžāϏā§āĻ (Rust) āĻāĻžāώāĻžāϝāĻŧ āϞā§āĻāĻž āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĒāĻžāĻāĻŋ ⧍.ā§Ļ (Apache 2.0) āϞāĻžāĻāϏā§āύā§āϏā§āϰ āĻ āϧā§āύ⧠āϞāĻžāĻāϏā§āύā§āϏāĻĒā§āϰāĻžāĻĒā§āϤāĨ¤
āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻŽāϤā§, āĻāĻŋāĻĒāĻŋāĻāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏā§āϰ āĻā§āώāϤāĻŋ ⧍%-āĻāϰ āĻŦā§āĻļāĻŋ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāĻĒāĻŋāĻāĻ āϞā§āĻā§āϞ⧠āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻ āύā§āĻŦāĻžāĻĻ āύāĻž āĻāϰā§, āĻāĻāĻāϏāĻŋāĻāĻŋāĻāϞ (ioctl) āĻāϞāĻā§āϞā§āĻā§ āύā§āĻāĻŋāĻ āĻāύāĻāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰ⧠āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻāύāĻāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāĻŦāĻŋāĻāĻ (ABI) āϞā§āĻā§āϞ⧠āĻāĻžāĻ āĻāϰāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻā§āĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āĻ āϰā§āĻāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻā§āϏā§āĻ āϏāĻžāĻāĻĄā§, āĻāĻāĻāĻžāϰ āϏā§āĻĒā§āϏ⧠āĻāϞāĻŽāĻžāύ āύā§āĻāĻŋāĻ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻāĻŦāĻ āĻšāĻžāĻ-āϞā§āĻā§āϞ āĻāύāĻāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻĄā§āϰāĻžāĻāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āĻā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻāĻāĻāĻŋ āĻāĻžāϰā§āύā§āϞ āĻŽāĻĄāĻŋāĻāϞ āϞā§āĻĄ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻāĻŋ /dev/nvidiactl, /dev/nvidia0âĻN, āĻāĻŦāĻ /dev/nvidia-uvm āĻĄāĻŋāĻāĻžāĻāϏ āĻĢāĻžāĻāϞāĻā§āϞ⧠āϏāϰāĻŦāϰāĻžāĻš āĻāϰ⧠āĻāĻŦāĻ ioctl() āĻ mmap() āĻāϞāĻā§āϞā§āĻā§ āĻāĻāĻāĻŋ virtqueue-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻšā§āϏā§āĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§āϰ āĻāĻāĻāĻŋ āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰā§āϰ āĻāĻžāĻā§ āϰāĻžāĻāĻ āĻāϰā§, āϝāĻž āϏā§āĻā§āϞā§āĻā§ NVIDIA āĻšā§āϏā§āĻ āĻĄā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āĻĒāĻžāĻ āĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧāĨ¤ āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŦāĻ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύā§āϰ āĻŽāϧā§āϝ⧠āĻāύāĻā§āĻā§āϏāĻ āϏā§āĻāĻāĻŋāĻ āĻāĻĄāĻŧāĻžāύā§āϰ āĻāύā§āϝ, āĻāĻŽāĻžāύā§āĻĄ āĻŦāĻžāĻĢāĻžāϰāĻā§āϞā§āĻā§ āĻšā§āϏā§āĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻāĻŦāĻ GPU āĻĻā§āĻŦāĻžāϰāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏāϝā§āĻā§āϝ āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻŽā§āĻŽāϰāĻŋāϤ⧠āĻŽā§āϝāĻžāĻĒ (mmapped) āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āĻāĻā§āϏāĻā§āϞā§āϏāĻŋāĻ āĻāĻŋāĻĒāĻŋāĻāĻ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻĒāĻžāϏāĻĨā§āϰ⧠(āĻāĻŋāĻāĻĢāĻāĻāĻ āĻĒāĻžāϏāĻĨā§āϰā§)-āĻāϰ āĻŦāĻŋāĻĒāϰā§āϤā§, āĻāĻžāϰā§āĻāĻŋāĻ-āĻāύāĻāĻŋāĻāĻŋāĻĒāĻŋāĻāĻ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ āĻāĻāĻžāϧāĻŋāĻ āĻāĻŋāĻĒāĻŋāĻāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻŋāĻāĻ-āϤ⧠āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύāĻāĻŦāĻ virtio-gpu (Venus, VirGL)-āĻāϰ āĻŽāϤ⧠āύāϝāĻŧ, āĻāĻāĻŋ Vulkan āĻāĻŦāĻ OpenGL āĻā§āϰāĻžāĻĢāĻŋāĻā§āϏ API āĻā§āϰāĻžāύā§āϏāϞā§āĻļāύ āϞā§āĻā§āϞ⧠āĻāĻžāĻ āύāĻž āĻāϰā§, āĻŦāϰāĻ NVIDIA āĻĄā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻāĻžāĻā§ ABI āĻĒāĻžāϏāĻĨā§āϰā§-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰā§āĨ¤ virtio-nvgpu-āĻāϰ āĻ āϏā§āĻŦāĻŋāϧāĻžāĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āϰāϝāĻŧā§āĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖ IOMMU-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻāϏā§āϞā§āĻļāύā§āϰ āĻ āĻāĻžāĻŦ (āĻā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§āϞ⧠NVIDIA āĻšā§āϏā§āĻ āĻĄā§āϰāĻžāĻāĻāĻžāϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ ioctl āĻāϞ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻŽāϧā§āϝ⧠āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻĨāĻžāĻā§) āĻāĻŦāĻ NVIDIA āĻĄā§āϰāĻžāĻāĻāĻžāϰ ABI-āĻāϰ āĻāĻĒāϰ āĻāϰ āύāĻŋāϰā§āĻāϰāϤāĻž (āĻĒā§āϰāϤāĻŋāĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖā§āϰ āϏāĻžāĻĨā§ ABI āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ, āϝāĻžāϰ āĻāύā§āϝ virtio-nvgpu-āĻā§ āĻŽāĻžāύāĻŋāϝāĻŧā§ āύā§āĻāϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ)āĨ¤
Vulkan, OpenGL, NVENC, āĻāĻŦāĻ CUDA API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϰā§āύā§āĻĄāĻžāϰāĻŋāĻ, āĻāĻŋāĻĄāĻŋāĻ āĻāύāĻā§āĻĄāĻŋāĻ āĻāĻŦāĻ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ virtio-nvgpu-āĻāϰ āϏāĻā§āώāĻŽāϤāĻž āϝāĻĨā§āώā§āĻāĨ¤ āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻĒā§āϰāϝāĻŧā§āĻ āĻšāĻŋāϏā§āĻŦā§ āĻā§āϞāĻžāĻāĻĄ āĻā§āĻŽāĻŋāĻ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻŦāĻž āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻĄā§āϏā§āĻāĻāĻĒ āϤā§āϰāĻŋāϰ āĻāĻĨāĻž āĻŦāϞāĻž āĻšāϝāĻŧā§āĻā§, āϝā§āĻāĻžāύ⧠āĻā§āύ⧠āĻā§āĻŽ āĻŦāĻž āĻā§āϰāĻžāĻĢāĻŋāĻā§āϏ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāϞā§āĨ¤ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύāϝāĻž āϰā§āύā§āĻĄāĻžāϰāĻŋāĻ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰā§, NVENC āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĢāϞāĻžāĻĢāϞāĻāĻŋāϰ āĻšāĻžāϰā§āĻĄāĻāϝāĻŧā§āϝāĻžāϰ āĻāύāĻā§āĻĄāĻŋāĻ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻŋ āϏāĻāĻā§āĻāĻŋāϤ āĻāĻŋāĻĄāĻŋāĻ āϏā§āĻā§āϰāĻŋāĻŽ āĻāĻāĻžāϰ⧠āĻĻā§āϰāĻŦāϰā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āĻāĻāĻāĻĒā§āĻ āĻĒā§āϰā§āϰāĻŖ āĻāϰā§āĨ¤
āĻāϤā§āϏ: opennet.ru
