Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#996 closed Defect (wontfix)

BOINC doesn't detect NVIDIA GPU on new macbook pros

Reported by: MattArsenault Owned by: charlief
Priority: Minor Milestone: Undetermined
Component: Client - Daemon Version: 6.10.56
Keywords: GPU Macbook Cc:

Description

On the 2010 Core i5/i7 Macbook Pros, there is a discrete Nvidia GPU and intel integrated graphics which OS X switches between depending on applications which make use of it to save power. I believe it determines this by checking which applications link against CoreAnimation?, although there is a way to query the graphics available.

If the Intel card is running, doesn't detect the Nvidia card and BOINC reports no usable GPUs found. If you run something else to bring up the Nvidia card, BOINC detects it and uses it.

The previous generation of Macbook pros also had 2 video cards, but they were both usable Nvidia cards. One was more powerful, but required logging out to switch between them. It might be useful if 2 GPUs are detected, to recommend switching to the more powerful one for running BOINC.

Other new laptops are also getting similar multi-GPU setups, and may also be effected by this problem.

I don't really know Objective C and I'm not familiar with the OS X APIs, but there is currently a project which detects the currently running GPU, and allows forceable switching at http://github.com/codykrieger/gfxCardStatus, which may be a useful reference if somebody who knows about OS X development wants to try fixing this.

Change History (5)

comment:1 Changed 14 years ago by Ageless

Component: ManagerClient - Daemon
Keywords: GPU, MacbookGPU Macbook
Owner: changed from romw to charlief

comment:2 Changed 14 years ago by charlief

A possible workaround is to set the MacBook? to always use the NVIDIA GPU as described here.

comment:3 Changed 14 years ago by charlief

Resolution: wontfix
Status: newclosed

We don't know of a simple way to fix this automatically that will continue to work for future versions of Apple's hardware and software. Not only would the BOINC client need to set the GPU to NVIDIA so it can detect it, all GPU project applications would also need to somehow trigger a switch to the NVIDIA GPU.

Though it is less than an ideal solution, I have added information to the GPU Wiki page about ways to manually switch to the NVIDIA GPU.

comment:4 Changed 14 years ago by MattArsenault

If someone isn't aware of this, it could be worked around simply by having the BOINC manager link against the OpenGL framework, i.e. compile with -framework OpenGL. Currently it starts the card if anything links against GL.

comment:5 Changed 14 years ago by charlief

"it could be worked around simply by having the BOINC manager link against the OpenGL framework"

Unfortunately, there are a few problems with that. First, it is the BOINC Client, not the Manager, that needs to check for GPU availability. While the Manager does launch the client in a standard installation, this won't take care of situations where the Client is configured to be launched as a daemon at system startup.

Also, the NVIDIA GPU would remain selected until the manager quits, even if there are no GPU-capable project applications running. When running on batteries, the default settings are for BOINC to suspend computation to save battery power, but the NVIDIA GPU would remain selected, draining the batteries for no reason.

Note: See TracTickets for help on using tickets.