我需要每秒数百万的价值调用Atan。是否有一个很好的库可以非常快速地批量执行此操作。例如,使用SSE?
等流式传输低级逻辑的库我已经分析了该应用程序,我知道这次对Atan的调用是一个瓶颈。
我知道在OpenCL中有这方面的支持,但我更喜欢在CPU上执行此操作。目标计算机可能不支持OpenCL。
我也研究过使用OpenCV,但Atan角度的准确度只有~0.3度。我需要准确的结果。
答案 0 :(得分:1)
为什么不试试Brahma?据我所知,它是一个免费的开源GPGPU库,它不依赖于OpenCL,而是通过LINQ将代码转换为HLSL / GLSL着色器。
编辑:示例代码:
ComputationProvider provider = new ComputationProvider();
CompiledQuery query = provider.Compile<DataParallelArray<float>>(
data => from value in data
select (float)Math.Atan(value)); // Do your calculations here...
DataParallelArray<float> input = new DataParallelArray<float>(provider, new float[] { 0, 1, 2, 3, 4, 5, 6, 7, }); // etc...
IQueryable result = provider.Run(query, input);
foreach (float value in result)
Console.WriteLine(value);