Ejemplo n.º 1
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N, N);
  PSGrid3DFloat g1 = PSGrid3DFloatNew(N, N, N);
  PSGrid3DFloat g2 = PSGrid3DFloatNew(N, N, N);

  PSDomain3D d = PSDomain3DNew(0, N, 0, N, 0, N);
  size_t nelms = N*N*N;
  
  float *indata = (float *)malloc(sizeof(float) * nelms);
  int i;
  for (i = 0; i < nelms; i++) {
    indata[i] = i;
  }
  float *outdata = (float *)malloc(sizeof(float) * nelms);
    
  PSGridCopyin(g1, indata);
  PSGridCopyin(g2, indata);  

  PSStencilRun(PSStencilMap(kernel, d, g1, g2));
    
  PSGridCopyout(g2, outdata);
  dump(outdata);  

  PSGridFree(g1);
  PSGridFree(g2);
  PSFinalize();
  free(indata);
  free(outdata);
  return 0;
}
Ejemplo n.º 2
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N, N);
  PSGrid3DPoint g = PSGrid3DPointNew(N, N, N);

  PSDomain3D d = PSDomain3DNew(1, N-1, 1, N-1, 1, N-1);
  size_t nelms = N*N*N;
  
  struct Point *indata = (struct Point *)malloc(
      sizeof(struct Point) * nelms);
  struct Point *outdata = (struct Point *)malloc(
      sizeof(struct Point) * nelms);
  int i;
  for (i = 0; i < nelms; i++) {
    indata[i].p[0] = i;
    indata[i].p[1] = 0;
    outdata[i].p[0] = 0;
    outdata[i].p[1] = 0;
  }
    
  PSGridCopyin(g, indata);

  PSStencilRun(PSStencilMap(kernel1, d, g));
    
  PSGridCopyout(g, outdata);

  dump(outdata);

  PSGridFree(g);
  PSFinalize();
  free(indata);
  free(outdata);
  return 0;
}
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N, N);
  PSGrid3DPoint1 g1 = PSGrid3DPoint1New(N, N, N);
  size_t nelms = N*N*N;
  struct Point1 *indata = (struct Point1 *)malloc(
      sizeof(struct Point1) * nelms);
  struct Point1 *outdata = (struct Point1 *)malloc(
      sizeof(struct Point1) * nelms);
  int i, j;
  int x = 0;
  float c = 1.0f;
  for (x = 0; x < nelms; ++x) {
    for (i = 0; i < DIM1; ++i) {
      for (j = 0; j < DIM2; ++j) {
        indata[x].p[i][j] = c++;
        outdata[x].p[i][j] = 0;
      }
    }
  }
    
  PSGridCopyin(g1, indata);
  PSGridCopyout(g1, outdata);

  check(indata, outdata);

  PSGridFree(g1);
  PSFinalize();
  free(indata);
  free(outdata);
  return 0;
}
Ejemplo n.º 4
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, NX, NX, NX);
  PSGrid3DReal g = PSGrid3DRealNew(NX, NX, NX);
  PSDomain3D d = PSDomain3DNew(0, NX, 0, NX, 0, NX);  

  struct timeval time_begin, time_end;
  int    nx    = NX;
  int    ny    = NX;
  int    nz    = NX;
  REAL  *buff  = (REAL *)malloc(sizeof(REAL) *nx*ny*nz);
  REAL   time  = 0.0;
  int    count = 1000;
  REAL l, dx, dy, dz, kx, ky, kz, kappa, dt;
  REAL ce, cw, cn, cs, ct, cb, cc;

  l = 1.0;
  kappa = 0.1;
  dx = dy = dz = l / nx;
  kx = ky = kz = 2.0 * M_PI;
  dt = 0.1*dx*dx / kappa;

  init(buff, nx, ny, nz, kx, ky, kz, dx, dy, dz, kappa, time);

  PSGridCopyin(g, buff);

  ce = cw = kappa*dt/(dx*dx);
  cn = cs = kappa*dt/(dy*dy);
  ct = cb = kappa*dt/(dz*dz);
  cc = 1.0 - (ce + cw + cn + cs + ct + cb);

  gettimeofday(&time_begin, NULL);
  PSStencilRun(PSStencilMap(kernel, d, g,ce,cw,cn,cs,ct,cb,cc),
               count);
  gettimeofday(&time_end, NULL);

  time += dt * count;
  REAL *answer = (REAL *)malloc(sizeof(REAL) * nx*ny*nz);
  init(answer, nx, ny, nz, kx, ky, kz, dx, dy, dz, kappa, time);
  PSGridCopyout(g, buff);
  REAL err = accuracy(buff, answer, nx*ny*nz);
  double elapsed_time = (time_end.tv_sec - time_begin.tv_sec)
                        + (time_end.tv_usec - time_begin.tv_usec)*1.0e-6;
  REAL mflops = (nx*ny*nz)*13.0*count/elapsed_time * 1.0e-06;
  double thput = (nx * ny * nz) * sizeof(REAL) * 2.0 * count
                 / elapsed_time / (1000 * 1000 * 1000);

  fprintf(stderr, "elapsed time : %.3f (s)\n", elapsed_time);
  fprintf(stderr, "flops        : %.3f (MFlops)\n", mflops);
  fprintf(stderr, "throughput   : %.3f (GB/s)\n", thput);
  fprintf(stderr, "accuracy     : %e\n", err);  
  fprintf(stderr, "count        : %d\n", count);
  free(answer);
  PSGridFree(g);
  PSFinalize();
  return 0;
}
Ejemplo n.º 5
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N+2, N);
  PSGrid3DFloat g1 = PSGrid3DFloatNew(N, N+2, N);
  PSGrid3DFloat g2 = PSGrid3DFloatNew(N, N+2, N);
  PSGrid1DFloat cx = PSGrid1DFloatNew(N);
  PSGrid2DFloat cy = PSGrid2DFloatNew(N+2, N);


  PSDomain3D d = PSDomain3DNew(1, N-1, 1, N+1, 1, N-1);
  size_t nelms = N*(N+2)*N;
  
  float *indata = (float *)malloc(sizeof(float) * nelms);
  int i;
  for (i = 0; i < nelms; i++) {
    indata[i] = i;
  }
  float *outdata = (float *)malloc(sizeof(float) * nelms);
    
  PSGridCopyin(g1, indata);
  PSGridCopyin(g2, indata);

  for (i = 0; i < N; ++i) {
    indata[i] = 1 + (i%2); // 1 or 2
  }
  PSGridCopyin(cx, indata);
  for (i = 0; i < (N+2)*N; ++i) {
    indata[i] = 1 + (i%2); // 1 or 2
  }
  PSGridCopyin(cy, indata);

  PSStencilRun(PSStencilMap(kernel, d, g1, g2, cx, cy));
    
  PSGridCopyout(g2, outdata);
  dump(outdata);  

  PSGridFree(g1);
  PSGridFree(g2);
  PSGridFree(cx);
  PSGridFree(cy);
  PSFinalize();
  free(indata);
  free(outdata);
  return 0;
}
Ejemplo n.º 6
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N+1, N+1, N+1);
  PSGrid3DFloat g1 = PSGrid3DFloatNew(N, N, N);
  PSGrid3DFloat g2 = PSGrid3DFloatNew(N+1, N+1, N+1);  
  PSDomain3D d = PSDomain3DNew(0, N, 0, N, 0, N);
  size_t nelms1 = N*N*N;
  size_t nelms2 = (N+1)*(N+1)*(N+1);  
  
  float *indata = (float *)malloc(sizeof(float) * nelms2);
  int i;
  for (i = 0; i < nelms2; i++) {
    indata[i] = i;
  }

  float *outdata = (float *)malloc(sizeof(float) * nelms1);
    
  PSGridCopyin(g2, indata);

  PSStencilRun(PSStencilMap(kernel1, d, g1, g2));
    
  PSGridCopyout(g1, outdata);

  dump(outdata, nelms1, stdout);
#if 0    
  for (i = 0; i < nelms; i++) {
    if (indata[i] != outdata[i]) {
      fprintf(stderr, "Error: mismatch at %d, in: %f, out: %f\n",
              i, indata[i], outdata[i]);
    }
  }
#endif

  PSGridFree(g1);
  PSGridFree(g2);
  PSFinalize();
  free(indata);
  free(outdata);
  return 0;
}
Ejemplo n.º 7
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N, N);
  PSGrid3D g1 = PSGrid3DNew(N, N, N);
  size_t nelms = N*N*N;
  float *indata = (float *)malloc(sizeof(REAL) * nelms);
  int i;
  for (i = 0; i < nelms; i++) {
    indata[i] = i+10;
  }
  PSGridCopyin(g1, indata);
  float v;
  PSReduce(&v, PS_MIN, g1);
  float v_ref = reduce(indata);
  fprintf(stderr, "Reduction result: %f, reference: %f\n", v, v_ref);
  if (v != v_ref) {
    fprintf(stderr, "Error: Non matching result\n");
    exit(1);
  }
  PSGridFree(g1);
  PSFinalize();
  free(indata);
  return 0;
}
Ejemplo n.º 8
0
int main(int argc, char *argv[]) {
  PSInit(&argc, &argv, 3, N, N, N);
  PSGrid3DPoint g = PSGrid3DPointNew(N, N, N);

  PSDomain3D d = PSDomain3DNew(0+halo_width, N-halo_width,
                               0+halo_width, N-halo_width,
                               0+halo_width, N-halo_width);
  size_t nelms = N*N*N;
  
  struct Point *indata = (struct Point *)malloc(
      sizeof(struct Point) * nelms);
  int i;
  for (i = 0; i < nelms; i++) {
    indata[i].p = i;
    indata[i].q = i+1;
    indata[i].r = 0;
  }
  struct Point *outdata_ps = (struct Point *)malloc(
      sizeof(struct Point) * nelms);
    
  PSGridCopyin(g, indata);

  PSStencilRun(PSStencilMap(kernel1, d, g),
               PSStencilMap(kernel2, d, g),
               ITER);
    
  PSGridCopyout(g, outdata_ps);

  dump(outdata_ps);

  PSGridFree(g);
  PSFinalize();
  free(indata);
  free(outdata_ps);
  return 0;
}
Ejemplo n.º 9
0
void CState_Title::OnMsgProc(CStateController *controller,HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing)
{
	int x,y;
	int i;
	int nowOn=-1;
	x = LOWORD(lParam); 
	y=HIWORD(lParam);
	for(i=0;i<4;i++)
	{
		if(x>region[i].left && x<region[i].right && y>region[i].top && y<region[i].bottom)
		{
			nowOn=i;
			break;
		}
	}

	
	switch(uMsg)
	{
	case WM_MOUSEMOVE:
		if(nowOn!=-1 && nowOn!=selectedItem)
		{
			game.ogg.Play(OGG_SELECT);			
		}
		selectedItem=nowOn;
		
		break;
	case WM_LBUTTONDOWN:
		switch(nowOn)
		{
		case 0:game.ogg.Stop(OGG_TITLE);
			   ((CState_Main*)CState_Main::instance())->setPSInstance(0,NULL);		
			   ((CState_Main*)CState_Main::instance())->setPSInstance(1,NULL);		
			   isPlayingMusic=false;
			   ((CState_Main*)CState_Main::instance())->setPlayMode(CState_Main::SOLOMODE);				//1인용
			   game.ogg.Play(OGG_START);
			   changeState(controller,CState_Main::instance());
			   break;
		case 1: game.ogg.Stop(OGG_TITLE);
			   ((CState_Main*)CState_Main::instance())->setPSInstance(0,NULL);		
			   ((CState_Main*)CState_Main::instance())->setPSInstance(1,NULL);		
				isPlayingMusic=false;
				 ((CState_Main*)CState_Main::instance())->setPlayMode(CState_Main::COUPLEMODE);					//2인용
				game.ogg.Play(OGG_START);
				changeState(controller,CState_Main::instance());
				
			break;
		case 2:
			((CState_Main*)CState_Main::instance())->setPSInstance(0,NULL);		
			((CState_Main*)CState_Main::instance())->setPSInstance(1,NULL);
			game.ogg.Stop(OGG_TITLE);
			isPlayingMusic=false;			
			((CState_CustomSetting*)CState_CustomSetting::instance())->SetPlayer1(1);//HUNAN으로 세팅
			((CState_CustomSetting*)CState_CustomSetting::instance())->SetPlayer2(1);//HUNAM으로 세팅
			if( ((CState_CustomSetting*)CState_CustomSetting::instance())->IsInitDialog()) //start버튼 활성화
			    ((CState_CustomSetting*)CState_CustomSetting::instance())->GetUIDialog()->GetButton(8)->SetEnabled(true);

			//기존 네트워크 종료
			PSFinalize();
			//네트워크 프레임웍 초기화
			PSInitialize();

			changeState(controller,CState_CustomSetting::instance());

			
			break;
		case 3:PostQuitMessage(OGG_TITLE);break;

		}

	}
}