2011 15" Lenovo ThinkPad W520 (Q 1000M) [2nd,4C,Q] + GTX 970 @ 2Gbps-EC2 (EXP GDC 8.x ) + Win10 1909 & Linux Ubuntu 20.04B
Well, it all started when a friend told me about a game, which I got, and
found that even though it claimed a 1GB minimum video requirement, my 2GB
Quadro 1000M internal Discrete graphics was "too little video memory". The
expresscard version of EXP GDC Beast seemed to fit my needs and budget, so I
got one and tried it with a borrowed 1GB GT640. This was enough to play the
game, but did not have a high enough CUDA compute capability to run
Tensorflow. Decision time between a 2GB GTX750TI and the 4GB GTX970 (which was
in the high range of "not recommended" cards). I felt I could handle any
tweaking necessary to get the GTX970 working, so that's what I ordered.
Surprise, no tweaks necessary, just replace the GT640 and everything still
* 2011 15" Lenovo Thinkpad W520
* BIOS/firmware 1.42 version.
* Ram 12GB DDR3 10600 memory
* hdd 750GB SATA3 MBR (Ubuntu 18.04, Windows) + sdd 60GB SATA3 UEFI (Ubuntu 20.04)
* 1920x1080 laptop display
* Intel I7 2760QM 2.4GHz/3.5GHz 4c/8t
* Integrated graphics Intel hd3000, discrete graphics Nvidia Quadro 1000m
* Ubuntu 18.04, Ubuntu 20.04, Win10 Pro 1909
* EXP GDC Beast 8.0, expresscard to 16x PCIe1.1 ($40 on sale)
* Dell Portable 220w power supply D220P-01 POWER SUPPLY P/N:MK394 ($20)
* 1G GT 640 for testing (loaner)
* 4G GTX 970 ($109)
* Additional power cable splitters ($20) used to provide the GTX970 with two 6 pin
power plugs from the 6 pin EXP GDC output.
Total $189 incl. taxes and shipping.
Ubuntu Linux (both 18.04 and 20.04B)
Start with a system running Ubuntu 18.04 using discrete graphics ( Quadro 1000m) with the Nvidia 390 drivers. No xorg.conf file was present. Reboot to
BIOS/UEFI settings and disable the internal Quadro 1000m by selecting integrated graphics. Insert MSI GTX970 into EXP GDC adapter, attach additional
power cable splitters from the adapter's 6 pin output to the GTX970 two 6 pin inputs. Attach the 8 pin power to the adapter, and insert the expresscard
cable into the W520 slot. Power on the W520: the power transformer light should go from yellow (standby) to green. The EDC adapter light should be
green, and the GTX970 fans should run. Booting Ubuntu should work normally, with the primary display on the W520. If an HDMI screen is attached to the
GTX970, it should default to a screen extension to the right of the primary. The position of the screens may be readjusted with the Display Settings. The
W520's Display Port is disabled when the internal Quadro is disabled. Run the Software and Updates program and select the Additional Drivers tab to update
the Nvidia drivers from 390 to the offered 435 (on Ubuntu 18.04) or to the 440 driver (on Ubuntu 20.04). Reboot and the new drivers should be in use. Check
with the nvidia-smi program. Shutdown and suspend should work, with the adapter power supply automatically going into standby.
Windows 10 Pro 1909
With the EXP GDC attached as above, reboot and select Windows 10 1909, which was running on the internal Quadro 1000M -- it automatically switches to the external GTX970. From the device manager, select the GTX970 and update the driver -- be patient, this takes a long time and no progress bar is shown. No other Windows changes were necessary. The various reported problems with a 4G card were not present, maybe because the GTX970's memory is broken up into a 3.5G and a 0.5G section. The EGC adapter ran successfully first with a 1G GT640, before trying the 4G GTX970. No problems at all with either card. Better power cabling would be possible with custom cables, but the off-the-shelf splitters and extension worked.
The default 1920x1080 laptop display was used, no external display attached to the card.
$ glxgears from Ubuntu 1804
Running synchronized to the vertical refresh. The framerate should be
approximately the same as the monitor refresh rate.
5465 frames in 5.0 seconds = 1092.981 FPS
5569 frames in 5.0 seconds = 1113.740 FPS
4721 frames in 5.0 seconds = 944.008 FPS
Version: 0.10.251 64 bit http://cuda-z.sf.net/
OS Version: Ubuntu 20.04B Linux 5.4.0-21-generic #25-Ubuntu SMP Sat Mar 28 13:10:28 UTC 2020 x86_64
Driver Version: 440.64
Driver Dll Version: 10.20 (440.64)
Runtime Dll Version: 6.50
Name: GeForce GTX 970
Compute Capability: 5.2
Clock Rate: 1240.5 MHz
PCI Location: 0:5:0
Multiprocessors: 13 (1664 Cores)
Threads Per Multiproc.: 2048
Warp Size: 32
Regs Per Block: 65536
Threads Per Block: 1024
Threads Dimensions: 1024 x 1024 x 64
Grid Dimensions: 2147483647 x 65535 x 65535
Watchdog Enabled: Yes
Integrated GPU: No
Concurrent Kernels: Yes
Compute Mode: Default
Stream Priorities: Yes
Total Global: 4043 MiB
Bus Width: 256 bits
Clock Rate: 3505 MHz
Error Correction: No
L2 Cache Size: 48 KiB
Shared Per Block: 48 KiB
Pitch: 2048 MiB
Total Constant: 64 KiB
Texture Alignment: 512 B
Texture 1D Size: 65536
Texture 2D Size: 65536 x 65536
Texture 3D Size: 4096 x 4096 x 4096
GPU Overlap: Yes
Map Host Memory: Yes
Unified Addressing: Yes
Async Engine: Yes, Bidirectional
Host Pinned to Device: 185.442 MiB/s
Host Pageable to Device: 164.738 MiB/s
Device to Host Pinned: 199.052 MiB/s
Device to Host Pageable: 198.363 MiB/s
Device to Device: 63.2417 GiB/s
GPU Core Performance
Single-precision Float: 4040.53 Gflop/s
Double-precision Float: 131.251 Gflop/s
64-bit Integer: 274.549 Giop/s
32-bit Integer: 1206.73 Giop/s
24-bit Integer: 886.531 Giop/s
Generated: Sun Apr 5 20:00:02 2020
The EXP GDC allowed using cards with a higher CUDA compute capability (CC) than the native Quadro 1000M, which is only 2.1. 2.1 allows up to CUDA 8.0,
but is not sufficient for Intel's Deep Neural Networking installation (needing 3.0). The GTX970 with a CC of 5.2 allows up to CUDA 10, DNN, and Tensorflow.
I was pleasantly surprised at how easy installation was of the new hardware. The GTX970 was in the higher range of not recommended cards, maybe since the
PCIe1.1 is obviously a bottleneck for this card. No tweaking of any operating system was needed to use the external graphics cards, and the only firmware
change was to disable the discrete graphics. In particular, there were no TOLUD PCI memory issues caused by the W520's 32 bit history. I am happy with
the upgraded graphics and CUDA capability.
@bug_hunter , the Lenovo W520 should have an expresscard Gen1 / AUTO BIOS setting. AUTO being the Gen2 mode. Worth testing to see if can get a reliable performance improvement.
@nando4, A good thought, but on Automatic, without an external screen, I only got a black screen. With an external, I got an Ubuntu login screen (on the laptop), but no keyboard/mouse, so no login possible. Maybe my EXP GDC Beast 8.0 is too old for gen 2. Anyway, resetting the BIOS expresscard value back to gen1, got everything working again. I'd just realized I'd never applied the BIOS 1.46 patch, I'm still at 1.42, the pre Win 10, so that may have something to do with it also. I'm trying to find if the 1.42 -> 1.46 BIOS upgrade will cause me problems with the TOLUD/PCI memory. Maybe I was just lucky/lazy never to have run the patch. Thanks for all your good work on that issue, without which I'd have been really resultant to have taken a chance on the GTX970, and settled for a 2B GTX750TI.
Did you manage to get it working on the internal display on windows 10?
I can't get it to work with the internal display on both by w520 and x220. No issues on my x230 though.
Any tips for the w520 or x220?
Hey, thanks for answering!
I get a You are not currently using a display attached to an NVIDIA GPU error on both the x220 and w520 with a few drivers I tried including the latest.
On the x230 it just worked like plug and play both with latest driver from nvidia and whatever driver windows decided to install.
When I have time again ill try old nvidia drivers (somewhere I read that 375.63 should work) though i have to see how to disable windows auto driver update first I guess.
@leggeron, Yes as I said I got the same error message trying to make the eGPU work with my internal display when I used the latest nvidia drivers and also when I let Windows 10 automatically install drivers. I even installed some old 37x.x I don't remember exactly which one and same issue, couldn't drive my internal display using eGPU. Solution was installing 430.86 I believe (will double check this tonight) which is the highest version that worked for me and let me use the eGPU with internal display and voilà you can use your application/game with eGPU. We both have the same laptop (X220) so it should work for you as well.
Try this version first and see if that works. 375.63 is a bit old (2016) and might be incompatible with some new games or applications. What GPU are you using with your EXP GDC dock ?
Btw do you get a framerate cap in your X230 w/eGPU like I do when using the internal display ? If someone has any explanation or workaround to this that would be very appreciated. Details are in my first post.
Im using a gtx750ti. Ill try that driver as soon as I can.
I havent tested anything on the x230, just saw that it worked and went through a round of world of warships and was pleased.
I started running Windows 10 with the Nvidia driver for the internal Quadro 1000M, which ran on the laptop screen, then updated it to the 18.104.22.16800 Jul 24,2019 Nvidia driver, That runs on the laptop screen also. The Ubuntu drivers were 435 which updated to 440, bothof which ran on the laptop screen too. I did check out an external monitor, but don't use one normally. Good to see you got it working.