each function is used as its docstring.
The sources in "cuda_sources" are concatenated into a separate
   ".cu" file and  prepended with "torch/types.h", "cuda.h" and
   "cuda_runtime.h" includes. The ".cpp" and ".cu" files are compiled
   separately, but ultimately linked into a single library. Note that
   no bindings are generated for functions in "cuda_sources" per  se.
   To bind to a CUDA kernel, you must create a C++ function that calls
   it, and either declare or define this C++ function in one of the
   "cpp_sources" (and include its name in "functions").
See "load()" for a description of arguments omitted below.
Parameters:
      * cpp_sources -- A string, or list of strings, containing
        C++ source code.
  * **cuda_sources** -- A string, or list of strings, containing
    CUDA source code.

  * **functions** -- A list of function names for which to
    generate function bindings. If a dictionary is given, it
