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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; } } }