Simd
Simd 是一款专为 C 和 C++ 开发者打造的高性能开源图像处理和机器学习库。它致力于解决在资源受限或高负载场景下,传统算法处理速度不足的痛点,通过深度优化让图像分析任务跑得更快、更稳。
无论是需要进行像素格式转换、图像缩放滤波,还是实现运动检测、物体识别分类乃至神经网络推理,Simd 都能提供现成的高效算法支持。其核心亮点在于充分利用了现代处理器的 SIMD(单指令多数据)扩展指令集,针对 x86/x64 架构支持 SSE、AVX、AVX-512 及 AMX,对 ARM 平台优化了 NEON,甚至覆盖了 Hexagon 的 HVX 指令。这种底层硬件级的加速策略,使得 Simd 能在不依赖昂贵专用硬件的前提下,显著提升计算效率。
Simd 特别适合对性能有严苛要求的嵌入式工程师、计算机视觉研究员以及系统级软件开发人员。它不仅提供了简洁的 C 接口,还封装了易用的 C++ 类,并支持 Python 调用,兼容 Windows 和 Linux 主流编译环境。如果你正在寻找一个轻量、跨平台且能榨干 CPU 算力的图像处理方案,Simd 值得纳入你的技术选型清单。
使用场景
某安防团队正在为边缘计算网关开发一套实时人流统计系统,需在低成本的 ARM 架构设备上处理多路高清视频流。
没有 Simd 时
- 帧率严重不足:纯 C++ 实现的图像缩放与格式转换算法未利用硬件指令集,导致 CPU 占用率常年飙升至 100%,视频处理帧率仅为 8-10 FPS,画面卡顿明显。
- 运动检测延迟高:在进行背景建模与运动目标提取时,逐像素计算效率低下,从有人经过到系统发出警报存在 2-3 秒的显著延迟。
- 跨平台移植困难:团队试图手动编写 ARM NEON 内联汇编来优化性能,但代码晦涩难懂且极易出错,维护成本极高,难以在不同芯片间复用。
- 神经网络推理慢:部署轻量级人脸分类模型时,缺乏针对特定 CPU 扩展指令的优化,推理耗时过长,无法满足实时性要求。
使用 Simd 后
- 性能大幅提升:Simd 自动调用 ARM NEON 指令集加速像素格式转换和图像缩放,将处理帧率稳定提升至 25-30 FPS,CPU 占用率降低至 60% 以下。
- 实时响应无延迟:利用 Simd 内置的高效运动检测算法,系统能在毫秒级时间内识别目标移动,实现了真正的实时预警。
- 开发效率显著提高:直接调用 Simd 提供的 C++ 封装接口即可享受底层硬件加速,无需手动编写复杂的汇编代码,轻松实现 x86 到 ARM 的无缝迁移。
- 推理速度优化:集成 Simd 优化的神经网络算子后,人脸分类模型的推理速度提升了 4 倍,确保了在高并发场景下的流畅运行。
Simd 通过自动适配底层 SIMD 指令集,让开发者用标准 C++ 代码即可在边缘设备上获得极致的图像处理与机器学习性能。
运行环境要求
- Windows
- Linux
未说明 (该库主要利用 CPU 的 SIMD 指令集如 SSE, AVX, AVX-512, AMX, NEON, HVX 进行加速,未提及 GPU 需求)
未说明

快速开始
简介
Simd 库 是一个免费的开源图像处理和机器学习库,专为 C 和 C++ 程序员设计。它提供了许多高效的图像处理算法,包括:像素格式转换、图像缩放与滤波、从图像中提取统计信息、运动检测、目标检测与分类以及神经网络。
这些算法通过使用不同的 SIMD CPU 扩展指令集进行了优化。具体来说,该库支持以下 CPU 指令集扩展:x86/x64 架构下的 SSE、AVX、AVX-512 和 AMX;ARM 架构下的 NEON;Hexagon 架构下的 HVX。
Simd 库提供 C API,并包含一些有用的 C++ 类和函数,以方便开发者访问 C API。该库支持动态链接和静态链接,适用于 32 位和 64 位的 Windows 和 Linux 系统,兼容 MSVS、G++ 和 Clang 编译器,以及 MSVS 项目和 CMake 构建系统。
库文件夹结构
Simd 库的文件夹结构如下:
simd/src/Simd/- 包含库的源代码。simd/src/Test/- 包含库的测试框架。simd/src/Use/- 包含库的使用示例。simd/py/SimdPy/- 包含库的 Python 封装。simd/prj/vs2022/- 包含 Microsoft Visual Studio 2022 的项目文件。simd/prj/cmd/- 包含在 Windows 系统下构建库所需的额外脚本。simd/prj/cmake/- 包含 CMake 构建系统的文件。simd/prj/sh/- 包含在 Linux 系统下构建库所需的额外脚本。simd/prj/txt/- 包含构建库所需的文本文件。simd/data/cascade/- 包含 OpenCV 级联分类器(HAAR 和 LBP)。simd/data/image/- 包含图像样本。simd/data/network/- 包含训练好的网络示例。simd/docs/- 包含库的文档。
在 Windows 上构建库
要在 Windows 32/64 位系统上构建库和测试应用程序,您需要使用 Microsoft Visual Studio 2022。项目文件位于以下目录:
simd/prj/vs2022/
默认情况下,库会构建为 DLL(动态链接库)。您也可以将其构建为静态库。为此,您需要更改 Simd 项目的相应属性(配置类型),并在以下文件中取消注释 #define SIMD_STATIC:
simd/src/Simd/SimdConfig.h
此外,您还可以使用 CMake 和 MinGW 来构建库:
mkdir build
cd build
cmake ..\prj\cmake -DSIMD_TOOLCHAIN="your_toolchain\bin\g++" -DSIMD_TARGET="x86_64" -DCMAKE_BUILD_TYPE="Release" -G "MinGW Makefiles"
mingw32-make
在 Linux 上构建库
要在 Linux 32/64 位系统上构建库和测试应用程序,您需要使用 CMake 构建系统。CMake 构建系统的文件位于以下目录:
simd/prj/cmake/
该库可以针对 x86/x64、ARM(32/64 位)以及 Hexagon 平台进行构建,使用 G++ 或 Clang 编译器。对于当前平台使用原生编译器(g++)非常简单:
mkdir build
cd build
cmake ../prj/cmake -DSIMD_TOOLCHAIN="" -DSIMD_TARGET=""
make
要为 ARM(32/64 位)平台构建库,您还可以使用交叉编译工具链。以下是针对 ARM(32 位)的示例:
mkdir build
cd build
cmake ../prj/cmake -DSIMD_TOOLCHAIN="/your_toolchain/usr/bin/arm-linux-gnueabihf-g++" -DSIMD_TARGET="arm" -DCMAKE_BUILD_TYPE="Release"
make
而对于 ARM(64 位):
mkdir build
cd build
cmake ../prj/cmake -DSIMD_TOOLCHAIN="/your_toolchain/usr/bin/aarch64-linux-gnu-g++" -DSIMD_TARGET="aarch64" -DCMAKE_BUILD_TYPE="Release"
make
对于带有 HVX 的 Hexagon 平台(使用 Hexagon Clang 工具链进行交叉编译):
mkdir build
cd build
cmake ../prj/cmake -DSIMD_TOOLCHAIN="/your_toolchain/bin/hexagon-linux-musl-clang" -DSIMD_TARGET="hexagon" -DCMAKE_BUILD_TYPE="Release"
make
最终,库和测试应用程序将被构建到当前目录中。
还有一些附加的构建参数:
SIMD_AVX512- 启用 AVX-512(AVX-512F、AVX-512CD、AVX-512VL、AVX-512DQ、AVX-512BW)CPU 扩展指令集。默认已启用。SIMD_AVX512VNNI- 启用 AVX-512-VNNI CPU 扩展指令集。默认已启用。SIMD_AMXBF16- 启用 AMX-BF16、AMX-INT8 和 AVX-512-BF16 CPU 扩展指令集。默认未启用。SIMD_TEST- 构建测试框架。默认已启用。SIMD_INFO- 打印构建信息。默认已启用。SIMD_PERF- 启用内部性能统计功能。默认未启用。SIMD_SHARED- 构建为共享库。默认未启用。SIMD_GET_VERSION- 调用脚本来获取 Simd 库版本。默认已启用。SIMD_SYNET- 为 Synet 框架启用优化。默认已启用。SIMD_INT8_DEBUG- 为 Synet 框架启用 INT8 调试功能。默认未启用。SIMD_HIDE- 隐藏 Simd 库的内部函数。默认未启用。SIMD_RUNTIME- 启用运行时更快的算法选择。默认已启用。SIMD_TEST_FLAGS- 用于构建测试框架的额外编译器标志。SIMD_OPENCV- 在测试框架中使用 OpenCV。默认未启用。SIMD_INSTALL- 启用安装目标。默认已启用。SIMD_UNINSTALL- 启用卸载目标。默认已启用。SIMD_PYTHON- 启用 Simd 的 Python 封装。默认已启用。
使用库
如果您从 C 代码中使用该库,您需要包含:
#include "Simd/SimdLib.h"
而如果从 C++ 代码中使用该库,您需要包含:
#include "Simd/SimdLib.hpp"
要使用 Simd::Detection,您需要包含:
#include "Simd/SimdDetection.hpp"
要使用 Simd::Neural,您需要包含:
#include "Simd/SimdNeural.hpp"
要使用 Simd::Motion,您需要包含:
#include "Simd/SimdMotion.hpp"
包管理器
您可以使用依赖管理器 vcpkg 下载并安装 simd:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install simd
vcpkg 中的 simd 软件包由 Microsoft 团队成员和社区贡献者持续维护更新。如果版本过旧,请在 vcpkg 仓库中 创建问题或拉取请求。
与 OpenCV 的交互
如果您需要在 Simd 和 OpenCV 类型之间进行相互转换,只需在包含 Simd 头文件之前定义宏 SIMD_OPENCV_ENABLE 即可:
#include <opencv2/core/core.hpp>
#define SIMD_OPENCV_ENABLE
#include "Simd/SimdLib.hpp"
然后您可以转换以下类型:
cv::Point,cv::Size<-->Simd::Point。cv::Rect<-->Simd::Rectangle。cv::Mat<-->Simd::View。
测试框架
测试套件用于验证库的正确性以及性能测试。对于库 API 中的每一个函数,都有一组相应的测试用例。以下是使用测试应用程序的一个示例:
./Test -m=a -tt=1 -f=Sobel -ot=log.txt
其中使用的参数说明如下:
-m=a:自动检查模式,包含性能测试(仅适用于以 Release 模式构建的库)。在这种模式下,会比较同一函数的不同实现方式(例如,标量实现与使用 SSE2、AVX2 等不同 SIMD 指令的实现)。此外,也可以使用-m=s来运行特定测试。-tt=1:测试线程数。特殊值包括:-1表示使用所有可用线程进行测试;-2表示使用一半可用线程进行测试。-fi=Sobel:包含过滤器。在此例中,仅测试函数名中包含“Sobel”字样的函数。若省略此参数,则会执行全面测试。可以同时指定多个过滤器,函数名只需满足其中一个即可。-ot=log.txt:测试报告文件名(文本格式)。测试报告也会输出到控制台。
此外,您还可以使用以下参数:
--help或-?:打印帮助信息。-r=../..:设置项目根目录。-pa=1:打印对齐统计信息。-pi=1:打印内部统计信息(需将 CMake 参数SIMD_PERF设置为 ON)。-c=512:性能测试中使用的测试图像通道数。-h=1080:性能测试中使用的测试图像高度。-w=1920:性能测试中使用的测试图像宽度。-oh=log.html:测试报告文件名(HTML 格式)。-s=sample.avi:视频源(参见Simd::Motion测试)。-o=output.avi:标注后的视频输出(参见Simd::Motion测试)。-wt=1:用于并行化算法的线程数。使用-1可启用最大并行度。-fe=Abs:排除过滤器,用于排除某些测试。-mt=100:最小测试执行时间(单位:毫秒)。-lc=1:在每次测试之间清理 CPU 缓存。-ri=city.jpg:部分测试中使用的实际图像文件名。该图像需放置在./data/image目录下。-tr=2:测试执行重复次数。-ts=1:打印测试执行时间统计信息。-cc=1:检查 C++ API。-de=2:禁用特定 SIMD 扩展的标志位。基础值为 1,2 表示 SSE4.1/NEON/HVX,4 表示 AVX2,8 表示 AVX-512BW,16 表示 AVX-512VNNI,32 表示 AMX-BF16。-wu=100:测试前 CPU 的预热时间(单位:毫秒)。-pt=1:将线程固定到特定 CPU 核心的布尔标志位。
版本历史
v7.0.1602026/04/01v6.2.1592026/03/03v6.2.1582026/02/03v6.2.1572026/01/02v6.2.1562025/12/01v6.2.1552025/11/10v6.2.1542025/10/01v6.2.1532025/09/01v6.2.1522025/08/01v6.2.1512025/07/07v6.1.1502025/06/02v6.1.1492025/05/05v6.1.1482025/04/01v6.1.1472025/03/03v6.1.1462025/02/04v6.1.1452025/01/01v6.1.1442024/12/02v6.1.1432024/11/04v6.1.1422024/10/01v6.1.1412024/09/02常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器