Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于快速流式处理/批处理三角函数(Atan)的良好.NET库?_.net_Performance_Streaming_Trigonometry - Fatal编程技术网

用于快速流式处理/批处理三角函数(Atan)的良好.NET库?

用于快速流式处理/批处理三角函数(Atan)的良好.NET库?,.net,performance,streaming,trigonometry,.net,Performance,Streaming,Trigonometry,我需要每秒调用Atan上百万个值。是否有一个很好的库可以快速批量执行此操作。例如,一个库,它使用SSE之类的东西来流式处理低级逻辑 我已经分析了应用程序,我知道对Atan的调用是一个瓶颈 我知道OpenCL支持这一点,但我更愿意在CPU上执行此操作。目标计算机可能不支持OpenCL 我也考虑过使用OpenCV,但它对Atan角度的精度只有~0.3度。我需要准确的结果。你为什么不试试?据我所知,它是一个免费的开源GPGPU库,不依赖OpenCL,而是通过LINQ将代码转换为HLSL/GLSL着色器

我需要每秒调用Atan上百万个值。是否有一个很好的库可以快速批量执行此操作。例如,一个库,它使用SSE之类的东西来流式处理低级逻辑

我已经分析了应用程序,我知道对Atan的调用是一个瓶颈

我知道OpenCL支持这一点,但我更愿意在CPU上执行此操作。目标计算机可能不支持OpenCL

我也考虑过使用OpenCV,但它对Atan角度的精度只有~0.3度。我需要准确的结果。

你为什么不试试?据我所知,它是一个免费的开源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);
ComputationProvider=new ComputationProvider();
CompiledQuery=provider.Compile(
数据=>来自数据中的值
选择(float)Math.Atan(value));//在这里做你的计算。。。
DataParallelArray输入=新DataParallelArray(提供程序,新浮点[]{0,1,2,3,4,5,6,7,});//等
IQueryable result=provider.Run(查询,输入);
foreach(结果中的浮点值)
控制台写入线(值);

您需要什么样的精度以及输入值(int、float、double、other?单值或y/x对?)单精度或双精度都可以。我希望精度达到1/3600度左右。我使用dotTrace进行了一些更好的性能跟踪,发现瓶颈实际上不是Atan调用,而是我在同一线路上使用的赋值操作。然而,我仍然对任何用于流式/批处理操作的好trig库感兴趣。您的赋值语句是否在调试代码中索引向量,如本例所示:非常有趣。我没听说过梵天。它看起来不像是提供了触发功能吗?编辑回答。梵天确实支持触发功能。只要System.Math函数在HLSL/GLSL中是等效函数,则支持所有System.Math函数。