GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zjistit, která karta Gpu běží na Pci Express 2.0 X16 a která používá X8?

Existuje způsob, jak určit rychlost připojení PCI Express ke konkrétní kartě? Mám zapojeny tři karty:

dvě Nvidia GTX 480 (jedna na x16 a jedna na x8)
jedna Nvidia GTX 460 běžící na x8

Existuje nějaký způsob, buď voláním funkce v C nebo volbou lspci že mohu určit rychlost sběrnice grafických karet? Když pro svůj program CUDA používám pouze jednu z karet, rád bych použil tu, která běží na x16.

Díky!

Poznámka:lspci -vvv vysype

Pro dvě GTX 480. Nevidím žádné rozdíly, které by se týkaly rychlosti autobusu.

03:00.0 VGA compatible controller: nVidia Corporation Device 06c0 (rev a3)
        Subsystem: eVga.com. Corp. Device 1480
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at d4000000 (32-bit, non-prefetchable) [size=32M]
        Region 1: Memory at b0000000 (64-bit, prefetchable) [size=128M]
        Region 3: Memory at bc000000 (64-bit, prefetchable) [size=64M]
        Region 5: I/O ports at df00 [disabled] [size=128]
        [virtual] Expansion ROM at b8000000 [disabled] [size=512K]
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia, nvidiafb, nouveau

03:00.1 Audio device: nVidia Corporation Device 0be5 (rev a1)
        Subsystem: eVga.com. Corp. Device 1480
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin B routed to IRQ 5
        Region 0: [virtual] Memory at d7ffc000 (32-bit, non-prefetchable) [disabled] [size=16K]
        Capabilities: <access denied>

04:00.0 VGA compatible controller: nVidia Corporation Device 06c0 (rev a3)
        Subsystem: eVga.com. Corp. Device 1480
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at dc000000 (32-bit, non-prefetchable) [size=32M]
        Region 1: Memory at c0000000 (64-bit, prefetchable) [size=128M]
        Region 3: Memory at cc000000 (64-bit, prefetchable) [size=64M]
        Region 5: I/O ports at cf00 [size=128]
        [virtual] Expansion ROM at c8000000 [disabled] [size=512K]
        Capabilities: <access denied>
        Kernel driver in use: nvidia
        Kernel modules: nvidia, nvidiafb, nouveau

04:00.1 Audio device: nVidia Corporation Device 0be5 (rev a1)
        Subsystem: eVga.com. Corp. Device 1480
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin B routed to IRQ 5
        Region 0: Memory at dfffc000 (32-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>

A jediné rozdíly, které vidím, se týkají konkrétně mapování paměti:

myComputer:~> diff card1 card2
3c3
< Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
---
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
7,11c7,11
< Region 0: Memory at d4000000 (32-bit, non-prefetchable) [size=32M]
< Region 1: Memory at b0000000 (64-bit, prefetchable) [size=128M]
< Region 3: Memory at bc000000 (64-bit, prefetchable) [size=64M]
< Region 5: I/O ports at df00 [disabled] [size=128]
< [virtual] Expansion ROM at b8000000 [disabled] [size=512K]
---
> Region 0: Memory at dc000000 (32-bit, non-prefetchable) [size=32M]
> Region 1: Memory at c0000000 (64-bit, prefetchable) [size=128M]
> Region 3: Memory at cc000000 (64-bit, prefetchable) [size=64M]
> Region 5: I/O ports at cf00 [size=128]
> [virtual] Expansion ROM at c8000000 [disabled] [size=512K]
18c18
< Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
---
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
19a20
> Latency: 0, Cache Line Size: 64 bytes
21c22
< Region 0: [virtual] Memory at d7ffc000 (32-bit, non-prefetchable) [disabled] [size=16K]
---
> Region 0: Memory at dfffc000 (32-bit, non-prefetchable) [size=16K]

Přijatá odpověď:

Toto je velmi stará otázka, ale způsob, jak to udělat správně, je spustit

sudo lspci -vv

U každého zařízení pci-e uvádí LnkSta, který vám říká rychlost jako _ GT/s, šířka x1. Uvádí také LnkCap, kapacitu propojení.

Související:Jak smazat soubory bezpečným způsobem v Ubuntu?

2,5 GT/s =PCI-e gen 1, 5 GT/s =PCI-e gen 2, 8 GT/s =PCI-e gen 3 a šířka je počet jízdních pruhů.


Ubuntu
  1. Jak mohu vědět, který proces používá swap?

  2. Jak zjistím, který běžící proces používá javu?

  3. Určete, který host běží na XEN:HVM nebo PV host

  1. Který shell používám?

  2. Jak zjistit, který proces vytváří soubor?

  3. Jak zjistím, která distribuce Linuxu běží?

  1. Linux – Jak zjistit, která Linuxová distribuce běží?

  2. Ubuntu – Jak zjistit, který systém ovladače X11 používá?

  3. Jak zkontrolovat, který Shell používám?