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