ΠΠ°Ρ‡Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π² ядро Linux Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Nova для GPU NVIDIA

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Red Hat ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² состав ядра Linux ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Nova. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ рассчитан Π½Π° использованиС с GPU NVIDIA, оснащёнными GSP-ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ начиная с сСрии NVIDIA GeForce RTX 2000 Π½Π° Π±Π°Π·Π΅ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Turing. Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… GPU ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ управлСния Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ GSP (GPU System Processor). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π² долгосрочной пСрспСктивС Nova Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ собой Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Nouveau для GPU с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GSP.

Новый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ написан Π½Π° языкС Rust ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ инфраструктура для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Rust-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ развиваСтся, ΠΊΠΎΠ΄ Nova Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π² основной состав ядра поэтапно, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ появлСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… обвязок для языка Rust. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ядро ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Β«nova-coreΒ», состоящий ΠΈΠ· 232 строк ΠΊΠΎΠ΄Π°. Nova-core Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракций Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ интСрфСйсами ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ GSP, ΠΈ прСдоставляСт API, Π½Π΅ зависящий ΠΎΡ‚ вСрсий ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ стадии Π² ядро ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ DRM-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ nova-drm (Direct Rendering Manager) для взаимодСйствия с GPU ΠΈΠ· пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° Ρ‚Π°ΠΊΠΆΠ΅ VFIO-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ vGPU, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ GPU NVIDIA Π² систСмах Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ продвиТСния Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Nova называСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ услоТнСний, свойствСнных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ Nouveau, ΠΈ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ упрощСния, благодаря Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², прСдоставляСмых ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ GSP ΠΈ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΡŽ Π³Ρ€ΡƒΠ·Π° ΠΏΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ старых GPU. Nova Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Nouveau Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ сущСствСнной ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅ VMM/MMU. Π―Π·Ρ‹ΠΊ Rust Π²Ρ‹Π±Ρ€Π°Π½ для сниТСния вСроятности ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ с созданиСм обвязок ΠΈ абстракций для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° Rust.

Play video

Π§Ρ‚ΠΎ касаСтся прогрСсса добавлСния Π² ядро Linux возмоТностСй для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust, Π² состав Π²Π΅Ρ‚ΠΊΠΈ 6.14 приняты Rust-обвязки для PCI, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Open Firmware, ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… устройств ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. Π“Ρ€Π΅Π³ ΠšΡ€ΠΎΠ°-Π₯Π°Ρ€Ρ‚ΠΌΠ°Π½ (Greg Kroah-Hartman), ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ ядра Linux, Π² pull-запросС с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² для ядра 6.14, ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π» Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС, ΠΊΠ°ΠΊ Β«ΠΏΠΎΡ‡Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊ написанию Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π° RustΒ».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ