| 55 | } |
| 56 | |
| 57 | int parse_backend_device_id(const std::string & logical_name) { |
| 58 | if (logical_name.empty()) return -1; |
| 59 | size_t end = logical_name.size(); |
| 60 | while (end > 0 && std::isspace((unsigned char)logical_name[end - 1])) { |
| 61 | --end; |
| 62 | } |
| 63 | size_t begin = end; |
| 64 | while (begin > 0 && std::isdigit((unsigned char)logical_name[begin - 1])) { |
| 65 | --begin; |
| 66 | } |
| 67 | if (begin == end) return -1; |
| 68 | return std::atoi(logical_name.substr(begin, end - begin).c_str()); |
| 69 | } |
| 70 | |
| 71 | int current_device_id() { |
| 72 | #if defined(LUCE_BACKEND_CUDA) || defined(LUCE_BACKEND_HIP) || defined(GGML_USE_HIP) |
no test coverage detected