About pinned memory and its effectiveness

Dear all and nVidia experts,

I’ve come across a weird issue lately with pinned memory. It is said in CUDA manual and project bandwidthTest in CUDA 2.1 SDK that by using pinned memory, we will have more bandwidth between host and device. It proved to be true for most of the systems (2.5GB/s for one-way host and device). Although something odd happened when I’m deploying my application to the server.

The server is equipped with Geforce 8600 GT (yes, 8600 GT for a server, but you know…), and the driver is the latest 182.50. I tested using CUDA SDK bandwidthTest and the result is transmission between host and device are all around 1.3GB/s, which is the same (or even lower than pageable memory). So I wonder whether my system has limited the size of pagelock memory (which can be done under Linux using ulimit, or previous Windows versions using registry). If that’s the case, how can I tune up the size for pinned memory so I can use it for faster I/O between host and device. If that’s not the case, then what possibility have I done wrong. Thanks!

BTW, for most workstations, the bandwidth is 2.5GB/s, but only for my servers (Windows XP), pinned memory doesn’t work. Thanks a lot!

Is the GPU in the right slot, x16, or is it in a PCIEx4?

I’m pretty sure it’s PCI-E 16x.

Although I want to ask if I may, is that a big factor? I mean the pageable memory is transmitting at 1.5GB/s on the server. I suppose it could be slower if it’s PCI-e 4x.

Another issue will be is it true that pinned memory (pagelock memory) will always outperform pageable memory in a significant sense.

Also I found out on the internet that the limit for page lock memory for Windows XP is controlled by a DWORD in the registry called IOPageLockLimit. Although the key was removed in later releases of Windows and the default pagelock memory size is 512K. I wonder whether this is true and how can I detect my page lock memory settings, and eventually how can I change this setting to a customized settings (in my case, as large as 2G).


Can somebody please help me? My server is dying of slow pinned memory transmission… Thanks!