   compilePTX(src, headers, includeNames, ptx);
 
   void *args[] = {(void*)&aInfo, (void*)&bInfo, (void*)&cInfo, (void*)&totalElements};
-  run(ptx, "kernel", args, grid, block);
+  launch(ptx.data(), "kernel", args, grid, block);
 }
 
 

  compilePTX(src, headers, includeNames, ptx);

  void *args[] = {(void*)&aInfo, (void*)&totalElements};
  run(ptx, "kernel", args, grid, block);
}

// Example op: 'x = x*y'

  }
}

void launch(const char* ptx, const char* name, void* args[], dim3 grid, dim3 block)
{
  CUmodule module;
  CUfunction func;

  CUDA_CHECK(cuModuleLoadData(&module, ptx));
  CUDA_CHECK(cuModuleGetFunction(&func, module, name));

  CUDA_CHECK(cuLaunchKernel(func,
