Open MPI logo

Hardware Locality Users' Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Users mailing list

Subject: Re: [hwloc-users] OpenGL GPU detection code
From: Brice Goglin (Brice.Goglin_at_[hidden])
Date: 2013-02-14 17:13:38


Le 14/02/2013 20:44, Stefan Eilemann a écrit :
>> Isn't it possible to have a single X server with a NVIDIA
>> board driving :0.0 and a non-NVIDIA board driving :0.1 ?
> Good question. I haven't seen this, so I've got no clue if one would get the union or intersection of extensions. Maybe it's not even possible?

On our server with 3 NVIDIA GPUs, I tried enabling the embedded matrox
board with the vesa driver. I get a single server with all NVIDIA
extensions (likely the union, then). Everything works fine as long as I
ignore this additional screen.

But your code (and the current SVN one) aborts saying this when
XNVCTRLQueryTargetBinaryData is called on the vesa screen:

X Error of failed request: BadMatch (invalid parameter attributes)
  Major opcode of failed request: 139 (NV-CONTROL)
  Minor opcode of failed request: 20 ()
  Serial number of failed request: 57
  Current serial number in output stream: 57

Fortunately, NVCtrl offers a function to check whether a given screen is
managed by the NVIDIA driver. Adding this before the Query call fixes
the problem.

if (!XNVCTRLIsNvScreen(display, screen))
  continue

(and this also works if the vesa screen isn't the last one).

So I think we're good here? I am going to commit things tomorrow.

By the way, did you check hwloc/gl.h to see if it offers what you need?
Still no idea if we should call all this "gl" or "display" or "X11" or
something else?

Brice