Я пытаюсь найти сокращение суммы 32 элементов (каждый 1 байт данных) на процессоре Intel i3. Я сделал следующее:
s=0;
for (i=0; i<32; i++)
{
s = s + a[i];
}
Однако это занимает больше времени, так как мое приложение работает в режиме реального времени и требует гораздо меньше времени. Обратите внимание, что окончательная сумма может быть больше 255.
Можно ли реализовать это с помощью низкоуровневых инструкций SIMD SSE2? К сожалению, я никогда не использовал SSE. Я пытался найти для этой цели функцию sse2, но она также недоступна. Гарантировано ли (sse) сокращение времени вычислений для задач такого небольшого размера?
Есть предложения??
Примечание. Я реализовал аналогичные алгоритмы с использованием OpenCL и CUDA, и они отлично работали, но только при больших размерах задачи. Для задач небольшого размера стоимость накладных расходов была больше. Не уверен, как это работает на SSE