If I remember correctly, NVIDIA or AMD proprietary drivers cannot use the kernel sysfs API because it's GPL-only. They can't create devices in sysfs, that's why hwloc doesn't get any GPU OS device with NVIDIA.

card* and controlD64 is what we get with opensource DRM drivers that use the sysfs/drm kernel API. But I don't expect people to do much with them as long as there's no way for an application to know if it's using card0 or card1. That's why there's a NVIDIA specific plugin using NVCtrl: you give a display such as :0.0, it returns the locality of the PCI device running it.


Le 03/05/2013 22:38, Guy Streeter a écrit :
The short answer to this may be that my Nvidia driver is too old. My Nvidia
card is old so I have to use the version 173 proprietary driver on it, but the
latest nouveau driver works fine.

I'm on Fedora 18, testing hwloc-1.7. I fetched and built the latest
libXNVCtrl, 319.17, from ftp://download.nvidia.com/XFree86/nvidia-settings.
The one shipped with Fedora is too old and hwloc will not build with it.

When I have the nvidia proprietary driver installed, it does not show as an OS
device. Here's the end of the tests/hwloc_iodevs output:

Found 3 OS devices
 Found OS device em1 subtype 2
 Found OS device sda subtype 0
 Found OS device sr0 subtype 0

with the open-source nouveau driver loaded, it looks like this:

Found 5 OS devices
 Found OS device card0 subtype 1
 Found OS device controlD64 subtype 1
 Found OS device em1 subtype 2
 Found OS device sda subtype 0
 Found OS device sr0 subtype 0

The card0 and controlD64 objects have no infos associated with them.

There are no other differences in the output. Both drivers seem operational.
I've attached the gather-topology output (created with the nvidia driver
loaded) in case anyone wants to see it.


hwloc-devel mailing list