Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: parcurgere pe coloane  (Citit de 2012 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
nicolaetitus12
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« : Decembrie 14, 2008, 16:54:02 »

programul ... face o parcurgere pe coloane, dureaza 0.21s. Daca inversez sa fie N 1000000 si M 10 dureaza 0.36s. de unde vine diferenta, nu face la fel de multe salturi si pentru matricea transpusa?

Cod:
#define M 1000000
#define N 10
int a[N][M];
int main ()
{long i,j;
 for (i=0;i<M;i++)
 {for (j=0;j<N;j++)
  {a[j][i]=1;
  }
 }
 return 0;
}
Memorat
Pepelea_Flaviu
Client obisnuit
**

Karma: 30
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2008, 17:30:55 »

e bine sa pui totdeauna limita mai mica in fata ptr ca altfel spargi limita de cache foarte mult si costa timp
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #2 : Decembrie 14, 2008, 19:36:09 »

Uita-te pe pontul #3 de aiciSmile
Memorat
nicolaetitus12
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #3 : Decembrie 14, 2008, 21:04:32 »

    In primul caz matricea are 10 linii si 10^6 coloane, cand face parcurgere pe coloane cred ca sare din 10^6 in 10^6 locatii de memorie, iar in al doilea caz are 10^6 linii, 10 coloane si sare din 10 in 10 locatii de memorie.
    Nu stiu cum functioneaza linia de cache, dar m-as astepta sa se strice la fel de rau in ambele cazuri, sau atunci cand sare din 10 in 10 sa mearga mai repede daca face prefetch la mai multe locatii secventiale.
    Am observat ca parcurgerea pe linii(pt ambele matrici, normala si transpusa) dureaza aproximativ la fel de mult ca si cea pe coloane cand matricea are 10 linii si 10^6 coloane.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines