20 #include <hwloc/autogen/config.h> 21 #include <hwloc/helper.h> 22 #ifdef HWLOC_LINUX_SYS 23 #include <hwloc/linux.h> 46 static __hwloc_inline
int 48 CUdevice cudevice,
int *domain,
int *bus,
int *dev)
52 #if CUDA_VERSION >= 4000 53 cres = cuDeviceGetAttribute(domain, CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID, cudevice);
54 if (cres != CUDA_SUCCESS) {
61 cres = cuDeviceGetAttribute(bus, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice);
62 if (cres != CUDA_SUCCESS) {
66 cres = cuDeviceGetAttribute(dev, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice);
67 if (cres != CUDA_SUCCESS) {
91 static __hwloc_inline
int 95 #ifdef HWLOC_LINUX_SYS 97 #define HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX 128 98 char path[HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX];
100 int domainid, busid, deviceid;
110 sprintf(path,
"/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", domainid, busid, deviceid);
111 sysfile = fopen(path,
"r");
140 int domain, bus, dev;
165 int domain, bus, dev;
173 if (strncmp(osdev->
name,
"cuda", 4))
209 && !strncmp(
"cuda", osdev->
name, 4)
210 && atoi(osdev->
name + 4) == (
int) idx)
unsigned char bus
Definition: hwloc.h:544
static hwloc_obj_t hwloc_cuda_get_device_osdev_by_index(hwloc_topology_t topology, unsigned idx)
Get the hwloc OS device object corresponding to the CUDA device whose index is idx.
Definition: cuda.h:203
int hwloc_linux_parse_cpumap_file(FILE *file, hwloc_cpuset_t set)
Convert a linux kernel cpumap file file into hwloc CPU set.
unsigned char dev
Definition: hwloc.h:544
char * name
Object-specific name if any. Mostly used for identifying OS devices and Misc objects where a name str...
Definition: hwloc.h:366
static hwloc_obj_t hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
Get the next OS device in the system.
Definition: helper.h:1252
void hwloc_bitmap_copy(hwloc_bitmap_t dst, hwloc_const_bitmap_t src)
Copy the contents of bitmap src into the already allocated bitmap dst.
unsigned char func
Definition: hwloc.h:544
static hwloc_obj_t hwloc_cuda_get_device_pcidev(hwloc_topology_t topology, CUdevice cudevice)
Get the hwloc PCI device object corresponding to the CUDA device cudevice.
Definition: cuda.h:138
static int hwloc_cuda_get_device_pci_ids(hwloc_topology_t topology, CUdevice cudevice, int *domain, int *bus, int *dev)
Return the domain, bus and device IDs of the CUDA device cudevice.
Definition: cuda.h:47
unsigned short domain
Definition: hwloc.h:543
struct hwloc_obj * parent
Parent, NULL if root (system object)
Definition: hwloc.h:403
union hwloc_obj_attr_u * attr
Object type-specific Attributes, may be NULL if no attribute value was found.
Definition: hwloc.h:373
static int hwloc_cuda_get_device_cpuset(hwloc_topology_t topology, CUdevice cudevice, hwloc_cpuset_t set)
Get the CPU set of logical processors that are physically close to device cudevice.
Definition: cuda.h:92
struct hwloc_obj_attr_u::hwloc_osdev_attr_s osdev
hwloc_obj_type_t type
Type of object.
Definition: hwloc.h:360
Operating system co-processor device. For instance "mic0" for a Xeon Phi (MIC) on Linux...
Definition: hwloc.h:297
int hwloc_bitmap_iszero(hwloc_const_bitmap_t bitmap)
Test whether bitmap bitmap is empty.
static hwloc_obj_t hwloc_get_pcidev_by_busid(hwloc_topology_t topology, unsigned domain, unsigned bus, unsigned dev, unsigned func)
Find the PCI device object matching the PCI bus id given domain, bus device and function PCI bus id...
Definition: helper.h:1215
static hwloc_obj_t hwloc_cuda_get_device_osdev(hwloc_topology_t topology, CUdevice cudevice)
Get the hwloc OS device object corresponding to CUDA device cudevice.
Definition: cuda.h:162
struct hwloc_obj_attr_u::hwloc_pcidev_attr_s pcidev
Structure of a topology object.
Definition: hwloc.h:358
hwloc_bitmap_t hwloc_cpuset_t
A CPU set is a bitmap whose bits are set according to CPU physical OS indexes.
Definition: hwloc.h:132
hwloc_obj_osdev_type_t type
Definition: hwloc.h:567
static hwloc_const_cpuset_t hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
Get complete CPU set.
Definition: helper.h:803
int hwloc_topology_is_thissystem(hwloc_topology_t restrict topology)
Does the topology context come from this system?
PCI device. These objects have neither CPU sets nor node sets. They are not added to the topology unl...
Definition: hwloc.h:246
struct hwloc_topology * hwloc_topology_t
Topology context.
Definition: hwloc.h:633