Open MPI logo

Hardware Locality Users' Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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))

(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?