示例#1
0
文件: example1.c 项目: MoKarma/pocl
int
main (void)
{
  FILE *source_file;
  char *source;
  int source_size;
  cl_float4 *srcA, *srcB;
  cl_float *dst;
  int i;

  source_file = fopen("example1.spir", "r");
  if (source_file == NULL) 
    source_file = fopen (SRCDIR "/example1.spir", "r");

  assert(source_file != NULL && SRCDIR "example1.spir not found!!");

  fseek (source_file, 0, SEEK_END);
  source_size = ftell (source_file);
  fseek (source_file, 0, SEEK_SET);

  source = (char *) malloc (source_size +1 );
  assert (source != NULL);

  fread (source, source_size, 1, source_file);

  fclose (source_file);

  srcA = (cl_float4 *) malloc (N * sizeof (cl_float4));
  srcB = (cl_float4 *) malloc (N * sizeof (cl_float4));
  dst = (cl_float *) malloc (N * sizeof (cl_float));

  for (i = 0; i < N; ++i)
    {
      srcA[i].s[0] = (cl_float)i;
      srcA[i].s[1] = (cl_float)i;
      srcA[i].s[2] = (cl_float)i;
      srcA[i].s[3] = (cl_float)i;
      srcB[i].s[0] = (cl_float)i;
      srcB[i].s[1] = (cl_float)i;
      srcB[i].s[2] = (cl_float)i;
      srcB[i].s[3] = (cl_float)i;
    }

  if (exec_dot_product_kernel (source, source_size, N, srcA, srcB, dst))
    {
      printf ("Error running the tests\n");
      return -1;
    }

  for (i = 0; i < 4; ++i)
    {
      printf ("(%f, %f, %f, %f) . (%f, %f, %f, %f) = %f\n",
        srcA[i].s[0], srcA[i].s[1], srcA[i].s[2], srcA[i].s[3],
        srcB[i].s[0], srcB[i].s[1], srcB[i].s[2], srcB[i].s[3],
        dst[i]);
      if (srcA[i].s[0] * srcB[i].s[0] +
          srcA[i].s[1] * srcB[i].s[1] +
          srcA[i].s[2] * srcB[i].s[2] +
          srcA[i].s[3] * srcB[i].s[3] != dst[i])
        {
          printf ("FAIL\n");
          return -1;
        }
    }

  printf ("OK\n");
  return 0;
}
示例#2
0
int
main (void)
{
    FILE *source_file;
    char *source;
    int source_size;
    cl_float4 *srcA, *srcB;
    cl_float *dst;
    int ierr;
    int i;

    source_file = fopen("example1.cl", "r");
    if (source_file == NULL)
        source_file = fopen (SRCDIR "/example1.cl", "r");

    assert(source_file != NULL && "example1.cl not found!");

    fseek (source_file, 0, SEEK_END);
    source_size = ftell (source_file);
    fseek (source_file, 0, SEEK_SET);

    source = (char *) malloc (source_size +1 );
    assert (source != NULL);

    fread (source, source_size, 1, source_file);
    source[source_size] = '\0';

    fclose (source_file);

    srcA = (cl_float4 *) malloc (N * sizeof (cl_float4));
    srcB = (cl_float4 *) malloc (N * sizeof (cl_float4));
    dst = (cl_float *) malloc (N * sizeof (cl_float));

    for (i = 0; i < N; ++i)
    {
        srcA[i].x = i;
        srcA[i].y = i;
        srcA[i].z = i;
        srcA[i].w = i;
        srcB[i].x = i;
        srcB[i].y = i;
        srcB[i].z = i;
        srcB[i].w = i;
    }

    ierr = exec_dot_product_kernel (source, N, srcA, srcB, dst);
    if (ierr) printf ("ERROR\n");

    for (i = 0; i < N; ++i)
    {
        printf ("(%f, %f, %f, %f) . (%f, %f, %f, %f) = %f\n",
                srcA[i].x, srcA[i].y, srcA[i].z, srcA[i].w,
                srcB[i].x, srcB[i].y, srcB[i].z, srcB[i].w,
                dst[i]);
        if (srcA[i].x * srcB[i].x +
                srcA[i].y * srcB[i].y +
                srcA[i].z * srcB[i].z +
                srcA[i].w * srcB[i].w != dst[i])
        {
            printf ("FAIL\n");
            return -1;
        }
    }

    printf ("OK\n");
    return 0;
}