..
给platform重载一个operator<<
platform定义
- The platform class provides an interface to an OpenCL platform.
如果你的机器上安装了2个OpenCL的实现,即OpenCLSDK,则会有 2 个platform。 OpenCL 提供的 cl_platform_id
来表示 platform。
获取platform
再次提醒一下,OpenCL这个系列以 boost.compute
的 API为主,基本不使用 OpenCL 的原生API。
在 <boost/compute/system.hpp>
中,提供获取platform的方法。
static std::vector< platform > platforms();
static size_t platform_count();
如
for(const auto &platform : boost::compute::system::platforms()){
std::cout << platform.name() << std::endl;
}
重载 operator « 方法
如果每次想查看 platform 的基本信息,这样输出太繁杂。 算了, 不管杂不杂吧, 我就想给他重载一个operator。
// 给 namespace boost::compute 添加 打印 platform 信息的方法
namespace boost {
namespace compute {
// 重载 operator << , 方便打印。
std::ostream& operator << (std::ostream& os, const platform& pf) {
static size_t pre_blank = 25;
static size_t end_blank = 35;
// platform ID
os.width(pre_blank);
os << "platform id : ";
os.width(end_blank);
os << pf.id() << "\n";
// platform name
os.width(pre_blank);
os << "platform name : ";
os.width(end_blank);
os << pf.name() << "\n";
// platform vendor
os.width(pre_blank);
os << "platform vendor : ";
os.width(end_blank);
os << pf.vendor() << "\n";
// platform profile
os.width(pre_blank);
os << "platform profile : ";
os.width(end_blank);
os << pf.profile() << "\n";
// platform version
os.width(pre_blank);
os << "platform version : ";
os.width(end_blank);
os << pf.version() << "\n";
// platform extensions
os.width(pre_blank);
os << "platform extensions : ";
os.width(end_blank);
for(auto& e : pf.extensions()) {
os.width(0);
os << e << " ";
}
os << "\n";
// platform device count
os.width(pre_blank);
os << "platform device count : ";
os.width(end_blank);
os<< pf.device_count() << "\n";
return os;
}
}
}
下次在想看看 platform 信息的时候, 这样:
std::cout << platform_obj << std::endl;
好了,platform
就了解到这里。
更多方法去这里找。 1