@@ -299,6 +299,10 @@ static buft_list_t make_cpu_buft_list(const std::vector<ggml_backend_dev_t> & de
299
299
// add extra buffer types, only if no GPU device is present
300
300
// ref: https://github.com/ggml-org/llama.cpp/issues/12481#issuecomment-2743136094
301
301
auto * cpu_dev = ggml_backend_dev_by_type(GGML_BACKEND_DEVICE_TYPE_CPU);
302
+ if (cpu_dev == nullptr) {
303
+ throw std::runtime_error(format("%s: no CPU backend found", __func__));
304
+ }
305
+
302
306
auto * cpu_reg = ggml_backend_dev_backend_reg(cpu_dev);
303
307
auto ggml_backend_dev_get_extra_bufts_fn = (ggml_backend_dev_get_extra_bufts_t)
304
308
ggml_backend_reg_get_proc_address(cpu_reg, "ggml_backend_dev_get_extra_bufts");
@@ -1484,6 +1488,9 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
1484
1488
}
1485
1489
1486
1490
ggml_backend_dev_t cpu_dev = ggml_backend_dev_by_type(GGML_BACKEND_DEVICE_TYPE_CPU);
1491
+ if (cpu_dev == nullptr) {
1492
+ throw std::runtime_error(format("%s: no CPU backend found", __func__));
1493
+ }
1487
1494
const int i_gpu_start = std::max((int) hparams.n_layer - n_gpu_layers, (int) 0);
1488
1495
const int act_gpu_layers = devices.empty() ? 0 : std::min(n_gpu_layers, (int)n_layer + 1);
1489
1496
auto get_layer_buft_list = [&](int il) -> llama_model::impl::layer_dev {
@@ -1672,6 +1679,9 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
1672
1679
auto * buft_dev = ggml_backend_buft_get_device(buft);
1673
1680
if (ml.use_mmap && buft_dev && buft == ggml_backend_dev_host_buffer_type(buft_dev)) {
1674
1681
auto * cpu_dev = ggml_backend_dev_by_type(GGML_BACKEND_DEVICE_TYPE_CPU);
1682
+ if (!cpu_dev) {
1683
+ throw std::runtime_error("no CPU backend found");
1684
+ }
1675
1685
buft = ggml_backend_dev_buffer_type(cpu_dev);
1676
1686
}
1677
1687
@@ -4122,6 +4132,9 @@ bool llama_model::load_tensors(llama_model_loader & ml) {
4122
4132
if (!dev) {
4123
4133
// FIXME: workaround for CPU backend buft having a NULL device
4124
4134
dev = ggml_backend_dev_by_type(GGML_BACKEND_DEVICE_TYPE_CPU);
4135
+ if (!dev) {
4136
+ throw std::runtime_error(format("%s: no CPU backend found", __func__));
4137
+ }
4125
4138
}
4126
4139
ggml_backend_dev_props props;
4127
4140
ggml_backend_dev_get_props(dev, &props);
0 commit comments