【问题标题】:Image Processing with MMX in Linux在 Linux 中使用 MMX 进行图像处理
【发布时间】:2013-08-25 15:13:06
【问题描述】:

我想使用 MMX 指令集来优化我的 Linux C 程序,该程序对以 RGB 格式存储的图像执行大量操作(每个 RGB 组件都存储在一个无符号字符中)。这些操作是微不足道的:我从另一个像素中减去一个图像,并累加差值的绝对值之和。 (基本上,我有一个小图像或图案,我试图找出该图案是否存在于更大的图像中)。

我知道这可以使用 MMX 指令以汇编语言编码,以 SIMD 方式执行单个字节操作。但是,有没有更简单的方法?可能是使用 MMX 指令的库或更高级别的接口?

【问题讨论】:

  • 你看过这个项目吗? libjpeg-turbo
  • 嗯,感谢您的帮助,但我认为这与我的问题无关。 :)
  • 实际上,这个页面是一个很好的简洁描述和如何将 MMX 指令合并到 GNU C 代码中的示例:vast.uccs.edu/~tboult/frame/Boult/linux-mmx.html
  • 试试英特尔 IPP 库,它们有 linux 版本,并在内部使用 SIMD 指令。不幸的是,它是一个付费软件 SDK(免费再分发),但您无需购买任何东西即可安装和使用一段时间。
  • 英特尔 C 编译器不是免费用于非商业用途吗?

标签: c image-processing mmx


【解决方案1】:

通常会有一个标题#include,通常称为intrinsics.hThis page 展示了如何将 MMX 与 C 一起使用。它 #includes 文件 emmintrin.h。也许该文件存在于 Linux 中?

另外,如果您正在使用最新的硬件,您可能至少要使用 SSE,如果不是 SSE2。我相信它们可以以类似的方式包含在内。

【讨论】:

  • 是的,我有一个非常新的 CPU。我应该使用 SSE2 而不是 MMX 指令吗?这可能会容易得多,因为我直接从 C 中使用像 _mm_add_pi8() 这样的指令。这相当于用汇编语言编写 MMX 指令吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2012-11-17
  • 1970-01-01
相关资源
最近更新 更多