int main() { int n; printf("n = "); scanf("%d", &n); int **a; int **b; int **c; allocate(&a,n); allocate(&b,n); allocate(&c,n); getdata(a,n); getdata(b,n); mult(a,b,c,n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%d\t",c[i][j]); } printf("\n"); } fre(a,n); fre(b,n); fre(c,n); getch(); }
int main() { double t = clock(); int a; for (int e = 10 ; e < 200000 ; e++){ a = fre(e); if (a ==4){ e++; a = fre(e); if (a == 4){ e++; a = fre(e); if (a == 4){ e++; a = fre(e); if (a == 4){ std::cout << e-3 << " " << e-2 << " " << e-1 << " " << e << std::endl; goto po; } } } } } po: std::cout << (clock() - t)/(double)(CLOCKS_PER_SEC) << "sec" << std::endl; return 0; }
int main(int argc, char* argv[]) { int i,j; int req[M]; if(argc > 1) srand(atoi(argv[1])); if(secure() == 0) return -1; pp(); while(1){ for(i = 0; i < N; i++){ if(finish(i)) continue; printf("*******proc %d running******\n",i); for(j = 0; j < M; j++){ if(need[i*M+j] == 0 || ava[j] == 0) req[j] = 0; else{ int k=MIN(ava[j],need[i*M+j]); req[j] = (rand() % k) + 1; } alloc[i*M+j] += req[j]; need[i*M+j] -= req[j]; ava[j] -= req[j]; } if(secure() == 0){ for(j = 0; j < M; j++){ alloc[i*M+j] -= req[j]; need[i*M+j] += req[j]; ava[j] += req[j]; } printf("proc %d sleeping\n\n",i); //pp(); }else{ if(finish(i)) fre(i); printf("%d %d %d to proc %d\n\n",req[0],req[1],req[2],i); pp(); } printf("\n"); //getchar(); }//for N if(ava[0] == 10 && ava[1] == 5 && ava[2] == 7) break; } return 0; }
int main() { list *a = malloc(sizeof(list)); list *b; a->i = 1; b = create(b,2); b->prev = a; b->next = NULL; a->prev = NULL; a->next = b; printf("%d",a->i); fre(a); return 0; }
struct foo *foo_alloc(void) { struct foo *fp; int idx; if ((fp = malloc(sizeof(struct foo))) != NULL) { fp->f_count = 1; if (pthread_mutex_init(&fp->f_lock, NULL) != 0) { fre(fp); return(NULL); } idx = HASH(fp); pthread_mutex_lock(&hashlock); fp->f_next = fh[idx]; fh[idx] = fp; pthread_mutex_lock(&fp->f_lock); pthread_mutex_unlock(&hashlock); /* ... countinue initialization ... */ pthread_mutex_unlock(&fp->f_lock); } return(fp); }
int main(int argc, char*argv[]){ if(strcmp(argv[1],"[-h]")==0) {/*help called*/ help(); return 0; } if(argc<15){ fprintf(stderr,"ERROR: INCORRECT NUMBER OF INPUTS.\n"); return 0;} size1 =0; size2 =0; size3 = 0; associates =0; as2=0; as3=0; numset1=0; numset2=0; numset3=0; int i =0; replace = 0; while(i<argc){ /*scanning values*/ if(strcmp(argv[i],"-l1size")==0){ size1 = atoi(argv[i+1]); } else if(strcmp(argv[i],"-l1assoc")==0){ if(strcmp(argv[i+1],"direct")==0){ associates = 1; } else if(strcmp(argv[i+1],"assoc")==0){ numset1=1; } else{ associates = atoi(argv[i+1]+6); } }/*l1 if statements ends*/ if(strcmp(argv[i],"-l2size")==0){ size2 = atoi (argv[i+1]); } else if(strcmp(argv[i],"-l2assoc")==0){ if(strcmp(argv[i+1],"direct")==0){ numset2=1; as2 = 1; } else if(strcmp(argv[i+1],"assoc")==0){ numset2=1; } else{ as2 = atoi(argv[i+1]+6); } } else if(strcmp(argv[i],"-l3size")==0){ size3 = atoi(argv[i+1]); } else if(strcmp(argv[i],"-l3assoc")==0){ if(strcmp(argv[i+1],"direct")==0){ as3 = 1; } else if(strcmp(argv[i+1],"assoc")==0){ numset3=1; } else{ as3 = atoi(argv[i+1]+6); } block = atoi(argv[i+2]); } else if(strcmp(argv[i],"FIFO")==0){ replace =1; } i++; } //printf("%d %d ",numset2,as2); if(block==0){ /*error check*/ fprintf(stderr,"ERROR: INCORRECT INPUT\n"); return 0; } if(numset1 == 1){/*number of set for l1 == 1, fully assoc*/ associates = size1/block; } else if(associates==1){/*number of set l1 is direct*/ numset1 = size1/block; if(numset1>1) fullasso=size1/block; } else if (associates>1){ /*else its set assoc*/ numset1 = size1/(block*associates); if(numset1>1) fullasso = size1/block; } if(numset2==1){/*l2 assoc*/ as2 = size2/block; } else if(as2==1){/*l2 direct*/ numset2 = size2/block; } else if (as2>1){/*l2 set assoc*/ numset2= size2/(block*as2); } if(numset3==1){/*l3 assoc*/ as3 = size3/block; } else if(as3==1){/*l3 direct*/ numset3 = size3/block; } else if (as3>1){/*l3 set assoc*/ numset3 = size3/(as3*block); } offset = check(block); /*setting offset*/ totalcapacity = numset1*associates; if(numset1==0||numset2==0||numset3==0||associates==0||as2==0||as3==0||check(numset1)==-1||check(numset2)==-1||check(numset3)==-1||offset==-1){ fprintf(stderr,"ERROR: INCORRECT INPUT\n"); return 0; }/*error checking*/ /*CHECK FOR TRACE FILE*/ FILE *pfi; /*text file open*/ pfi = fopen(argv[argc-1],"r"); if(pfi==NULL){/*if the file does not exist*/ fprintf(stderr,"ERROR: File does not exist!\n"); return 0; } memcount =0;/*keep track of memory accesses*/ unsigned long long temp; /*this would store and read hexadecimeals from text*/ if(size1<block || size2<block || size3<block||size1>size2||size2>size3||size1>size3){ fprintf(stderr,"ERROR: size is smaller \n"); return 0; } /*to see if there is a cache size hierarchy */ /*make all the caches also define total capacity management, all the misses, hits, cold misses, l1 miss, l2 miss, hits for all, capacity miss, capacity updates*/ struct node** l1 = (struct node **) malloc(sizeof(struct node*)*numset1); int associat = 0; int num = 0; while(num<numset1){/*l1 memory allocation*/ associat=1; l1[num]=(struct node *) malloc(sizeof(struct node)*associates); l1[num][0].frequency = 0; l1[num][0].tag = 0; while(associat<associates){ l1[num][associat].frequency=0; l1[num][associat].tag=0; associat++; } num++; } //printf("%d %d %d %d %d\n",numset2,numset3,as2,as3,fullasso); struct node ** l2 = (struct node **) malloc(sizeof(struct node *)*numset2); num = 0; while(num<numset2){ /*l2 memory allocation*/ l2[num]=(struct node *)malloc(sizeof(struct node)*as2); l2[num][0].frequency = 0; l2[num][0].tag=0; associat=1; while(associat<as2){ l2[num][associat].frequency = 0; l2[num][associat].tag=0; associat++; //printf("%d\n",associat); } num++; } struct node ** l3 = (struct node **) malloc(sizeof(struct node *)*numset3); num=0; while(num<numset3){/*for l3 memory location*/ l3[num]=malloc(sizeof(struct node)*as3); l3[num][0].frequency = 0; l3[num][0].tag=0; associat=1; while(associat<as3){ l3[num][associat].frequency = 0; l3[num][associat].tag=0; associat++; } num++; } struct node ** fullas = (struct node **) malloc(sizeof(struct node *)); if(numset1>1){/*memory for fully l1 associate*/ fullas[0]=malloc(sizeof(struct node)*fullasso); fullas[0][0].frequency = 0; fullas[0][0].tag=0; associat=1; while(associat<fullasso){ fullas[0][associat].frequency = 0; fullas[0][associat].tag=0; // printf("%d \n",associat); associat++; } } missesl1 = 0; missesl2 =0; missesl3 = 0; hitsl1 =0 ; hitsl2 =0; hitsl3 = 0 ; coldmiss = 0; coldmiss2 = 0; coldmiss3 = 0; int check = 0; int count= 0; while(fscanf(pfi,"%llx",&temp)!=EOF){ memcount++; check = findl1(numset1,temp,associates,l1); if(check==1){/*l1 hit and over*/ hitsl1++; continue; } else {/*l1 misses*/ missesl1++; check = addl1(temp,l1); if(check==1){ coldmiss++; }else{ //if(numset1>1){ //check = checkspace(l1); //if(check==1){ // conflict++;} //else{ // capacity++;} // } replacementl1(temp,l1); } } // if(totalcapacity==0) count++; //if(numset1>1){ // check = findfull(temp,fullas); // if(check==0){/*you want to add to fully associate*/ // check = fulladd(temp,fullas); // if(check==0){ // capacity++; // replacementfullas(temp,fullas); // } // } //} check = findl1(numset2,temp,as2,l2); if(check ==1){/*finiding stuff in l2*/ hitsl2++; continue; } else { missesl2++; check = addl2(temp,l2); if(check == 1){ coldmiss2++; } else{ replacementl2(temp,l2); } /* check = findl1(numset3,temp,l3);*/ } check = findl1(numset3,temp,as3,l3); if(check==1){ hitsl3++; continue; } else{ missesl3++; check = addl3(temp,l3); if(check==1){ coldmiss3++; } else{ replacementl3(temp,l3); } } } conflict =0; // printf("%d",count); // if(numset1>1){ // conflict = missesl1 - capacity - coldmiss; // } //else{ if(numset1==1){ capacity = missesl1 - coldmiss; } fclose(pfi); if(atoi(argv[1])==1){ printf("Memory accesses: %d\nL1 Cache hits: %d\nL1 Cache miss: %d\nL1 Cold misses: %d\nL1 Conflict misses: %d\nL1 Capacity misses: %d",memcount,hitsl1,missesl1,coldmiss,conflict,capacity); } else if(atoi(argv[1])==2){ printf("Memory accesses: %d\nL2 Cache hits: %d\nL2 Cache miss: %d\nL2 Cold misses: %d",memcount,hitsl2,missesl2,coldmiss2); } else if(atoi(argv[1])==3){ printf("Memory accesses: %d\nL3 Cache hits: %d\nL3 Cache miss: %d\nL3 Cold misses: %d",memcount,hitsl3,missesl3,coldmiss3); } else {printf("Memory accesses: %d\nL1 Cache hits: %d\nL1 Cache miss: %d\nL2 Cache hits: %d\nL2 Cache miss: %d\nL3 Cache hits: %d\nL3 Cache miss: %d\nL1 Cold misses: %d\nL2 Cold misses: %d\nL3 Cold misses: %d\nL1 Conflict misses: %d\nL1 Capacity misses: %d",memcount,hitsl1,missesl1,hitsl2,missesl2,hitsl3,missesl3,coldmiss,coldmiss2,coldmiss3,conflict,capacity); } fre(l1,l2,l3,fullas); /*freeing memory*/ return 0; }