mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +02:00
ircd:🆑 Add interface for plat/dev info dump w/ console cmd.
This commit is contained in:
parent
8233cf1db3
commit
d0c9a16770
3 changed files with 68 additions and 6 deletions
|
@ -35,6 +35,10 @@ namespace ircd::cl
|
|||
|
||||
string_view reflect_error(const int code) noexcept;
|
||||
|
||||
void log_dev_info(const uint platform_id, const uint device_id);
|
||||
void log_dev_info(const uint platform_id);
|
||||
void log_dev_info();
|
||||
|
||||
void flush();
|
||||
void sync();
|
||||
}
|
||||
|
|
35
ircd/cl.cc
35
ircd/cl.cc
|
@ -21,7 +21,6 @@ namespace ircd::cl
|
|||
template<class T = string_view, class F, class id0, class id1, class param> static T info(F&&, const id0 &, const id1 &, const param &, const mutable_buffer &);
|
||||
|
||||
static uint query_warp_size(cl_context, cl_device_id);
|
||||
static void dump_device_info(const uint i, const uint j);
|
||||
}
|
||||
|
||||
// Runtime state
|
||||
|
@ -234,9 +233,7 @@ ircd::cl::init::init()
|
|||
throw_on_error(err);
|
||||
|
||||
// Dump device details to infolog
|
||||
for(size_t i(0); i < platforms; ++i)
|
||||
for(size_t j(0); j < devices[i]; ++j)
|
||||
dump_device_info(i, j);
|
||||
log_dev_info();
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
|
@ -306,9 +303,35 @@ noexcept
|
|||
}
|
||||
|
||||
void
|
||||
ircd::cl::dump_device_info(const uint i,
|
||||
const uint j)
|
||||
ircd::cl::log_dev_info()
|
||||
{
|
||||
for(size_t i(0); i < platforms; ++i)
|
||||
log_dev_info(i);
|
||||
}
|
||||
|
||||
void
|
||||
ircd::cl::log_dev_info(const uint i)
|
||||
{
|
||||
if(unlikely(i >= PLATFORM_MAX))
|
||||
throw std::out_of_range
|
||||
{
|
||||
"Invalid platform identifier."
|
||||
};
|
||||
|
||||
for(size_t j(0); j < devices[i]; ++j)
|
||||
log_dev_info(i, j);
|
||||
}
|
||||
|
||||
void
|
||||
ircd::cl::log_dev_info(const uint i,
|
||||
const uint j)
|
||||
{
|
||||
if(unlikely(i >= PLATFORM_MAX || j >= DEVICE_MAX))
|
||||
throw std::out_of_range
|
||||
{
|
||||
"Invalid platform or device identifier."
|
||||
};
|
||||
|
||||
const auto &dev
|
||||
{
|
||||
device[i][j]
|
||||
|
|
|
@ -17298,6 +17298,41 @@ console_cmd__app__signal(opt &out, const string_view &line)
|
|||
return true;
|
||||
}
|
||||
|
||||
//
|
||||
// cl
|
||||
//
|
||||
|
||||
bool
|
||||
console_cmd__cl__info(opt &out, const string_view &line)
|
||||
{
|
||||
const params param{line, " ",
|
||||
{
|
||||
"platform", "device",
|
||||
}};
|
||||
|
||||
const int platform
|
||||
{
|
||||
param.at("platform", -1)
|
||||
};
|
||||
|
||||
const int device
|
||||
{
|
||||
param.at("device", -1)
|
||||
};
|
||||
|
||||
if(platform >= 0 && device >= 0)
|
||||
cl::log_dev_info(platform, device);
|
||||
else if(platform >= 0)
|
||||
cl::log_dev_info(platform);
|
||||
else
|
||||
cl::log_dev_info();
|
||||
|
||||
out
|
||||
<< "OpenCL information written to logger."
|
||||
<< std::endl;
|
||||
return true;
|
||||
}
|
||||
|
||||
//
|
||||
// gpt
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue