LINUX.ORG.RU

Сообщения Skullnet

 

Нвидиа душила RTX 30xx в матричных операциях: как снять ограничение на Linux

 , ,

Разблокировка FP/BF16 на Nvidia RTX 30xx под Linux: проверил, работает

Наткнулся на интересный проект: gpu-unlock. Это модуль ядра Linux, который снимает искусственное ограничение скорости выдачи FP/BF16 FMA-инструкций (с FP32-аккумуляцией) на потребительских картах 30-й серии. Nvidia сделала ограничение, чтобы отделить игровые карты от профессиональных и дата-центровых. Работает на GA102, GA103, GA104 и GA106.

Как это устроено

Модуль выполняет разблокировку и записывает нужные регистры до того, как к карте подключится штатный драйвер Nvidia. Драйвер при этом остаётся оригинальным, без патчей, так что после обновления драйвера ничего заново патчить не нужно. Это главное отличие от предыдущих подходов.

Результаты

Автор приводит такие цифры для 3090 Ti (GEMM 8192³, 450 Вт, FP32-аккумуляция):

Вход   До             После
FP16   87.46 TFLOPS   118.39 TFLOPS
BF16   87.50 TFLOPS   157.41 TFLOPS
TF32   42.58 TFLOPS    82.61 TFLOPS

Мои результаты

  • Stable Diffusion: прирост заметный, +50-60%.
  • Обучение LoRA: примерно +50% к скорости.
  • llama.cpp: прирост небольшой, но на практике ощущается.

Это логично: тренировка и диффузия упираются в матричные операции (BF16/FP16), а инференс LLM в основном ограничен пропускной способностью памяти, поэтому там выигрыш скромнее.

Видеокарта потребляет 200 Вт, а не 120-150 Вт, как было раньше.

Установка

git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install

Затем нужно добавить gpu_unlock.targets=all в параметры ядра. В GRUB это GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub, после чего выполнить update-grub:

GRUB_CMDLINE_LINUX_DEFAULT="gpu_unlock.targets=all"

Поддерживаются Arch, Debian/Ubuntu и Fedora, есть примеры для systemd-boot и UKI. Можно указать конкретные карты по PCI-адресу, например gpu_unlock.targets=0000:21:00.0.

Если nvidia.ko лежит в initramfs (Debian/Ubuntu)

В этом случае модуль нужно загрузить раньше, чем udev свяжет карту с драйвером. Для этого создаём скрипт /etc/initramfs-tools/scripts/init-top/gpu-unlock:

#!/bin/sh
PREREQ=""
prereqs() { echo "$PREREQ"; }
case "$1" in prereqs) prereqs; exit 0;; esac
# Must run ahead of init-top/udev: with nvidia.ko in the initramfs,
# coldplug binds the card before load_modules reaches /conf/modules.
modprobe gpu_unlock 2>/dev/null || true
exit 0

Делаем его исполняемым и пересобираем initramfs:

chmod +x /etc/initramfs-tools/scripts/init-top/gpu-unlock
update-initramfs -u

Проверка

journalctl -k -b | grep gpu_unlock
[    4.332473] pci 0000:05:00.0: engine reset propagation: phase=post-FLR base=0x840000 first=0x1 tenth=0x1
[    4.332476] pci 0000:05:00.0: engine reset asserted: phase=post-FLR base=0x840000 error=0 last=0x1
[    4.332479] pci 0000:05:00.0: engine reset release: phase=post-FLR base=0x840000 before=0x1 write=0x0
[    4.332605] pci 0000:05:00.0: engine reset released: phase=post-FLR base=0x840000 engine=0x0 hwcfg2=0x67f7
[    4.332616] pci 0000:05:00.0: post-FLR SEC2 reset released, GSP halted, BME=0 pending=0 WPR2=1ffffe00:00000000 SS0=88888888 SS1=00000008
[    4.339315] pci 0000:05:00.0: driver probe resources: phase=handoff empty=1
[    4.339318] pci 0000:05:00.0: restore streaming mask: actual=0xffffffff expected=0xffffffff
[    4.339320] pci 0000:05:00.0: restore coherent mask: actual=0xffffffff expected=0xffffffff
[    4.339322] pci 0000:05:00.0: restore PCI command: actual=0x3 original=0x3 mask=0x6
[    4.339324] pci 0000:05:00.0: gpu_unlock: unlocked

P.S. Для 40xx серии ждём, но вроде есть форки с поддержкой.

Skullnet
()

Корпы пытаются убить Xorg

 , , корпорасты

Кто-то мне раньше говорил в одной из тем, что это всё конспирология, а оказалось что нет. Если вы регулярно заходили в репозиторий XServer, то видели, что последние коммиты (где-то около ~3000 коммитов в 2024 году) сделаны неким «Enrico Weigelt», которые висели не просмотренные. Это мотивировало Enrico сделать форк Xorg-а - «XLibre», который удалили а его самого забанили вместе с закрытием всех его пулл-реквестов. Так же корпорасты по крысиному подтёрли все улики разработчика и форка, и в какой-то другой соц. сети «Carol Herbst» - человек, который удалил форк и забанил Enrico, даже постебался. Никаких вам форков без дозволения партии.

Источник

Корпорасты так видимо «по-грязному» продвигают вяленный, потому что по другому не получается.

Ссылка на форк - тут (github.com).

Перемещено ilinsky из desktop

Skullnet
()

Ищу компактные колонки для ноутбука среди г***а

 , ,

Не понимаю что случилось с качеством колонок на рынке. Имею в наличии бюджетные колонки Genius sp-n200. Вроде куплены хрен знает когда (около 15 лет назад) за цену нескольких дошираков. Усиление от розетки. Купил похожие по характеристикам SPK-206, потому что занимают мало места. Вот только бы разочарован звучанием. Высокие частоты порезаны, звук глухой как из бочки, при этом 95% пишут что колонки хорошие, а АЧХ какая-то неправильная. То что у меня сейчас по сравнению с этим по моим ощущениям - это какая-то профессиональная аудиосистема за 10 штук.

Посоветуйте компактные колонки (желательно тоже от розетки). Я так понимаю теперь у нормальных колонок от сети ценник примерно такой и выше.

Skullnet
()

Есть ли жизнь на WPA3?

 , ,

Недавно поставил wpad-openssl на OpenWRT чисто ради WPA3, потому что есть устройства которые умеют в него на 5Ghz/2.4Ghz. Всё оказалось куда грустнее чем я ожидал.

  • Ноутбучный 01:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 31) умеет в 5Ghz, но к сети на WPA3 коннекта нет. Успешно коннектится к WPA2 сети или сети в mixed mode с WPA3.
  • Redmi 7a. Не умеет в 2.4Ghz, но «умеет» в WPA3, однако тоже не коннектится. Причём выбрать WPA2 PSK нельзя, если видит что сеть WPA3 будет пытаться стучаться и фейлиться, поэтому поставил WPA2-only.
  • Redmi 10c. Умеет и в WPA3 и в 5Ghz. Нормально работает и в mixed и в WPA3-only режиме. Недавно купил этот телефон.

Вроде бы WPA3 выпущен давно. Почему поддержка софта такая сырая? И насколько WPA2 теперь решето? Я вроде бы слышал, что при достаточно мощном железе его реально поломать, особенно на слабых паролях.

Skullnet
()

Сделать так чтобы окно было видно на всех workspace-ах (Qt)

 , ,

Средставами Qt это никак не сделать, поэтому я сделал вот так.

https://pastebin.com/5dVRCD1m

Как, кстати, написано вот тут: https://stackoverflow.com/questions/16775352/keep-a-application-window-always-on-current-desktop-on-linux-and-mac

Но нифига не работает. Вообще. Никак.

Как правильно это делается?

Skullnet
()

[РЕШЕНО] Не могу обновить ядро на более новое, система зависает на «Loading initial ramdisk».

 , ,

См. заголовок. Установленна следующая конфигурация:

lsb_release -a
No LSB modules are available.
Distributor ID:	Linuxmint
Description:	Linux Mint 20.2
Release:	20.2
Codename:	uma
System:
  Kernel: 5.4.0-77-generic x86_64 bits: 64 compiler: gcc v: 9.3.0 
  Desktop: Xfce 4.16.0 tk: Gtk 3.24.20 info: xfce4-panel, plank wm: xfwm4 
  dm: LightDM 1.30.0 Distro: Linux Mint 20.2 Uma base: Ubuntu 20.04 focal 
Machine:
  Type: Desktop Mobo: Gigabyte model: B550M S2H v: x.x serial: <filter> 
  UEFI: American Megatrends v: F2 date: 07/07/2020 
CPU:
  Topology: 6-Core model: AMD Ryzen 5 5600X bits: 64 type: MCP arch: Zen 3 
  L2 cache: 3072 KiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm 
  bogomips: 44313 
  Speed: 2039 MHz min/max: 2200/3700 MHz boost: enabled Core speeds (MHz): 
  1: 2039 2: 2087 3: 2888 4: 2044 5: 3551 6: 2124 
Graphics:
  Device-1: NVIDIA GK208B [GeForce GT 710] vendor: Micro-Star MSI 
  driver: nvidia v: 460.80 bus ID: 09:00.0 chip ID: 10de:128b 
  Display: x11 server: X.Org 1.20.9 driver: nvidia tty: N/A 
  OpenGL: renderer: GeForce GT 710/PCIe/SSE2 v: 4.6.0 NVIDIA 460.80 
  direct render: Yes 
Audio:
  Device-1: NVIDIA GK208 HDMI/DP Audio vendor: Micro-Star MSI 
  driver: snd_hda_intel v: kernel bus ID: 09:00.1 chip ID: 10de:0e0f 
  Device-2: AMD Starship/Matisse HD Audio vendor: Gigabyte 
  driver: snd_hda_intel v: kernel bus ID: 0b:00.4 chip ID: 1022:1487 
  Sound Server: ALSA v: k5.4.0-77-generic 
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  vendor: Gigabyte driver: r8169 v: kernel port: f000 bus ID: 08:00.0 
  chip ID: 10ec:8168 
  IF: enp8s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
Drives:
  Local Storage: total: 931.51 GiB used: 57.35 GiB (6.2%) 
  ID-1: /dev/nvme0n1 vendor: Western Digital model: WDS100T2B0C-00PXH0 
  size: 931.51 GiB speed: 31.6 Gb/s lanes: 4 serial: <filter> rev: 211210WD 
  scheme: GPT 
Partition:
  ID-1: / size: 479.62 GiB used: 57.34 GiB (12.0%) fs: ext4 
  dev: /dev/nvme0n1p2 
  ID-2: swap-1 size: 15.62 GiB used: 0 KiB (0.0%) fs: swap 
  dev: /dev/nvme0n1p3 
Sensors:
  System Temperatures: cpu: 0.0 C mobo: N/A gpu: nvidia temp: 61 C 
  Fan Speeds (RPM): N/A gpu: nvidia fan: 52% 
Info:
  Processes: 260 Uptime: 2m Memory: 15.62 GiB used: 1.89 GiB (12.1%) 
  Init: systemd v: 245 runlevel: 5 Compilers: gcc: 9.3.0 alt: 10/9 
  Shell: bash v: 5.0.17 running in: xfce4-terminal inxi: 3.0.38

Как исправить? А то установленное ядро древнее как говно мамонта (особенно для этого процессора).

Решил проблему обновлением биоса: https://forums.linuxmint.com/viewtopic.php?f=46&t=353286&p=2041374#p2041374

Skullnet
()

Заставить систему видеть сканер при втыкании в USB сокет

 ,

Сканер прикручен к принтеру Epson L366. Если включить USB и загрузиться с включенным сканером, то ядро определит его и проблемы не будет. А если включить сканер в загруженной системе, то программы его не определяет.

Однако...

sane-find-scanner 

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.

could not open USB device 0x1d6b/0x0003 at 002:001: Access denied (insufficient permissions)
could not open USB device 0x0cf3/0xe009 at 001:005: Access denied (insufficient permissions)
could not open USB device 0x0bda/0x0129 at 001:004: Access denied (insufficient permissions)
could not open USB device 0x1bcf/0x2c00 at 001:003: Access denied (insufficient permissions)
could not fetch string descriptor: Pipe error
could not fetch string descriptor: Pipe error
found USB scanner (vendor=0x04b8, product=0x08d2) at libusb:001:018
could not open USB device 0x062a/0x4101 at 001:002: Access denied (insufficient permissions)
could not open USB device 0x1d6b/0x0002 at 001:001: Access denied (insufficient permissions)
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

  # You may want to run this program as root to find all devices. Once you
  # found the scanner devices, be sure to adjust access permissions as
  # necessary.

Многие решения из гугла пробовал, не получилось. Есть идеи?

P.S. Запуск под рутом не решает проблему.

Skullnet
()

Проблема с цветами в compiz

 ,

http://www.zimagez.com/zimage/2017-09-2100-25-58.php

После перезагрузки системы ВНЕЗАПНО что-то случилось с цветами в compiz. (контрастные, ага, и в терминале тоже)

А было вот так.

http://www.zimagez.com/zimage/2017-09-2100-26-44.php

Сносил конфиги, не помогло, как и гугление. Кто нибудь знает как исправить?

P.S. Драйвера не менялись.

Skullnet
()

Плохой wifi сигнал на чипе Qualcomm Atheros

 ,

Распарсил весь гугл, но проблему так и не исправил. На других устройствах (на мобилке, например) скорость приема около 2Мб/c из туалета (link quality = ~100%), а тут еле-еле дотягивает до 300кб/c с затыками.

iwconfig

( читать дальше... )

lshw -C network

( читать дальше... )

Firmware стоит из гита.

Есть идеи?

Skullnet
()

Не работает копирование в буфер обмена в mc

 ,

В общем вот такая штука по умолчанию, но не знаю как она лечится. Поиск в гугле закончился рекурсией.

http://www.zimagez.com/zimage/2017-02-2713-09-37.php

Skullnet
()