Significant decrease of available page-locked memory at Win7 x64 vs. Win7 x32

I had this configuration:

[i]CUDA 4.0

MS Visual Studio 2010

GTX 460 2 GB

Core Quad Q6600 3 GB

Windows 7 Professional x32[/i]

I used large arrays of page-locked memory like this:

float* R;

cutilSafeCall(cudaHostAlloc( (void**)&R, x_size * y_size * z_size * sizeof(float), 0 ));

The system can allocate about 700 MB of memory for the array.

OK, then I added some memory and install Windows 7 x64, so I have the next configuration:

[i]CUDA 4.0

MS Visual Studio 2010

GTX 460 2 GB

Core Quad Q6600 6 GB

Windows 7 Professional x64[/i]

But the application crashed, and I determined that the system can allocate only about 220 MB of pinned memory!

The same result using x64 compilation configuration.

How it can be? I know about this issue:

  • The maximum size of a single memory allocation created by cudaMalloc or cuMemAlloc on WDDM devices is limited to:

    MIN ( ( System Memory Size in MB - 512 MB ) / 2, PAGING_BUFFER_SEGMENT_SIZE )

    For Vista, PAGING_BUFFER_SEGMENT_SIZE is approximately 2GB.

But 220 MB is more less than 2 GB.

Can I increase maximum size of available pinned memory? May be using Windows configuration tuning, or using another video driver, or compilation parameters? Thanks!

I had this configuration:

[i]CUDA 4.0

MS Visual Studio 2010

GTX 460 2 GB

Core Quad Q6600 3 GB

Windows 7 Professional x32[/i]

I used large arrays of page-locked memory like this:

float* R;

cutilSafeCall(cudaHostAlloc( (void**)&R, x_size * y_size * z_size * sizeof(float), 0 ));

The system can allocate about 700 MB of memory for the array.

OK, then I added some memory and install Windows 7 x64, so I have the next configuration:

[i]CUDA 4.0

MS Visual Studio 2010

GTX 460 2 GB

Core Quad Q6600 6 GB

Windows 7 Professional x64[/i]

But the application crashed, and I determined that the system can allocate only about 220 MB of pinned memory!

The same result using x64 compilation configuration.

How it can be? I know about this issue:

  • The maximum size of a single memory allocation created by cudaMalloc or cuMemAlloc on WDDM devices is limited to:

    MIN ( ( System Memory Size in MB - 512 MB ) / 2, PAGING_BUFFER_SEGMENT_SIZE )

    For Vista, PAGING_BUFFER_SEGMENT_SIZE is approximately 2GB.

But 220 MB is more less than 2 GB.

Can I increase maximum size of available pinned memory? May be using Windows configuration tuning, or using another video driver, or compilation parameters? Thanks!

I think you are wasting your time… just move on unix/linux. I had a similar problem on a machine with Win7 Ultimate x64, CUDA 4.0 and 18G RAM. After moving to Ubuntu everything is working just fine.
Please post a message if you solve the problem on windows.

No idea what’s going on there. Maybe you could try modding your card to use a TCC driver?