[clinfo] 105/148: Device Topology (NV) traits
Andreas Beckmann
anbe at moszumanska.debian.org
Mon Nov 17 14:09:52 UTC 2014
This is an automated email from the git hooks/post-receive script.
anbe pushed a commit to branch clinfo
in repository clinfo.
commit eeaf870eedfcd0fd87774ec46c1119a0325192fb
Author: Giuseppe Bilotta <giuseppe.bilotta at gmail.com>
Date: Tue Nov 4 20:29:01 2014 +0100
Device Topology (NV) traits
---
src/clinfo.c | 80 ++++++++++++++++++++++++++++++++++++++++++------------------
1 file changed, 56 insertions(+), 24 deletions(-)
diff --git a/src/clinfo.c b/src/clinfo.c
index 1460cb6..27d24ba 100644
--- a/src/clinfo.c
+++ b/src/clinfo.c
@@ -512,6 +512,27 @@ int device_info_devtype(cl_device_id dev, cl_device_info param, const char *pnam
return had_error;
}
+/* stringify a cl_device_topology_amd */
+int devtopo_str(const cl_device_topology_amd *devtopo)
+{
+ switch (devtopo->raw.type) {
+ case 0:
+ snprintf(strbuf, bufsz, "(%s)", na);
+ break;
+ case CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD:
+ snprintf(strbuf, bufsz, "PCI-E, %02x:%02x.%u",
+ (cl_uchar)(devtopo->pcie.bus),
+ devtopo->pcie.device, devtopo->pcie.function);
+ break;
+ default:
+ snprintf(strbuf, bufsz, "<unknown (%u): %u %u %u %u %u>",
+ devtopo->raw.type,
+ devtopo->raw.data[0], devtopo->raw.data[1],
+ devtopo->raw.data[2],
+ devtopo->raw.data[3], devtopo->raw.data[4]);
+ }
+}
+
int device_info_devtopo_amd(cl_device_id dev, cl_device_info param, const char *pname,
const struct device_info_checks *chk)
{
@@ -519,22 +540,38 @@ int device_info_devtopo_amd(cl_device_id dev, cl_device_info param, const char *
GET_VAL;
/* TODO how to do this in CLINFO_RAW mode */
if (!had_error) {
- switch (val.raw.type) {
- case 0:
- snprintf(strbuf, bufsz, "(%s)", na);
- break;
- case CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD:
- snprintf(strbuf, bufsz, "PCI-E, %02x:%02x.%u",
- (cl_uchar)val.pcie.bus, val.pcie.device, val.pcie.function);
- break;
- default:
- snprintf(strbuf, bufsz, "<unknown (%u): %u %u %u %u %u>", val.raw.type,
- val.raw.data[0], val.raw.data[1], val.raw.data[2],
- val.raw.data[3], val.raw.data[4]);
- }
+ devtopo_str(&val);
}
printf(I1_STR "%s\n", pname, strbuf);
+}
+
+/* we assemble a cl_device_topology_amd struct from the NVIDIA info */
+int device_info_devtopo_nv(cl_device_id dev, cl_device_info param, const char *pname,
+ const struct device_info_checks *chk)
+{
+ cl_device_topology_amd devtopo;
+ cl_uint val;
+ devtopo.raw.type = CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD;
+
+ GET_VAL; /* CL_DEVICE_PCI_BUS_ID_NV */
+
+ if (!had_error) {
+ devtopo.pcie.bus = val & 0xff;
+
+ param = CL_DEVICE_PCI_SLOT_ID_NV;
+ current_param = "CL_DEVICE_PCI_SLOT_ID_NV";
+
+ GET_VAL;
+
+ if (!had_error) {
+ devtopo.pcie.device = val >> 3;
+ devtopo.pcie.function = val & 7;
+ devtopo_str(&devtopo);
+ }
+ }
+
+ printf(I1_STR "%s\n", pname, strbuf);
}
/*
@@ -567,7 +604,12 @@ struct device_info_traits dinfo_traits[] = {
{ CLINFO_BOTH, DINFO(CL_DEVICE_TYPE, "Device Type", devtype), NULL },
{ CLINFO_BOTH, DINFO(CL_DEVICE_PROFILE, "Device Profile", str), NULL },
{ CLINFO_BOTH, DINFO(CL_DEVICE_BOARD_NAME_AMD, "Device Board Name (AMD)", str), dev_has_amd },
- { CLINFO_BOTH, DINFO(CL_DEVICE_TOPOLOGY_AMD, "Device Topology (AMD)", devtopo_amd), dev_has_amd }
+ { CLINFO_BOTH, DINFO(CL_DEVICE_TOPOLOGY_AMD, "Device Topology (AMD)", devtopo_amd), dev_has_amd },
+
+ /* Device Topology (NV) is multipart, so different for HUMAN and RAW */
+ { CLINFO_HUMAN, DINFO(CL_DEVICE_PCI_BUS_ID_NV, "Device Topology (NV)", devtopo_nv), dev_has_nv },
+ { CLINFO_RAW, DINFO(CL_DEVICE_PCI_BUS_ID_NV, "Device PCI bus (NV)", int), dev_has_nv },
+ { CLINFO_RAW, DINFO(CL_DEVICE_PCI_SLOT_ID_NV, "Device PCI slot (NV)", int), dev_has_nv },
};
void
@@ -736,16 +778,6 @@ printDeviceInfo(cl_uint d)
}
}
- if (dev_has_nv(&chk)) {
- cl_uint bus, slot;
- GET_PARAM(PCI_BUS_ID_NV, bus);
- if (!had_error)
- GET_PARAM(PCI_SLOT_ID_NV, slot);
- if (!had_error)
- snprintf(strbuf, bufsz, "PCI-E, %02x:%02x.%x", bus, slot >> 3, slot & 7);
- STR_PRINT("Device Topology (NV)", strbuf);
- }
-
// compute units and clock
INT_PARAM(MAX_COMPUTE_UNITS, "Max compute units",);
if (dev_is_gpu_amd(&chk)) {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opencl/clinfo.git
More information about the Pkg-opencl-commits
mailing list