void bi_getinfo(bi_info* pinfo) { mydata_t* penv; char buf[150]; char version[100]; int loop; (void)memset(pinfo, 0, sizeof(bi_info)); penv = (mydata_t*)malloc(sizeof(mydata_t)); /* get environment variables for the kernel */ evaluate_environment(penv); pinfo->codesequence = bi_strdup("DftiComputeForward()"); pinfo->kerneldescription = bi_strdup("1D Fast Fourier Transform, Powers of 2, single precision, complex data, MKL (C)"); pinfo->xaxistext = bi_strdup("Problem Size"); pinfo->maxproblemsize = penv->steps; pinfo->num_processes = 1; pinfo->num_threads_per_process = 0; pinfo->kernel_execs_mpi1 = 0; pinfo->kernel_execs_mpi2 = 0; pinfo->kernel_execs_pvm = 0; pinfo->kernel_execs_omp = 0; pinfo->kernel_execs_pthreads = 0; n_of_works = 2; /* in place, out of place */ n_of_sure_funcs_per_work = 1; /* FLOPS (calculated) */ pinfo->numfunctions = n_of_works * n_of_sure_funcs_per_work; /* allocating memory for y axis texts and properties */ pinfo->yaxistexts = malloc(pinfo->numfunctions * sizeof(char*)); if (pinfo->yaxistexts == NULL) { fprintf(stderr, "Allocation of yaxistexts failed.\n"); fflush(stderr); exit(127); } pinfo->outlier_direction_upwards = malloc(pinfo->numfunctions * sizeof(int)); if (pinfo->outlier_direction_upwards == NULL) { fprintf(stderr, "Allocation of outlier direction failed.\n"); fflush(stderr); exit(127); } pinfo->legendtexts = malloc(pinfo->numfunctions * sizeof(char*)); if (pinfo->legendtexts == NULL) { fprintf(stderr, "Allocation of legendtexts failed.\n"); fflush(stderr); exit(127); } pinfo->base_yaxis = malloc(pinfo->numfunctions * sizeof(double)); if ( pinfo->base_yaxis == NULL ) { fprintf(stderr, "Allocation of base yaxis failed.\n"); fflush(stderr); exit(127); } /* setting up y axis texts and properties */ pinfo->yaxistexts[0] = bi_strdup("FLOPS"); pinfo->outlier_direction_upwards[0] = 0; pinfo->base_yaxis[0] = 0; pinfo->legendtexts[0] = bi_strdup("FLOPS in place"); pinfo->yaxistexts[1] = bi_strdup("FLOPS"); pinfo->outlier_direction_upwards[1] = 0; pinfo->base_yaxis[1] = 0; pinfo->legendtexts[1] = bi_strdup("FLOPS out of place"); /* this kernel needs a logarithmic x-axis */ pinfo->base_xaxis = 2.0; /*get MKL version*/ MKLGetVersionString(version,100); for (loop=0;loop<100;loop++) { if (version[loop]=='\0') break; } if (loop<100) sprintf(buf,"mklversion=\"%s\"",version); else sprintf(buf,"mklversion=\"\""); pinfo->additional_information=bi_strdup(buf); /* free all used space */ if (penv)free(penv); }
static const char *mkvers(void) { static char buf[160]; MKLGetVersionString(buf, 160); return buf; }