Próbuję znaleźć zmniejszenie sumy 32 elementów (każdy bajt danych 1) na i3 procesorem Intel. Zrobiłem to:Suma redukcja niepodpisane bajtów bez przelewu, za pomocą SSE2 na Intel
s=0;
for (i=0; i<32; i++)
{
s = s + a[i];
}
Jednak jego biorąc więcej czasu, ponieważ moja aplikacja jest aplikacją w czasie rzeczywistym wymagające znacznie mniej czasu. Należy pamiętać, że ostateczna suma może być więcej niż 255.
Czy istnieje sposób można zaimplementować to przy użyciu niskiego poziomu instrukcji SIMD SSE2? Niestety nigdy nie używałem SSE. Próbowałem w tym celu wyszukać funkcję sse2, ale nie jest ona również dostępna. Czy jest to (s) gwarantowane zmniejszenie czasu obliczeń dla tak małych problemów?
Jakieś sugestie?
Uwaga: ja wdrożyły podobne algorytmy wykorzystaniem OpenCL i CUDA i pracował wielki, ale tylko wtedy, gdy wielkość problemem była duża. W przypadku małych problemów koszt dodatkowych kosztów był większy. Nie wiem, jak to działa na SSE
Czy suma jest większa niż 255? – hirschhornsalz
Tak, ostateczna kwota może być większa niż 255 – gpuguy