示例#1
0
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);
}
示例#2
0
static const char *mkvers(void)
{
     static char buf[160];
     MKLGetVersionString(buf, 160);
     return buf;
}