16 std::vector<void*> m_args;
17 cudaKernelNodeParams m_parms;
26 template <
typename... Args>
28 : kernelParmData(std::forward<Args>(args)...)
35 auto func() {
return m_parms.func; }
36 void func(
void* v) { m_parms.func = v; }
37 auto grid_dim() {
return m_parms.gridDim; }
38 void grid_dim(
const dim3& v) { m_parms.gridDim = v; }
39 auto block_dim() {
return m_parms.blockDim; }
40 void block_dim(
const dim3& v) { m_parms.blockDim = v; }
41 auto shared_mem_bytes() {
return m_parms.sharedMemBytes; }
42 void shared_mem_bytes(
unsigned int v) { m_parms.sharedMemBytes = v; }
43 auto kernel_params() {
return m_parms.kernelParams; }
44 void kernel_params(
const std::vector<void*>& v)
47 m_parms.kernelParams = m_args.data();
49 void parse(std::function<std::vector<void*>(U&)> pred)
51 m_args = pred(kernelParmData);
52 m_parms.kernelParams = m_args.data();
54 auto extra() {
return m_parms.extra; }
55 void extra(
void** v) { m_parms.extra = v; }
57 const cudaKernelNodeParams* handle()
const {
return &m_parms; }