Sto cercando di trovare la riduzione della somma di 32 elementi (ogni 1 byte di dati) su un processore Intel i3. Ho fatto questo:Riduzione somma dei byte senza segno senza overflow, utilizzando SSE2 su Intel
s=0;
for (i=0; i<32; i++)
{
s = s + a[i];
}
Tuttavia, richiede più tempo, poiché la mia applicazione è un'applicazione in tempo reale che richiede molto meno tempo. Si noti che la somma finale potrebbe essere superiore a 255.
Esiste un modo per implementarlo utilizzando le istruzioni SIMD SSE2 di basso livello? Purtroppo non ho mai usato SSE. Ho provato a cercare la funzione sse2 per questo scopo, ma non è disponibile. È (sse) garantito per ridurre il tempo di calcolo per problemi così piccoli?
Qualche suggerimento ??
Nota: ho implementato gli algoritmi simili utilizzando OpenCL e CUDA e questo ha funzionato bene, ma solo quando la dimensione del problema era grande. Per i problemi di piccole dimensioni il costo del sovraccarico era maggiore. Non sai come funziona su SSE
La somma è maggiore di 255? – hirschhornsalz
Sì, la somma finale potrebbe essere superiore a 255 – gpuguy