MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / make_gpu_buft_list

Function make_gpu_buft_list

subprojects/llama.cpp/src/llama-model.cpp:389–431  ·  view source on GitHub ↗

GPU: split if LLAMA_SPLIT_MODE_ROW -> GPU

Source from the content-addressed store, hash-verified

387
388// GPU: split if LLAMA_SPLIT_MODE_ROW -> GPU
389static buft_list_t make_gpu_buft_list(ggml_backend_dev_t dev, llama_split_mode split_mode, const float * tensor_split) {
390 buft_list_t buft_list;
391
392 // add the device split buffer type if requested and available
393 if (split_mode == LLAMA_SPLIT_MODE_ROW) {
394 ggml_backend_reg_t reg = ggml_backend_dev_backend_reg(dev);
395 auto ggml_backend_split_buffer_type_fn = (ggml_backend_split_buffer_type_t)
396 ggml_backend_reg_get_proc_address(reg, "ggml_backend_split_buffer_type");
397 if (ggml_backend_split_buffer_type_fn) {
398 size_t dev_index = [&]() {
399 auto * reg = ggml_backend_dev_backend_reg(dev);
400 for (size_t i = 0; i < ggml_backend_reg_dev_count(reg); ++i) {
401 if (ggml_backend_reg_dev_get(reg, i) == dev) {
402 return i;
403 }
404 }
405 throw std::runtime_error(format("device %s not found in its backend reg", ggml_backend_dev_name(dev)));
406 }();
407 auto * buft = ggml_backend_split_buffer_type_fn(dev_index, tensor_split);
408 if (buft != nullptr) {
409 buft_list.emplace_back(dev, buft);
410 }
411 }
412 }
413
414 // add the device default buffer type
415 buft_list.emplace_back(dev, ggml_backend_dev_buffer_type(dev));
416
417 // add the device extra buffer type (if any)
418 ggml_backend_reg_t reg = ggml_backend_dev_backend_reg(dev);
419 auto ggml_backend_dev_get_extra_bufts_fn = (ggml_backend_dev_get_extra_bufts_t)
420 ggml_backend_reg_get_proc_address(reg, "ggml_backend_dev_get_extra_bufts");
421
422 if (ggml_backend_dev_get_extra_bufts_fn) {
423 ggml_backend_buffer_type_t * extra_bufts = ggml_backend_dev_get_extra_bufts_fn(dev);
424 while (extra_bufts && *extra_bufts) {
425 buft_list.emplace_back(dev, *extra_bufts);
426 ++extra_bufts;
427 }
428 }
429
430 return buft_list;
431}
432
433struct llama_model::impl {
434 impl() = default;

Callers 1

load_tensorsMethod · 0.85

Calls 7

ggml_backend_reg_dev_getFunction · 0.85
formatFunction · 0.85
ggml_backend_dev_nameFunction · 0.85

Tested by

no test coverage detected