Esempio n. 1
0
void run_test(s_resval *res, int nrepeat, int n, int m, int p,
    char *kernel_name, R c, R eps_I, R eps_B, int nthreads)
{
  char cmd[1025];
  int r, t;

  for (t = 0; t < 16; t++)
  {
    res[t].avg = K(0.0);
    res[t].min = K(1.0) / K(0.0);
    res[t].max = K(0.0);
  }

  if (nthreads < 2)
    snprintf(cmd, 1024,
        "%s %d %d %d %s " __FR__ " " __FR__ " " __FR__ " < fastsum_benchomp_test.data > fastsum_benchomp_test.out",
        CMD_DETAIL_SINGLE, n, m, p, kernel_name, c, eps_I, eps_B);
  else
    snprintf(cmd, 1024,
        "%s %d %d %d %s " __FR__ " " __FR__ " " __FR__ " %d < fastsum_benchomp_test.data > fastsum_benchomp_test.out",
        CMD_DETAIL_THREADS, n, m, p, kernel_name, c, eps_I, eps_B, nthreads);
  fprintf(stderr, "%s\n", cmd);
  check_result_value(system(cmd), 0, cmd);

  for (r = 0; r < nrepeat; r++)
  {
    int retval;
    R v[16];
    FILE *f;
    check_result_value(system(cmd), 0, cmd);
    f = fopen("fastsum_benchomp_test.out", "r");
    retval = fscanf(f,
        "" __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ " " __FR__ "", v,
        v + 1, v + 2, v + 3, v + 4, v + 5, v + 6, v + 7, v + 8, v + 9, v + 10,
        v + 11, v + 12, v + 13, v + 14, v + 15);
    check_result_value(retval, 16, "read fastsum_benchomp_test.out");
    fclose(f);

    for (t = 0; t < 16; t++)
    {
      res[t].avg += v[t];
      if (res[t].min > v[t])
        res[t].min = v[t];
      if (res[t].max < v[t])
        res[t].max = v[t];
    }
  }

  for (t = 0; t < 16; t++)
    res[t].avg /= (R)(nrepeat);

  fprintf(stderr, "%d %d: ", nthreads, nrepeat);
  for (t = 0; t < 16; t++)
    fprintf(stderr, "%.3" __FES__ " %.3" __FES__ " %.3" __FES__ " | ", res[t].avg, res[t].min, res[t].max);
  fprintf(stderr, "\n");
}
Esempio n. 2
0
void run_test(s_resval *res, int nrepeat, int m, int flags, int nthreads)
{
  char cmd[1025];
  int r,t;
  
  for (t = 0; t < 6; t++)
  {
    res[t].avg = 0.0; res[t].min = 1.0/0.0; res[t].max = 0.0;
  }

  if (nthreads < 2)
    snprintf(cmd, 1024, "./nfft_benchomp_detail_single %d %d < nfft_benchomp_test.data > nfft_benchomp_test.out", m, flags);
  else
    snprintf(cmd, 1024, "./nfft_benchomp_detail_threads %d %d %d < nfft_benchomp_test.data > nfft_benchomp_test.out", m, flags, nthreads);
  fprintf(stderr, "%s\n", cmd);
  check_result_value(system(cmd), 0, cmd);

  for (r = 0; r < nrepeat; r++)
  {
    int retval;
    double v[6];
    FILE *f;
    check_result_value(system(cmd), 0, cmd);
    f = fopen("nfft_benchomp_test.out", "r");
    retval = fscanf(f, "%lg %lg %lg %lg %lg %lg", v, v+1, v+2, v+3, v+4, v+5);
    check_result_value(retval, 6, "read nfft_benchomp_test.out");
    fclose(f);

    for (t = 0; t < 6; t++)
    {
      res[t].avg += v[t];
      if (res[t].min > v[t])
        res[t].min = v[t];
      if (res[t].max < v[t])
        res[t].max = v[t];
    }
  }

  for (t = 0; t < 6; t++)
    res[t].avg /= nrepeat;

  fprintf(stderr, "%d %d: ", nthreads, nrepeat);
  for (t = 0; t < 6; t++)
    fprintf(stderr, "%.3e %.3e %.3e | ", res[t].avg, res[t].min, res[t].max);
  fprintf(stderr, "\n");
}
Esempio n. 3
0
void run_test_create(int d, int L, int M)
{
  char cmd[1025];

  snprintf(cmd, 1024,
      "%s %d %d %d > fastsum_benchomp_test.data",
      CMD_CREATEDATASET, d, L, M);
  fprintf(stderr, "%s\n", cmd);
  check_result_value(system(cmd), 0, "createdataset");
}
Esempio n. 4
0
void run_test_create(int d, int trafo_adjoint, int N, int M, double sigma)
{
  char cmd[1025];

  if (d==1)
    snprintf(cmd, 1024, "./nfft_benchomp_createdataset %d %d %d %d %lg > nfft_benchomp_test.data", d, trafo_adjoint, N, M, sigma);
  else if (d==2)  
    snprintf(cmd, 1024, "./nfft_benchomp_createdataset %d %d %d %d %d %lg > nfft_benchomp_test.data", d, trafo_adjoint, N, N, M, sigma);
  else if (d==3)  
    snprintf(cmd, 1024, "./nfft_benchomp_createdataset %d %d %d %d %d %d %lg > nfft_benchomp_test.data", d, trafo_adjoint, N, N, N, M, sigma);
  else if (d==4)  
    snprintf(cmd, 1024, "./nfft_benchomp_createdataset %d %d %d %d %d %d %d %lg > nfft_benchomp_test.data", d, trafo_adjoint, N, N, N, N, M, sigma);
  else
    exit(1);
  fprintf(stderr, "%s\n", cmd);
  check_result_value(system(cmd), 0, "createdataset");
}