Ja som mal optimalizovať nižšie uvedený kód, aby sabežať aspoň 16x rýchlejšie pomocou openMP a blokovania pamäte. Doteraz môžem len pomyslieť na to, že s mojimi jednoduchými tvrdeniami sa prepadnem o slučky. To robí to beží 3 krát rýchlejšie. Akékoľvek nápady na priblíženie k 16?
int i,j;
#pragma omp parallel for collapse(2) //my inserted code
for (i = 0; i < MSIZE; i++)
for (j = 0; j < MSIZE; j++)
d[i][j] = c[j][i];
odpovede:
0 pre odpoveď č. 1Keď deklarujete index vnútornej slučky vo vonkajšom rozsahu, musíte použiť privátnu klauzulu, aby ste každému vláknu poskytli vlastnú kópiu. Kolaps môže rušiť simd vektorizáciu.