/*************************************************************************** *cr *cr (C) Copyright 2010 The Board of Trustees of the *cr University of Illinois *cr All Rights Reserved *cr ***************************************************************************/ /*############################################################################*/ #include #include #include #include #include #include "layout_config.h" #include "lbm.h" #include "lbm_macros.h" #include "main.h" #include "ocl.h" /*############################################################################*/ static cl_mem OpenCL_srcGrid, OpenCL_dstGrid; /*############################################################################*/ struct pb_TimerSet timers; int main(int nArgs, char *arg[]) { MAIN_Param param; int t; OpenCL_Param prm; pb_InitializeTimerSet(&timers); struct pb_Parameters *params; params = pb_ReadParameters(&nArgs, arg); params->inpFiles = (char **)malloc(sizeof(char *) * 2); params->inpFiles[0] = (char *)malloc(100); params->inpFiles[1] = NULL; strncpy(params->inpFiles[0], "120_120_150_ldc.of", 100); static LBM_GridPtr TEMP_srcGrid; // Setup TEMP datastructures LBM_allocateGrid((float **)&TEMP_srcGrid); MAIN_parseCommandLine(nArgs, arg, ¶m, params); MAIN_printInfo(¶m); OpenCL_initialize(params, &prm); MAIN_initialize(¶m, &prm); for (t = 1; t <= param.nTimeSteps; t++) { pb_SwitchToTimer(&timers, pb_TimerID_KERNEL); OpenCL_LBM_performStreamCollide(&prm, OpenCL_srcGrid, OpenCL_dstGrid); pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE); LBM_swapGrids(&OpenCL_srcGrid, &OpenCL_dstGrid); if ((t & 63) == 0) { printf("timestep: %i\n", t); #if 0 CUDA_LBM_getDeviceGrid((float**)&CUDA_srcGrid, (float**)&TEMP_srcGrid); LBM_showGridStatistics( *TEMP_srcGrid ); #endif } } MAIN_finalize(¶m, &prm); LBM_freeGrid((float **)&TEMP_srcGrid); pb_SwitchToTimer(&timers, pb_TimerID_NONE); pb_PrintTimerSet(&timers); pb_FreeParameters(params); return 0; } /*############################################################################*/ void MAIN_parseCommandLine(int nArgs, char *arg[], MAIN_Param *param, struct pb_Parameters *params) { struct stat fileStat; /*if (nArgs < 2) { printf("syntax: lbm