Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Lv5
- #include <omp.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main (int argc, char *argv[]) { //argc-broj parametara koji predajemo program(kada predajemo, gdje)
- //argv-pokazivac na memorijske adrese koje sadrzavaju nazive parametara(kojih parametara, gdje se koristi)
- double *row = (double *)malloc(2000*2000*sizeof(double));
- double *rez = (double *)malloc(2000*2000*sizeof(double));
- double *matrix = (double *)malloc(2000*2000*sizeof(double));
- //takva je sintaksa?
- int i,j,k;
- int count = 0;
- double sum;
- for (i=0;i<2000;i++)
- {
- for (j=0;j<2000;j++)
- {
- *(row+i*2000+j)= ++count;
- *(matrix+i*2000+j)= ++count; //popunjavanje matrica valjda random double brojevima?
- }
- }
- double start; //wtf?
- omp_set_num_threads(8); //kako znam da je 8 najoptimalnije, jer on najkrace traje?
- start = omp_get_wtime(); //dohvacanje podataka za real cpu time?
- #pragma omp parallel for private(j,k) //jel taj # slucajno ili njega treba makuti ?
- for (i=0;i<2000;i++)
- {
- for (j=0;j<2000;j++)
- {
- for(k=0;k<2000;k++){
- sum=sum + ((row+i*2000+j))(*(matrix+i*2000+j)); //zasto ima pokazivac prije matrix a nema prije row, I sta znaci row+I a sta je *2000+j)
- }
- *(rez+i*2000+j)= sum; //jel to zapis suma u matricu rez?
- sum = 0; //zasto je sum=0 ako smo ga sada izracunali
- }
- }
- for (i=0;i<2000;i++)
- {
- printf("%d", rez[i]); //jel to ispis reza?
- }
- double end; //zasto mi treba taj double start I double end, da je short jel bi isto trebalo?
- end = omp_get_wtime();
- printf("\n Timer: %f \n", end-start); //kao ispis real cpu time-a
- return 0;
- }
- Lv4
- #include <omp.h>
- #include <stdio.h>
- #include <stdlib.h>
- int main (int argc, char *argv[]) {
- int row[100];
- int rez[100];
- int matrix[100][100];
- int i,j;
- for (i=0;i<100;i++)
- {
- row[i]=11; //zasto 11?
- rez[i]=0;
- for (j=0;j<100;j++)
- {
- matrix[i][j]=22; //zasto 22?
- }
- }
- double start;
- start = omp_get_wtime();
- for (i=0;i<100;i++)
- {
- for (j=0;j<100;j++)
- {
- rez[i]=(row[j]*matrix[i][j]) + rez[i]; //jesu li to pokazivaci ili mnozenja, kako znam razliku i sta znaci cijeli taj ispis zapravo?
- }
- }
- for (i=0;i<100;i++)
- {
- printf("%d", rez[i]); //ispis rez pomnozene matrice?
- }
- double end;
- end = omp_get_wtime();
- printf("\n Timer: %f \n", end-start);
- int numThreads, tid; //ovo automatski stvara niti
- /* This creates a team of threads; each thread has own copy of variables */
- #pragma omp parallel private(numThreads, tid) //jel # treba postojati?
- {
- tid = omp_get_thread_num();
- printf("Hello World from thread number %d\n", tid);
- /* The following is executed by the master thread only (tid=0) */ /// kako on zna da je to executed by master thread? Vjv jer je rang 0?
- if (tid == 0)
- {
- numThreads = omp_get_num_threads();
- printf("Number of threads is %d\n", numThreads);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement