Witam! Wykonuje mnożenie macierzy w 3 pętlach sekwencyjnie i równolegle z wykorzystaniem OMP.
for (int i = 0 ; i < 1000; i++)
for (int k = 0 ; k < 1000; k++)
for (int j = 0 ; j < 1000; j++)
matrix_rs[i][j] += matrix_a[i][k] * matrix_b[k][j] ;
wszystkie macierze sa w postaci floatow. Jeżeli daję #pragma omp parallel for przed pierwszą pętlą to działa dobrze, tak samo jak dam przed ostatnią. Jak dam przed drugą to są niewielkie różnice miedzy wartościami z sekwencyjnego, a równoległego. Myślę, że wynika to z tego, że sumuję wartości floatów z różnych wątków i jakieś wartości albo są krojone albo niedokładnie dodawane. Jeżeli zamieniam macierze na inty to działa poprawnie. Da się jakoś to zrobić, aby działało dla #pragma omp parallel for przed drugą pętlą ?