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