int main(int argc, char* argv[]) { if(argc != 7){ printf("USAGE: cgm GENOMEFILE GENOMESIZE READFILE READFILESIZE DATABASEFILE THREADS\n"); exit(-1); } FILE* g = fopen(argv[1], "r"); int gSize = atoi(argv[2]); FILE* r = fopen(argv[3], "r"); int numReads = atoi(argv[4]); struct db* database = db_open(argv[5], 1); if(g == NULL || r == NULL || database == NULL){ printf("Error opening input file!\n"); exit(-1); } int threads = atoi(argv[6]); omp_set_num_threads(threads); uint32_t* genome = (uint32_t*) malloc(sizeof(uint32_t)*gSize); if(genome == NULL){ printf("Error allocating memory!\n"); exit(-1); } int** reads = (int**) malloc(sizeof(int*)*CHUNKSIZE); if(reads == NULL){ printf("Error allocating memory!\n"); exit(-1); } int i, j; for(i = 0; i < CHUNKSIZE; i++){ reads[i] = (int*) malloc(sizeof(int)*4); if(reads[i] == NULL){ printf("Error allocating memory!\n"); exit(-1); } } fread(genome, gSize, gSize, g); for(i = 0; i < numReads; i+=CHUNKSIZE){ for(j = 0; j < CHUNKSIZE && i+j < numReads; j++) fread(&(reads[j][0]), 16, 16, r); int num = CHUNKSIZE; if(i + CHUNKSIZE > numReads) num = numReads - i; cgm(genome,gSize,reads,num,16,database); } return 0; }
int main(int argc, char* argv[]) { if(argc != 6){ printf("USAGE: cgmtest MAXVALUE LISTSIZE THREADS CHUNKSIZE REPS \n"); exit(-1); } maxValue = (uint32_t) strtoul(argv[1], NULL, 10); listSize = atoi(argv[2]); int threads = atoi(argv[3]); int p = atoi(argv[4]); int reps = atoi(argv[5]); omp_set_num_threads(threads); uint32_t* results = NULL; struct db mydb; struct timeval t1, t2; seq = 0; double overall = 0; srand( (unsigned)time(NULL)); gettimeofday(&t1, NULL); int i, j; #pragma omp parallel for reduction(+:seq) \ schedule(dynamic, p) \ private(results) for(i = 0; i < reps; i++) { // printf("Executing...\n"); cgm(0,0,0,0, &results, &mydb); free(results); results = NULL; } gettimeofday(&t2, NULL); overall = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms overall += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms // struct db d; // uint32_t u; // uint32_t* vals; // double elapsed = 0; // double dbTime = 0; // // for(i = 0; i < reps; i++) // { // gettimeofday(&t1, NULL); // db_query (&d, u, &vals); // // gettimeofday(&t2, NULL); // elapsed = (t2.tv_sec - t1.tv_sec) * 1000.0; // sec to ms // elapsed += (t2.tv_usec - t1.tv_usec) / 1000.0; // us to ms // // dbTime += elapsed; // } printf("\n*****Result*****:\n"); printf("Average Time (w/o generating lists): %f\n", seq/reps); printf("Average Time (w/ generating lists): %f\n", overall/reps); // printf("Average List Generation Time: %f\n", dbTime/reps); // printf("Calculated Average Time (w/o generating lists): %f\n", overall/reps - dbTime/reps*4); }