Gibt es eine Möglichkeit, die Geschwindigkeit der PCI Express-Verbindung zu einer bestimmten Karte zu bestimmen? Ich habe drei Karten eingesteckt:
zwei Nvidia GTX 480 (eine mit x16 und eine mit x8)
eine Nvidia GTX 460 mit x8
Gibt es einen Weg, entweder durch einen Funktionsaufruf in C oder eine Option zu lspci
dass ich die Busgeschwindigkeit der Grafikkarten ermitteln kann? Wenn ich nur eine der Karten für mein CUDA-Programm verwende, möchte ich diejenige verwenden, die mit x16 läuft.
Danke!
Hinweis:lspci -vvv
Dumps aus
Für die beiden GTX 480. Ich sehe keine Unterschiede in Bezug auf die Busgeschwindigkeit.
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>
Und die einzigen Unterschiede, die ich sehe, beziehen sich speziell auf die Speicherzuordnung:
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]
Akzeptierte Antwort:
Dies ist eine sehr alte Frage, aber der Weg, dies richtig zu tun, ist ausgeführt
sudo lspci -vv
Für jedes PCI-E-Gerät listet es LnkSta auf, das Ihnen die Geschwindigkeit als _ GT/s, Breite x1 angibt. Es listet auch LnkCap auf, die Verbindungskapazität.
Verwandte:Wie lösche ich die Datei(en) auf sichere Weise in Ubuntu?2,5 GT/s =PCI-e Gen 1, 5 GT/s =PCI-e Gen 2, 8 GT/s =PCI-e Gen 3, und die Breite ist die Anzahl der Lanes.