llama.cpp b12257将CUDA图与并发流状态移出common.cuh
该版本把ggml_cuda_graph、ggml_cuda_concurrent_event和ggml_cuda_stream_context移入graph.cuh,并将PDL缓存改为在ggml-cuda.cu中只定义一次。
AI解读:llama.cpp发布b12257版本,主要变更是调整CUDA后端头文件的组织方式:把ggml_cuda_graph、ggml_cuda_concurrent_event和ggml_cuda_stream_context从common.cuh移到graph.cuh,common.cuh保留前向声明。
按发布说明,这三类状态只被ggml-cuda.cu使用;留在common.cuh意味着对它们的任何改动都会重新编译所有CUDA翻译单元。移动后,context构造函数、cuda_graph() 和any_cuda_graph_*() 改在ggml-cuda.cu中定义,流上下文通过unique_ptr持有。
同一说明还称,ggml_cuda_kernel_can_use_pdl不再作为头文件中的static函数,而是在ggml-cuda.cu中定义一次,使PDL缓存由每个翻译单元一份变为全局一份,GGML_CUDA_PDL环境变量检查也并入该函数。
该版本照常提供多平台预编译包,覆盖macOS(arm64、x64)、iOS XCFramework、Linux(CPU、Vulkan、CUDA 12.8/13.5、ROCm 10.0、OpenVINO、SYCL、Snapdragon)、Android、Windows及UI包;openEuler构建标记为DISABLED,macOS arm64的KleidiAI版本同样标记为DISABLED。
llama.cpp发布b12257构建,发布说明列出的改动集中在CUDA后端:将图与并发流相关状态移出common.cuh,以减少头文件改动触发的重编译范围。
发布说明由github-actions[bot] 提交,属于项目发布的变更记录,不是第三方对性能的独立测试。
CUDA状态移入graph.cuh
发布说明称,ggml_cuda_graph、ggml_cuda_concurrent_event和ggml_cuda_stream_context只被ggml-cuda.cu使用,但放在common.cuh中意味着对这些类型的任何改动都会重建每个CUDA翻译单元。
改动将它们移到graph.cuh,common.cuh只保留前向声明。context构造函数、cuda_graph() 和any_cuda_graph_*() 现在定义在ggml-cuda.cu中,流上下文通过unique_ptr持有。
PDL缓存改为单一定义
ggml_cuda_kernel_can_use_pdl原先作为头文件中的static函数存在,改动后在ggml-cuda.cu中只定义一次,发布说明称这样PDL缓存从每个翻译单元一份变为一份。GGML_CUDA_PDL环境变量检查也合并进该函数。
预编译包与平台范围
b12257提供的预编译产物包括macOS Apple Silicon(arm64)与Intel(x64)、iOS XCFramework;Linux侧覆盖Ubuntu x64/arm64的CPU、Vulkan、CUDA 12.8与 13.5、ROCm 10.0、OpenVINO、SYCL FP32/FP16,以及Snapdragon的CPU、Adreno GPU、Hexagon NPU包;另有Android、Windows各后端包与UI包。
发布页面将macOS Apple Silicon的KleidiAI版本和openEuler各构建标记为DISABLED,并链接到对应PR。