code: func NewManuallyManagedContext(d Device, flags ContextFlags) *Ctx {
  	var cctx C.CUcontext
  	err := result(C.cuCtxCreate(&cctx, C.uint(flags), C.CUdevice(d)))
  	if err != nil {
  		panic(err)
  	}
  	ctx := newContext(makeContext(cctx))
  	ctx.device = d
  	ctx.flags = flags
  
  	return ctx
  }
docs: // NewManuallyManagedContext creates a new context, but the Run() method which locks a goroutine to an OS thread, has to be manually run