/// Constructor. Extracts a backend::kernel instance from backend::program. kernel(const command_queue &queue, const program &P, const std::string &name, std::function<size_t(size_t)> smem ) : ctx(queue.context()), P(P), smem(0) { cuda_check( cuModuleGetFunction(&K, P.raw(), name.c_str()) ); config(queue, smem); }
/// Constructor. Extracts a backend::kernel instance from backend::program. kernel(const command_queue &queue, const program &P, const std::string &name, size_t smem_per_thread = 0 ) : ctx(queue.context()), P(P), smem(0) { cuda_check( cuModuleGetFunction(&K, P.raw(), name.c_str()) ); config(queue, [smem_per_thread](size_t wgs){ return wgs * smem_per_thread; }); }