Hello, The current trunk creates some OS devices for Cuda, NVML, AMD OpenCL, and GL objects. All of these use the subtype GPU. For the record, the other types are Block, Net, OpenFabrics and DMA.
The "mic" branch creates similar objects for each Xeon Phi, but Intel would kill me if I use the GPU type for them :) So I added a new Co-Processor type instead (could be Accelerator). But that raises the question of using that type instead of "GPU" for CUDA devices. For OpenCL, it's even harder. We currently only support AMD GPUs in our OpenCL code. But OpenCL also supports some CPUs and Accelerators. Whenever OpenCL supports the MIC from the host, it will likely be an accelerator device from the OpenCL point of view. And hwloc would also call it an coprocessor/accelerator. (we could have hwloc devices for CPU OpenCL devices too. Having an accelerator/co-proc inside a socket may look strange...) hwloc view of all these devices with the current scheme: * GPU: cuda0, nvml0, opencl0d0 (amd), :0.0 * Co-Proc: mic0, opencl1d0 (mic) Cons: Tesla is not really a GPU anymore. NVIDIA might release non-GPU CUDA-capable devices in the future. Cons: opencl devices have different types, not sure how much it matters if we change CUDA and OpenCL into Co-Proc: * GPU: nvml0?, :0.0 * Co-Proc: cuda0, opencl0d0 (amd), opencl1d0 (mic), mic0 Not sure about nvml0 because it may at some point be generalized to non-GPU NIVIDIA devices. It may deserve a special "Misc" type. Brice