mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	llama : check returned fn ptrs from ggml_backend_reg_get_proc_address (#15893)
This commit adds check for two function pointers returned from ggml_backend_reg_get_proc_address. The motivation for this is that the function pointer could be nullptr if the get proc address function changes in the future. This is also consistent with all the other calls to ggml_backend_reg_get_proc_address in the code base.
This commit is contained in:
		| @@ -1447,8 +1447,10 @@ ggml_status llama_context::graph_compute( | |||||||
|     if (backend_cpu != nullptr) { |     if (backend_cpu != nullptr) { | ||||||
|         auto * reg = ggml_backend_dev_backend_reg(ggml_backend_get_device(backend_cpu)); |         auto * reg = ggml_backend_dev_backend_reg(ggml_backend_get_device(backend_cpu)); | ||||||
|         auto * set_threadpool_fn = (decltype(ggml_backend_cpu_set_threadpool) *) ggml_backend_reg_get_proc_address(reg, "ggml_backend_cpu_set_threadpool"); |         auto * set_threadpool_fn = (decltype(ggml_backend_cpu_set_threadpool) *) ggml_backend_reg_get_proc_address(reg, "ggml_backend_cpu_set_threadpool"); | ||||||
|  |         if (set_threadpool_fn) { | ||||||
|             set_threadpool_fn(backend_cpu, tp); |             set_threadpool_fn(backend_cpu, tp); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     // set the number of threads for all the backends |     // set the number of threads for all the backends | ||||||
|     for (const auto & set_n_threads_fn : set_n_threads_fns) { |     for (const auto & set_n_threads_fn : set_n_threads_fns) { | ||||||
|   | |||||||
| @@ -83,9 +83,11 @@ void llama_numa_init(enum ggml_numa_strategy numa) { | |||||||
|         GGML_ASSERT(dev && "CPU backend is not loaded"); |         GGML_ASSERT(dev && "CPU backend is not loaded"); | ||||||
|         auto * reg = ggml_backend_dev_backend_reg(dev); |         auto * reg = ggml_backend_dev_backend_reg(dev); | ||||||
|         auto * numa_init_fn = (decltype(ggml_numa_init) *) ggml_backend_reg_get_proc_address(reg, "ggml_backend_cpu_numa_init"); |         auto * numa_init_fn = (decltype(ggml_numa_init) *) ggml_backend_reg_get_proc_address(reg, "ggml_backend_cpu_numa_init"); | ||||||
|  |         if (numa_init_fn) { | ||||||
|             numa_init_fn(numa); |             numa_init_fn(numa); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| void llama_backend_free(void) { | void llama_backend_free(void) { | ||||||
|     ggml_quantize_free(); |     ggml_quantize_free(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Bevenius
					Daniel Bevenius