MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / create_backend

Function create_backend

smallthinker/tools/rpc/rpc-server.cpp:216–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214}
215
216static ggml_backend_t create_backend(const rpc_server_params & params) {
217 ggml_backend_t backend = nullptr;
218
219 if (!params.device.empty()) {
220 ggml_backend_dev_t dev = ggml_backend_dev_by_name(params.device.c_str());
221 if (dev) {
222 backend = ggml_backend_dev_init(dev, nullptr);
223 if (!backend) {
224 fprintf(stderr, "Failed to create backend for device %s\n", params.device.c_str());
225 return nullptr;
226 }
227 }
228 }
229
230 // try to initialize a GPU backend first
231 if (!backend) {
232 backend = ggml_backend_init_by_type(GGML_BACKEND_DEVICE_TYPE_GPU, nullptr);
233 }
234
235 // if there aren't GPU backends fallback to CPU backend
236 if (!backend) {
237 backend = ggml_backend_init_by_type(GGML_BACKEND_DEVICE_TYPE_CPU, nullptr);
238 }
239
240 if (backend) {
241 fprintf(stderr, "%s: using %s backend\n", __func__, ggml_backend_name(backend));
242
243 // set the number of threads
244 ggml_backend_dev_t dev = ggml_backend_get_device(backend);
245 ggml_backend_reg_t reg = dev ? ggml_backend_dev_backend_reg(dev) : nullptr;
246 if (reg) {
247 auto ggml_backend_set_n_threads_fn = (ggml_backend_set_n_threads_t) ggml_backend_reg_get_proc_address(reg, "ggml_backend_set_n_threads");
248 if (ggml_backend_set_n_threads_fn) {
249 ggml_backend_set_n_threads_fn(backend, params.n_threads);
250 }
251 }
252 }
253
254 return backend;
255}
256
257static void get_backend_memory(ggml_backend_t backend, size_t * free_mem, size_t * total_mem) {
258 ggml_backend_dev_t dev = ggml_backend_get_device(backend);

Callers 1

mainFunction · 0.85

Calls 10

ggml_backend_dev_by_nameFunction · 0.85
ggml_backend_dev_initFunction · 0.85
fprintfFunction · 0.85
ggml_backend_get_deviceFunction · 0.85
ggml_backend_nameFunction · 0.50
emptyMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected