deviceQuery only shows one GPU

I successfully installed the CUDA drivers and development kit on a MacBook Pro. This laptop has two graphics cards:

  • NVIDIA GeForce 9400M (used for the display), and
  • NVIDIA GeForce 9600M GT (hopefully to be used for computation with CUDA).

I was able to compile deviceQuery and its output is at the bottom of this text. Basically, it sees the 9400M, but not the 9600M GT. I am not very familiar with how macs handle hardware and I don’t know how to get CUDA to see the other GPU.

Any help would be very appreciated. Below is the output from deviceQuery:

CUDA Device Query (Runtime API) version (CUDART static linking)

Found 1 CUDA Capable device(s)

Device 0: “GeForce 9400M”
CUDA Driver Version / Runtime Version 4.0 / 4.0
CUDA Capability Major/Minor version number: 1.1
Total amount of global memory: 254 MBytes (265945088 bytes)
( 2) Multiprocessors x ( 8) CUDA Cores/MP: 16 CUDA Cores
GPU Clock Speed: 1.10 GHz
Memory Clock rate: 1075.00 Mhz
Memory Bus Width: 128-bit
Max Texture Dimension Size (x,y,z) 1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048)
Max Layered Texture Size (dim) x layers 1D=(8192) x 512, 2D=(8192,8192) x 512
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
Texture alignment: 256 bytes
Concurrent copy and execution: No with 0 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Concurrent kernel execution: No
Alignment requirement for Surfaces: Yes
Device has ECC support enabled: No
Device is using TCC driver mode: No
Device supports Unified Addressing (UVA): No
Device PCI Bus ID / PCI location ID: 3 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 4.0, CUDA Runtime Version = 4.0, NumDevs = 1, Device = GeForce 9400M
[deviceQuery] test results…
PASSED

I successfully installed the CUDA drivers and development kit on a MacBook Pro. This laptop has two graphics cards:

  • NVIDIA GeForce 9400M (used for the display), and
  • NVIDIA GeForce 9600M GT (hopefully to be used for computation with CUDA).

I was able to compile deviceQuery and its output is at the bottom of this text. Basically, it sees the 9400M, but not the 9600M GT. I am not very familiar with how macs handle hardware and I don’t know how to get CUDA to see the other GPU.

Any help would be very appreciated. Below is the output from deviceQuery:

CUDA Device Query (Runtime API) version (CUDART static linking)

Found 1 CUDA Capable device(s)

Device 0: “GeForce 9400M”
CUDA Driver Version / Runtime Version 4.0 / 4.0
CUDA Capability Major/Minor version number: 1.1
Total amount of global memory: 254 MBytes (265945088 bytes)
( 2) Multiprocessors x ( 8) CUDA Cores/MP: 16 CUDA Cores
GPU Clock Speed: 1.10 GHz
Memory Clock rate: 1075.00 Mhz
Memory Bus Width: 128-bit
Max Texture Dimension Size (x,y,z) 1D=(8192), 2D=(65536,32768), 3D=(2048,2048,2048)
Max Layered Texture Size (dim) x layers 1D=(8192) x 512, 2D=(8192,8192) x 512
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
Texture alignment: 256 bytes
Concurrent copy and execution: No with 0 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: Yes
Support host page-locked memory mapping: Yes
Concurrent kernel execution: No
Alignment requirement for Surfaces: Yes
Device has ECC support enabled: No
Device is using TCC driver mode: No
Device supports Unified Addressing (UVA): No
Device PCI Bus ID / PCI location ID: 3 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 4.0, CUDA Runtime Version = 4.0, NumDevs = 1, Device = GeForce 9400M
[deviceQuery] test results…
PASSED

The 9600M GT gets powered down if the 9400M is used, so that it isn’t available for CUDA. There are (at least) two ways to power the 9600M GT up again, both by selecting it for video output:

    Go to “Energy Saver” in the System Preferences and select “HigherPerformance” (which will require you to log out for the change to happen).

    Use gfxCardStatus to switch GPUs.

If you find a way to run CUDA on the 9600M without selecting it for display, I’d be interested myself. Another forum thread gives some hints on how to achieve this, but I’ve not yet tried myself.

The 9600M GT gets powered down if the 9400M is used, so that it isn’t available for CUDA. There are (at least) two ways to power the 9600M GT up again, both by selecting it for video output:

    Go to “Energy Saver” in the System Preferences and select “HigherPerformance” (which will require you to log out for the change to happen).

    Use gfxCardStatus to switch GPUs.

If you find a way to run CUDA on the 9600M without selecting it for display, I’d be interested myself. Another forum thread gives some hints on how to achieve this, but I’ve not yet tried myself.

Depending on Mac OS X version, availability of GPGPU resources differs on GeForce9400M+9600M GT MacBook Pro.
On latest Mac OS X version, 9600M GT is available even if put on “better battery life” system (on System > Preferences > Energy Saver). It was not the case on older version of OS X 10.6

What do you do to have the 9600M GT available in “better battery life” mode on 10.6.8? It does’t show up with deviceQuery for me.

That’s right, on 10.6.8, but it wasn’t time ago, and “Better battery setting” was the best to have highest performance on either GeForce 9400M and GeForce 9600M GT!

For example these tests I have done on 10.6.2:
http://blog.cudachess.org/2010/03/opencl-performance-surprise-on-macbook-pro/

:)

Oh, I hadn’t expected 10.6.2 to be designated ‘latest Mac OS X version’. Would be nice though if someone found a way to use the 9600M for CUDA exclusively.