static CALresult runNuStep(MWCALInfo* ci, SeparationCALMem* cm, const IntegralArea* ia, const SeparationCALChunks* chunks, CALint pollingMode, CALuint nuStep) { CALdomain domain; CALuint i; CALresult err = CAL_RESULT_OK; err = setNuKernelArgs(cm, ia, nuStep); if (err != CAL_RESULT_OK) return err; domain.x = 0; domain.width = ia->r_steps; for (i = 0; i < chunks->nChunkMu && err == CAL_RESULT_OK; ++i) { domain.y = chunks->chunkMuBorders[i]; domain.height = chunks->chunkMuBorders[i + 1] - chunks->chunkMuBorders[i]; mw_begin_critical_section(); err = runKernel(ci, &domain, pollingMode, chunks->chunkWaitTime); mw_end_critical_section(); } return err; }
static cl_int runNuStep(CLInfo* ci, const IntegralArea* ia, const RunSizes* runSizes, cl_uint nu_step) { cl_uint i; cl_int err = CL_SUCCESS; size_t offset[1]; err = setNuKernelArgs(ia, nu_step); if (err != CL_SUCCESS) { mw_printf("Failed to set nu kernel argument\n"); return err; } mw_begin_critical_section(); offset[0] = 0; for (i = 0; i < runSizes->nChunk && err == CL_SUCCESS; ++i) { err = runIntegralKernel(ci, runSizes, offset); checkQuitRequest(); /* Kernel has finished by now */ offset[0] += runSizes->global[0]; } mw_end_critical_section(); return err; }