Cuatro Radeon R9700 con BAR de 32 GB detrás de un switch PCIe en Linux

Fitting Four 32 GB Resizable Bars Behind a PCIe Switch on Linux

Cuatro Radeon R9700 con BAR de 32 GB detrás de un switch PCIe en Linux

Doug Calobrisi consigue que cuatro AMD Radeon AI PRO R9700, más dos RTX 3090, compartan un único slot x16 mediante un switch Broadcom PEX88096 y obtengan su Resizable BAR completo de 32 GB en Linux, requisito para que ROCm active P2P. El BIOS no puede mapear seis BARs de ese tamaño y el kernel 7.0 tiene un bug al dimensionar la ventana del bridge. Publicó gpu-rebar-layout, un módulo fuera del árbol que ajusta tamaños y reescanea desde el initramfs; con él, el P2P entre las R9700 alcanza 14 GB/s por par.

No elimines ni reescanees una GPU que ya tiene su driver cargado. Eso bloqueó mi equipo.
  1. dougcalobrisi

    Este es mi post. Básicamente, necesitaba P2P entre cuatro R9700 para servir en paralelo con tensores, lo que significa un BAR de 32 GB en cada tarjeta. Con las seis GPUs instaladas, la BIOS no podía mapearlas, y Linux dimensionó la ventana del switch demasiado pequeña, así que solo dos tarjetas obtuvieron sus BARs. El módulo del post lo soluciona. Con P2P desactivado, el prefill era aproximadamente la mitad de rápido.

  2. zir_blazer

    Este tipo de cosas deberían ser divertidas de probar en Coreboot. Cuando se lanzó Dasharo para la MSI PRO Z690-A DDR4 hace más de cuatro años, tuve problemas con dos Radeon 5600XT instaladas que se solucionaron después de que el desarrollador ajustara algunos parámetros relacionados con MMIO: https://github.com/Dasharo/dasharo-issues/issues/245

    Cuántos PCIe Switches podrías encadenar y cuántas tarjetas con requisitos absurdos de MMIO puedes hacer funcionar sería un experimento interesante.

    En la última década más o menos he visto un montón de problemas relacionados con MMIO en el firmware. Recuerdo ciertas NICs con soporte SR-IOV (normalmente Intel como la i350 y otras piezas empresariales) que no podían reservar suficiente MMIO para crear todas las Funciones Virtuales SR-IOV soportadas en placas base de consumo; en muchos casos podías hacer funcionar SR-IOV pero estabas limitado a crear como 4 VFs incluso si el hardware soportaba 16 porque eso era lo que cabía. Esto era esencialmente un problema del firmware, no del hardware, pero pocas personas tienen las habilidades necesarias para hacer modding de BIOS y arreglar cosas bastante enrevesadas como la asignación de MMIO. Básicamente, estás intentando sortear problemas del firmware por otra vía.

  3. bombela

    La palabra o acrónimo BAR se menciona 34 veces pero nunca se define.

Más de este día

2026-11-12