我需要每秒鐘以數百萬的值調用Atan。是否有一個很好的庫以非常快的速度批量執行此操作。例如,一個使用類似SSE的低級邏輯流的庫?用於快速流/批處理三角(Atan)的良好.NET庫?
我已經介紹了該應用程序,並且我知道此次致電Atan是一個瓶頸。
我知道在OpenCL中有這方面的支持,但我更願意在CPU上執行此操作。目標機器可能不支持OpenCL。
我也研究過使用OpenCV,但它對Atan角度的精確度僅爲〜0.3度。我需要準確的結果。
我需要每秒鐘以數百萬的值調用Atan。是否有一個很好的庫以非常快的速度批量執行此操作。例如,一個使用類似SSE的低級邏輯流的庫?用於快速流/批處理三角(Atan)的良好.NET庫?
我已經介紹了該應用程序,並且我知道此次致電Atan是一個瓶頸。
我知道在OpenCL中有這方面的支持,但我更願意在CPU上執行此操作。目標機器可能不支持OpenCL。
我也研究過使用OpenCV,但它對Atan角度的精確度僅爲〜0.3度。我需要準確的結果。
你爲什麼不試試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);
你需要什麼的準確性,什麼是您的輸入值 – 2010-05-25 20:31:43
單或雙精度(整型,浮點,雙,其他單個值,或Y/X對?)沒問題。我想準確度達到1/3600度。 – Sean 2010-05-25 20:56:59
我用dotTrace做了一些性能跟蹤,發現瓶頸實際上不是Atan調用,而是我在同一行上使用的賦值操作。然而,我仍然對任何用於流/批處理操作的良好觸發庫感興趣。 – Sean 2010-05-25 20:58:54