Redukcja sumy niepodpisanych bajtów bez przepełnienia, przy użyciu SSE2 na Intel

Próbuję znaleźć redukcję sumy 32 elementów (każdy 1 bajt danych) na procesorze Intel i3. Ja to zrobiłem:

s=0; 
for (i=0; i<32; i++)
{
    s = s + a[i];
}  

Jednak zajmuje to więcej czasu, ponieważ moja aplikacja jest aplikacją działającą w czasie rzeczywistym, która wymaga znacznie mniej czasu.Pamiętaj, że ostateczna suma może być większa niż 255.

Czy istnieje sposób, aby to zaimplementować za pomocą instrukcji SIMD SSE2 na niskim poziomie? Niestety nigdy nie korzystałem z SSE. Próbowałem w tym celu wyszukać funkcję sse2, ale nie jest ona również dostępna. Czy jest to gwarantowane skrócenie czasu obliczeń dla tak małych problemów?

Jakieś sugestie??

Uwaga: Zaimplementowałem podobne algorytmy przy użyciu OpenCL i CUDA, które działały świetnie, ale tylko wtedy, gdy rozmiar problemu był duży. W przypadku problemów małych rozmiarów koszt narzutu był większy. Nie wiem, jak to działa na SSE

questionAnswers(2)

yourAnswerToTheQuestion