Return type:
      Callable
Example:
  code_string = "template <typename T> T my_kernel(T x, T y, T alpha) { return -x + alpha * y; }"
  jitted_fn = create_jit_fn(code_string, alpha=1.0)
  a = torch.rand(3, device='cuda')
  b = torch.rand(3, device='cuda')
  # invoke jitted function like a regular python function
  result = jitted_fn(a, b, alpha=3.14)

code_string also allows multiple function definitions, and the last
   function will be treated as the entry function.
Example:
  code_string = "template <typename T> T util_fn(T x, T y) { return ::sin(x) + ::cos(y); }"
  code_string += "template <typename T> T my_kernel(T x, T y, T val) { return ::min(val, util_fn(x, y)); }"
  jitted_fn = create_jit_fn(code_string, val=0.0)
  a = torch.rand(3, device='cuda')
  b = torch.rand(3, device='cuda')
  # invoke jitted function like a regular python function
  result = jitted_fn(a, b)  # using default val=0.0
