@@ -38,8 +38,15 @@ using namespace cl::sycl;
38
38
* found on the system:
39
39
* - info::platform::name
40
40
* - info::platform::version
41
+ * - info::platform::vendor
41
42
* - info::platform::profile
43
+ * - backend (opencl, cuda, level-zero, host)
44
+ * - number of devices on the platform
42
45
*
46
+ * Additionally, for each device we print out:
47
+ * - info::device::name
48
+ * - info::device::driver_version
49
+ * - type of the device based on the aspects cpu, gpu, accelerator.
43
50
*/
44
51
void DPPLPlatform_DumpInfo ()
45
52
{
@@ -51,14 +58,54 @@ void DPPLPlatform_DumpInfo ()
51
58
std::cout << " ---Platform " << i << ' \n ' ;
52
59
std::stringstream ss;
53
60
61
+ auto vendor = p.get_info <info::platform::vendor>();
62
+ if (vendor.empty ())
63
+ vendor = " unknown" ;
64
+
54
65
ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Name"
55
66
<< p.get_info <info::platform::name>() << ' \n ' ;
56
67
ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Version"
57
68
<< p.get_info <info::platform::version>() << ' \n ' ;
58
69
ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Vendor"
59
- << p. get_info <info::platform:: vendor>() << ' \n ' ;
70
+ << vendor << ' \n ' ;
60
71
ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Profile"
61
72
<< p.get_info <info::platform::profile>() << ' \n ' ;
73
+ ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Backend" ;
74
+ p.is_host () ? (ss << " unknown" ) : (ss << p.get_backend ());
75
+ ss << ' \n ' ;
76
+
77
+ // Get number of devices on the platform
78
+ auto devices = p.get_devices ();
79
+
80
+ ss << std::setw (4 ) << " " << std::left << std::setw (12 ) << " Devices"
81
+ << devices.size () << ' \n ' ;
82
+ // Print some of the device information
83
+ for (auto dn = 0ul ; dn < devices.size (); ++dn) {
84
+ ss << std::setw (4 ) << " ---Device " << dn << ' \n ' ;
85
+ ss << std::setw (8 ) << " " << std::left << std::setw (20 )
86
+ << " Name" << devices[dn].get_info <info::device::name>() << ' \n ' ;
87
+ ss << std::setw (8 ) << " " << std::left << std::setw (20 )
88
+ << " Driver version"
89
+ << devices[dn].get_info <info::device::driver_version>() << ' \n ' ;
90
+ ss << std::setw (8 ) << " " << std::left << std::setw (20 )
91
+ << " Device type" ;
92
+
93
+ try {
94
+ if (devices[dn].has (aspect::accelerator))
95
+ ss << " accelerator" << ' \n ' ;
96
+ else if (devices[dn].has (aspect::cpu))
97
+ ss << " cpu" << ' \n ' ;
98
+ else if (devices[dn].has (aspect::custom))
99
+ ss << " custom" << ' \n ' ;
100
+ else if (devices[dn].has (aspect::gpu))
101
+ ss << " gpu" << ' \n ' ;
102
+ else if (devices[dn].has (aspect::host))
103
+ ss << " host" << ' \n ' ;
104
+ } catch (runtime_error re) {
105
+ // \todo handle errors
106
+ ss << " unknown\n " ;
107
+ }
108
+ }
62
109
63
110
std::cout << ss.str ();
64
111
++i;
0 commit comments