Example #1
0
File: sort.c Project: nip3o/tddd56
////////////////////////////////////////////////////////////////////////////////
// main computation function
////////////////////////////////////////////////////////////////////////////////
void computeImages()
{
  const char *outputname_cpu = "task1_out_cpu.rbm";
  const char *outputname_gpu = "task1_out_gpu.rbm";
  unsigned int seed;
  int i, length = dataWidth * dataHeight; // SIZE OF DATA
  unsigned short int header[2];

  gettimeofday(&t_s_cpu, NULL);
  seed = (unsigned int)t_s_cpu.tv_usec;
  printf("\nseed: %u\n",seed);

  if (init_OpenCL()<0)
  {
    close_OpenCL();
    return;
  }

  data_cpu = generateRandomField(seed,length);
  data_gpu = (unsigned int *)malloc (length*sizeof(unsigned int));

  if ((!data_cpu)||(!data_gpu))
  {
    printf("\nError allocating data.\n\n");
    return;
  }
  
  for(i=0;i<length;i++)
    data_gpu[i]=data_cpu[i];
  
  gettimeofday(&t_s_cpu, NULL);
  cpu_Sort(data_cpu,length);
  gettimeofday(&t_e_cpu, NULL);

  gettimeofday(&t_s_gpu, NULL);
  gpu_Sort(data_gpu,length);
  gettimeofday(&t_e_gpu, NULL);

// For small data sets you may print out errors here.
//  for(i=0;i<length;i++)
//    if(data_gpu[i]!=data_cpu[i]) printf("error @ %u\n",i);

  printf("\n time needed: \nCPU: %i us\n",(int)(t_e_cpu.tv_usec-t_s_cpu.tv_usec + (t_e_cpu.tv_sec-t_s_cpu.tv_sec)*1000000));
  printf("\nGPU: %i us\n\n",(int)(t_e_gpu.tv_usec-t_s_gpu.tv_usec + (t_e_gpu.tv_sec-t_s_gpu.tv_sec)*1000000));

  header[0]=dataWidth;
  header[1]=dataHeight;

  close_OpenCL();

  return;
}
Example #2
0
// Main program, inits
int main( int argc, char** argv) 
{
	glutInit(&argc, argv);
	glutInitDisplayMode( GLUT_SINGLE | GLUT_RGBA );
	glutInitWindowSize( 1024, 512 );
	glutCreateWindow("CUDA on live GL");
	glutDisplayFunc(Draw);

	ResetMilli();
	if (init_OpenCL()<0)
	{
		printf("OpenCL could not be initialized!\n");
		close_OpenCL();
		return;
	}
	readAndBuildKernel("filter.cl");
	computeImages();
	close_OpenCL();

	glutMainLoop();
}