Simd

GitHub
2.2k 451 较难 1 次阅读 今天MITAgent图像开发框架
AI 解读 由 AI 自动生成,仅供参考

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
GPU

未说明 (该库主要利用 CPU 的 SIMD 指令集如 SSE, AVX, AVX-512, AMX, NEON, HVX 进行加速,未提及 GPU 需求)

内存

未说明

依赖
notes该库专注于利用 CPU 指令集优化图像处理和机器学习算法。Windows 平台推荐使用 Visual Studio 2022 或 MinGW;Linux 平台使用 CMake 构建。支持跨编译到 ARM (32/64 位) 和 Hexagon 平台。可通过 vcpkg 包管理器安装。若需与 OpenCV 交互,需定义 SIMD_OPENCV_ENABLE 宏。
python未说明 (提供 Python 包装器 SimdPy,但未指定具体版本要求)
C/C++ 编译器 (MSVS, G++, Clang)
CMake
OpenCV (可选,用于测试框架和类型转换)
Simd hero image

快速开始

简介

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/01
v6.2.1592026/03/03
v6.2.1582026/02/03
v6.2.1572026/01/02
v6.2.1562025/12/01
v6.2.1552025/11/10
v6.2.1542025/10/01
v6.2.1532025/09/01
v6.2.1522025/08/01
v6.2.1512025/07/07
v6.1.1502025/06/02
v6.1.1492025/05/05
v6.1.1482025/04/01
v6.1.1472025/03/03
v6.1.1462025/02/04
v6.1.1452025/01/01
v6.1.1442024/12/02
v6.1.1432024/11/04
v6.1.1422024/10/01
v6.1.1412024/09/02

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

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 真正成长为懂上

156k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|4天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

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 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架