Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
d8bd7a2
feat: scaffold ggml-spacemit backend structure
alex-spacemit Aug 3, 2026
083dc5a
feat: implement ggml-spacemit backend
alex-spacemit Aug 3, 2026
498e204
feat: add spine-runtime as submodule, make it a hard dependency
alex-spacemit Aug 3, 2026
db1ec1a
fix: supports_op returns false for compute ops in Phase 1
alex-spacemit Aug 3, 2026
39ca3aa
feat: graph_compute launches entire graph via spert::Stream
alex-spacemit Aug 3, 2026
816ff1f
refactor: replace ime_env.cpp with spert::backend_info()
alex-spacemit Aug 4, 2026
9a6aa10
feat: migrate full compute pipeline from ggml-cpu/spacemit
alex-spacemit Aug 4, 2026
b7477fd
feat: graph_compute uses spert::Stream::launch for CC core compute
alex-spacemit Aug 4, 2026
bc7e718
feat: use spert ctx->alloc_shared for TCM, ctx->sync for in-kernel ba…
alex-spacemit Aug 4, 2026
26831eb
feat: independent SPACEMIT buffer type, no longer needs -sm none
alex-spacemit Aug 4, 2026
1e04863
refactor: remove ggml-cpu fallback, use SPACEMIT own dispatch
alex-spacemit Aug 4, 2026
60e203e
1
alex-spacemit Aug 4, 2026
e984eec
refactor spacemit backend ops
alex-spacemit Aug 4, 2026
2283d37
feat(spacemit): keep Qwen3 decode graph on CC cores
alex-spacemit Aug 5, 2026
43d2169
fix(spacemit): serialize the shared persistent stream
alex-spacemit Aug 5, 2026
bd85a3c
fix(spacemit): release stream resources after graph compute
alex-spacemit Aug 5, 2026
d236cdc
refactor(spacemit): reuse session compute state
alex-spacemit Aug 5, 2026
28e362a
Agent/ggml spacemit backend update (#36)
co-seven Sep 8, 2026
4e782bc
ggml-spacemit: type-gate direct GEMV to q4_0, fuse GDN decode row upd…
co-seven Sep 15, 2026
35254ba
ggml-spacemit: bind stream cores via SPACEMIT_PERFER_CORE_ID
co-seven Sep 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,4 @@ a.out.*

AGENTS.local.md
.pi/SYSTEM.md
.agents/
Empty file removed .gitmodules
Empty file.
200 changes: 0 additions & 200 deletions AGENTS.md

This file was deleted.

42 changes: 36 additions & 6 deletions common/arg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "common.h"
#include "download.h"
#include "json-schema-to-grammar.h"
#include "llama.h"
#include "log.h"
#include "sampling.h"
#include "speculative.h"
Expand Down Expand Up @@ -695,6 +696,17 @@ static bool common_params_parse_ex(int argc, char ** argv, common_params_context
arg.c_str(), e.what(), opt.to_string().c_str()));
}
}

// TODO: remove this check after deprecating --mmap|mlock|dio
auto has_arg = [&](std::initializer_list<const char *> names) {
return std::any_of(names.begin(), names.end(), [&](const char * name) {
return seen_args.count(name);
});
};
if (has_arg({"-lm", "--load-mode"}) &&
has_arg({"--mlock", "--mmap", "--no-mmap", "-dio", "--direct-io", "-ndio", "--no-direct-io"})) {
LOG_WRN("DEPRECATED: `--load-mode` and `--mlock`/`--mmap`/`--direct-io` should not be combined; only the last flag on the command line will take effect\n");
}
};

// parse all CLI args now, so that -hf is available below for remote preset resolution
Expand Down Expand Up @@ -2424,27 +2436,45 @@ common_params_context common_params_parser_init(common_params & params, llama_ex
}
add_opt(common_arg(
{"--mlock"},
"force system to keep model in RAM rather than swapping or compressing",
"DEPRECATED in favor of `--load-mode`: mmap + force system to keep model in RAM rather than swapping or compressing",
[](common_params & params) {
params.use_mlock = true;
LOG_WRN("DEPRECATED: --mlock is deprecated. use --load-mode mlock instead\n");
params.load_mode = LLAMA_LOAD_MODE_MLOCK;
}
).set_env("LLAMA_ARG_MLOCK"));
add_opt(common_arg(
{"--mmap"},
{"--no-mmap"},
string_format("whether to memory-map model. (if mmap disabled, slower load but may reduce pageouts if not using mlock) (default: %s)", params.use_mmap ? "enabled" : "disabled"),
"DEPRECATED in favor of `--load-mode`: whether to memory-map model. (if mmap disabled, slower load but may reduce pageouts if not using mlock)",
[](common_params & params, bool value) {
params.use_mmap = value;
LOG_WRN("DEPRECATED: --mmap and --no-mmap are deprecated. use --load-mode mmap instead\n");
params.load_mode = value ? LLAMA_LOAD_MODE_MMAP : LLAMA_LOAD_MODE_NONE;
}
).set_env("LLAMA_ARG_MMAP"));
add_opt(common_arg(
{"-dio", "--direct-io"},
{"-ndio", "--no-direct-io"},
string_format("use DirectIO if available. (default: %s)", params.use_direct_io ? "enabled" : "disabled"),
"DEPRECATED in favor of `--load-mode`: use DirectIO if available",
[](common_params & params, bool value) {
params.use_direct_io = value;
LOG_WRN("DEPRECATED: --direct-io and --no-direct-io are deprecated. use --load-mode dio instead\n");
params.load_mode = value ? LLAMA_LOAD_MODE_DIRECT_IO : LLAMA_LOAD_MODE_NONE;
}
).set_env("LLAMA_ARG_DIO"));
add_opt(common_arg(
{"-lm", "--load-mode"}, "MODE",
"model loading mode (default: mmap)\n"
"- none: no special loading mode\n"
"- mmap: memory-map model (if mmap disabled, slower load but may reduce pageouts if not using mlock)\n"
"- mlock: mmap + force system to keep model in RAM rather than swapping or compressing\n"
"- dio: use DirectIO if available\n",
[](common_params & params, const std::string & value) {
/**/ if (value == "none") { params.load_mode = LLAMA_LOAD_MODE_NONE; }
else if (value == "mmap") { params.load_mode = LLAMA_LOAD_MODE_MMAP; }
else if (value == "mlock") { params.load_mode = LLAMA_LOAD_MODE_MLOCK; }
else if (value == "dio") { params.load_mode = LLAMA_LOAD_MODE_DIRECT_IO; }
else { throw std::invalid_argument("invalid value"); }
}
).set_env("LLAMA_ARG_LOAD_MODE"));
add_opt(common_arg(
{"--numa"}, "TYPE",
"attempt optimizations that help on some NUMA systems\n"
Expand Down
4 changes: 1 addition & 3 deletions common/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1558,10 +1558,8 @@ struct llama_model_params common_model_params_to_llama(common_params & params) {
mparams.n_gpu_layers = params.n_gpu_layers;
mparams.main_gpu = params.main_gpu;
mparams.split_mode = params.split_mode;
mparams.load_mode = params.load_mode;
mparams.tensor_split = params.tensor_split;
mparams.use_mmap = params.use_mmap;
mparams.use_direct_io = params.use_direct_io;
mparams.use_mlock = params.use_mlock;
mparams.check_tensors = params.check_tensors;
mparams.use_extra_bufts = !params.no_extra_bufts;
mparams.no_host = params.no_host;
Expand Down
5 changes: 2 additions & 3 deletions common/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "ggml-opt.h"
#include "ggml.h"
#include "llama.h"

#include <set>
#include <sstream>
Expand Down Expand Up @@ -482,6 +483,7 @@ struct common_params {
std::vector<size_t> fit_params_target = std::vector<size_t>(llama_max_devices(), 1024 * 1024*1024);

enum llama_split_mode split_mode = LLAMA_SPLIT_MODE_LAYER; // how to split the model across GPUs
enum llama_load_mode load_mode = LLAMA_LOAD_MODE_MMAP; // how to load the model

common_cpu_params cpuparams;
common_cpu_params cpuparams_batch;
Expand Down Expand Up @@ -572,9 +574,6 @@ struct common_params {
bool kv_unified = false; // enable unified KV cache

bool input_prefix_bos = false; // prefix BOS to user inputs, preceding input_prefix
bool use_mmap = true; // enable mmap to use filesystem cache
bool use_direct_io = false; // read from disk without buffering
bool use_mlock = false; // use mlock to keep model in memory
bool verbose_prompt = false; // print prompt tokens before generation
bool display_prompt = true; // print prompt before generation
bool no_kv_offload = false; // disable KV offloading
Expand Down
3 changes: 1 addition & 2 deletions common/fit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ static std::vector<llama_device_memory_data> common_get_device_memory_data_impl(

llama_model_params mparams_copy = *mparams;
mparams_copy.no_alloc = true;
mparams_copy.use_mmap = false;
mparams_copy.use_mlock = false;
mparams_copy.load_mode = LLAMA_LOAD_MODE_NONE;

llama_model * model = llama_model_load_from_file(path_model, mparams_copy);
if (model == nullptr) {
Expand Down
4 changes: 1 addition & 3 deletions examples/diffusion/diffusion-cli.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,7 @@ int main(int argc, char ** argv) {
llama_model_params model_params = llama_model_default_params();
model_params.n_gpu_layers = params.n_gpu_layers;
model_params.devices = params.devices.data();
model_params.use_mmap = params.use_mmap;
model_params.use_direct_io = params.use_direct_io;
model_params.use_mlock = params.use_mlock;
model_params.load_mode = params.load_mode;
model_params.check_tensors = params.check_tensors;

llama_model * model = llama_model_load_from_file(params.model.path.c_str(), model_params);
Expand Down
7 changes: 3 additions & 4 deletions examples/training/finetune.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,9 @@ int main(int argc, char ** argv) {
return 1;
}

if (params.use_mmap) {
LOG_INF("%s: force disabling memory mapping because it would result in-read-only pointers to the weights\n",
__func__);
params.use_mmap = false;
if (params.load_mode != LLAMA_LOAD_MODE_NONE) {
LOG_INF("%s: forcing load_mode = none to enable writable pointers to the weights\n", __func__);
params.load_mode = LLAMA_LOAD_MODE_NONE;
}
if (params.cache_type_k != GGML_TYPE_F32) {
LOG_INF("%s: force changing k cache type to f32 due to a lack of f16 support for OUT_PROD\n", __func__);
Expand Down
3 changes: 3 additions & 0 deletions ggml/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ option(GGML_WEBGPU "ggml: use WebGPU"
option(GGML_WEBGPU_DEBUG "ggml: enable WebGPU debug output" OFF)
option(GGML_WEBGPU_CPU_PROFILE "ggml: enable WebGPU profiling (CPU)" OFF)
option(GGML_WEBGPU_GPU_PROFILE "ggml: enable WebGPU profiling (GPU)" OFF)
option(GGML_BUILD_PROFILE "ggml: enable ggml trace profiler (GGML_TRACE=1)" OFF)
option(GGML_WEBGPU_JSPI "ggml: use JSPI for WebGPU" ON)
option(GGML_ZDNN "ggml: use zDNN" OFF)
option(GGML_VIRTGPU "ggml: use the VirtGPU/Virglrenderer API Remoting frontend" OFF)
Expand Down Expand Up @@ -269,6 +270,8 @@ set (GGML_OPENCL_TARGET_VERSION "300" CACHE STRING

option(GGML_HEXAGON "ggml: enable Hexagon backend" OFF)

option(GGML_SPACEMIT "ggml: enable SpacemiT backend" OFF)

# toolchain for vulkan-shaders-gen
set (GGML_VULKAN_SHADERS_GEN_TOOLCHAIN "" CACHE FILEPATH "ggml: toolchain file for vulkan-shaders-gen")

Expand Down
Loading
Loading