Хорошая библиотека .NET для быстрой потоковой / пакетной тригонометрии (Atan)? - PullRequest
2 голосов
/ 26 мая 2010

Мне нужно вызывать Атан с миллионами значений в секунду. Есть ли хорошая библиотека для выполнения этой операции в пакетном режиме очень быстро. Например, библиотека, которая передает потоковую логику низкого уровня, используя что-то вроде SSE?

Я профилировал приложение и знаю, что этот вызов Атану является узким местом.

Я знаю, что это поддерживается в OpenCL, но я бы предпочел сделать эту операцию на процессоре. Целевой компьютер может не поддерживать OpenCL.

Я также изучал использование OpenCV, но его точность для углов Атана составляет всего ~ 0,3 градуса. Мне нужны точные результаты.

1 Ответ

1 голос
/ 26 мая 2010

Почему бы вам не попробовать Брахма ? Насколько я понимаю, это бесплатная библиотека GPGPU с открытым исходным кодом, которая не зависит от OpenCL, вместо этого она преобразует код в шейдеры HLSL / GLSL через LINQ.

РЕДАКТИРОВАТЬ: Образец кода:

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);
...