什么是用于图像处理的一些跨平台和高性能图像库(调整大小和查找颜色/色调直方图).不需要gui.这适用于C/C++.
到目前为止,我一直在寻找
我的问题
您的意见非常感谢.
我需要知道如何以某种方式编写一些可并行化问题的C++跨平台实现,以便我可以利用SIMD(SSE,SPU等)(如果可用).同时我希望能够在运行时在SIMD之间切换而不是SIMD.
你会如何建议我解决这个问题? (当然我不想为所有可能的选项多次实现该问题)
我可以看到这对C++来说可能不是一件容易的事,但我相信我错过了一些东西.到目前为止,我的想法看起来像这样......类cStream将是单个字段的数组.使用多个cStream我可以实现SoA(阵列结构).然后使用一些函数我可以伪造我需要在整个cStream上执行的Lambda函数.
// just for example I'm not expecting this code to compile
cStream a; // something like float[1024]
cStream b;
cStream c;
void Foo()
{
for_each(
AssignSIMD(c, MulSIMD(AddSIMD(a, b), a)));
}
Run Code Online (Sandbox Code Playgroud)
其中for_each将负责增加流的当前指针以及使用SIMD和没有SIMD内联仿函数的主体.
像这样的事情:
// just for example I'm not expecting this code to compile
for_each(functor<T> f)
{
#ifdef USE_SIMD
if (simdEnabled)
real_for_each(f<true>()); // true means use SIMD
else
#endif
real_for_each(f<false>());
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果启用SIMD,则检查一次,并且循环位于主仿函数周围.