Witam!
Pia\ę program wykorzystujący technologię CUDA do wykonywania obliczeń na kartach graficznych nVidia. Chce zrównoleglić algorytm kompresji CRS dla macierzy liczbowych. W tym celu napisałem alorytm sekwencyjny, wykonujący kompresje CRS na macierzy na jednym wątku:
//Sposób sekwencyjny
int kol = 0, wart = 0;
for(int i = 0; i < m; i++)
{
row_ptr[kol++] = wart+1;
for(int j = 0; j <m; j++)
{
if(M[j + m * i] != 0.0)
{
value[wart] = M[j + m * i];
col_ind[wart] = j + 1;
wart++;
}
}
row_ptr[kol] = wart + 1; //trzeba zabezpieczyc przed powielaniem przez watki
}
TYen kod jest wykonywany na jednym i tym samym wątku dla całej macierzy. Natomiast, ja chciałbym aby każdy wiersz był wykonywany w oddzielnym wątku żeby uzyskać takim sposobem zrównoleglenia, przez co, aby znacznie przyspieszyć kompresję. Ma ktoś z was jakiś pomysł jak rozwiązać taki problem?