#include "OpenCLRunTime.h" #include #include #include #include #include #include #include #include using namespace std; namespace OpenCLRunTime { typedef map lincomb_kernels_t; lincomb_kernels_t lincomb_kernels; static string name(char const* const var, int const n) { stringstream buf; buf << var << n; return buf.str(); } // static string name(int const var, int const tl) // { // stringstream buf; // buf << CCTK_VarName(var); // for (int i=0; i(cctkGH_); DECLARE_CCTK_PARAMETERS; if (scale == 0.0) { Accelerator_RequireInvalidData(cctkGH, &var, &rl, &tl, 1, 1); } else { Accelerator_RequireValidData(cctkGH, &var, &rl, &tl, 1, 1); } vector const rls(nsrcs, rl); Accelerator_RequireValidData(cctkGH, srcs, &rls[0], tls, nsrcs, 1); // string const varname = name(var, 0); string const varname = "var"; vector srcnames(nsrcs); for (int n=0; n varindices(nsrcs+1); vector timelevels(nsrcs+1); vector aliases(nsrcs+1); varindices[0] = var; timelevels[0] = tl; aliases[0] = varname.c_str(); for (int n=0; ncctk_lsh; OpenCLRunTime_CallKernel(cctkGH, CCTK_THORNSTRING, kernelname.c_str(), sources, NULL, &varindices.front(), &timelevels.front(), &aliases.front(), nsrcs+1, imin, imax, &pkernel); Accelerator_NotifyDataModified(cctkGH, &var, &rl, &tl, 1, 1); return 0; } } // namespace OpenCLRunTime