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

Method init_mappings

smallthinker/src/llama-model-loader.cpp:825–856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

823}
824
825void llama_model_loader::init_mappings(bool prefetch, llama_mlocks * mlock_mmaps) {
826 if (use_mmap) {
827 mappings.reserve(files.size());
828 mmaps_used.reserve(files.size());
829 for (const auto & file : files) {
830 bool is_numa = false;
831
832 auto * dev = ggml_backend_dev_by_type(GGML_BACKEND_DEVICE_TYPE_CPU);
833 if (dev) {
834 auto * reg = ggml_backend_dev_backend_reg(dev);
835 auto * is_numa_fn = (decltype(ggml_is_numa) *) ggml_backend_reg_get_proc_address(reg, "ggml_backend_cpu_is_numa");
836 if (is_numa_fn) {
837 is_numa = is_numa_fn();
838 }
839 }
840
841 std::unique_ptr<llama_mmap> mapping = std::make_unique<llama_mmap>(file.get(), prefetch ? -1 : 0, is_numa);
842 mmaps_used.emplace_back(mapping->size(), 0);
843 if (mlock_mmaps) {
844 std::unique_ptr<llama_mlock> mlock_mmap(new llama_mlock());
845 mlock_mmap->init(mapping->addr());
846 mlock_mmaps->emplace_back(std::move(mlock_mmap));
847 }
848 mappings.emplace_back(std::move(mapping));
849 }
850 }
851
852 // compute the total size of all tensors for progress reporting
853 for (const auto & it : weights_map) {
854 size_data += ggml_nbytes(it.second.tensor);
855 }
856}
857
858void llama_model_loader::get_mapping_range(size_t * first, size_t * last, void ** addr, int idx, ggml_context * ctx) const {
859 GGML_ASSERT(!mappings.empty());

Callers 2

load_tensorsMethod · 0.80

Calls 9

ggml_backend_dev_by_typeFunction · 0.85
reserveMethod · 0.80
addrMethod · 0.80
ggml_nbytesFunction · 0.50
sizeMethod · 0.45
getMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected