MCPcopy Create free account
hub / github.com/AdaptiveCpp/AdaptiveCpp / backend_manager

Method backend_manager

src/runtime/backend.cpp:24–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22namespace rt {
23
24backend_manager::backend_manager()
25 : _hw_model(std::make_unique<hw_model>(this)),
26 _kernel_cache{kernel_cache::get()}
27{
28
29 _loader.query_backends();
30
31 for (std::size_t backend_index = 0;
32 backend_index < _loader.get_num_backends(); ++backend_index) {
33
34 HIPSYCL_DEBUG_INFO << "Registering backend: '"
35 << _loader.get_backend_name(backend_index) << "'..."
36 << std::endl;
37 backend *b = _loader.create(backend_index);
38 if (b) {
39 _backends.emplace_back(std::unique_ptr<backend>(b));
40 } else {
41 HIPSYCL_DEBUG_ERROR << "backend_manager: Backend creation failed" << std::endl;
42 }
43 }
44
45 this->for_each_backend([](backend *b) {
46 HIPSYCL_DEBUG_INFO << "Discovered devices from backend '" << b->get_name()
47 << "': " << std::endl;
48 backend_hardware_manager* hw_manager = b->get_hardware_manager();
49 if(hw_manager->get_num_devices() == 0) {
50 HIPSYCL_DEBUG_INFO << " <no devices>" << std::endl;
51 } else {
52 for(std::size_t i = 0; i < hw_manager->get_num_devices(); ++i){
53 hardware_context* hw = hw_manager->get_device(i);
54
55 HIPSYCL_DEBUG_INFO << " device " << i << ": " << std::endl;
56 HIPSYCL_DEBUG_INFO << " vendor: " << hw->get_vendor_name() << std::endl;
57 HIPSYCL_DEBUG_INFO << " name: " << hw->get_device_name() << std::endl;
58 }
59 }
60 });
61
62 if(std::none_of(_backends.cbegin(), _backends.cend(),
63 [](const std::unique_ptr<backend>& b){
64 return b->get_hardware_platform() == hardware_platform::cpu;
65 }))
66 {
67 HIPSYCL_DEBUG_ERROR << "No CPU backend has been loaded. Terminating." << std::endl;
68 std::terminate();
69 }
70}
71
72backend_manager::~backend_manager()
73{

Callers

nothing calls this directly

Calls 15

for_each_backendMethod · 0.95
getFunction · 0.85
query_backendsMethod · 0.80
get_backend_nameMethod · 0.80
emplace_backMethod · 0.80
none_ofFunction · 0.50
get_num_backendsMethod · 0.45
createMethod · 0.45
get_nameMethod · 0.45
get_hardware_managerMethod · 0.45
get_num_devicesMethod · 0.45
get_deviceMethod · 0.45

Tested by

no test coverage detected