Module Sarek_cuda.Cuda_nvrtc

Types

type nvrtc_program

NVRTC program handle

val nvrtc_program : nvrtc_program Ctypes.structure Ctypes.typ
val nvrtc_program_ptr : nvrtc_program Ctypes.structure Ctypes.ptr Ctypes.typ
type nvrtc_result =
  1. | NVRTC_SUCCESS
  2. | NVRTC_ERROR_OUT_OF_MEMORY
  3. | NVRTC_ERROR_PROGRAM_CREATION_FAILURE
  4. | NVRTC_ERROR_INVALID_INPUT
  5. | NVRTC_ERROR_INVALID_PROGRAM
  6. | NVRTC_ERROR_INVALID_OPTION
  7. | NVRTC_ERROR_COMPILATION
  8. | NVRTC_ERROR_BUILTIN_OPERATION_FAILURE
  9. | NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION
  10. | NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION
  11. | NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID
  12. | NVRTC_ERROR_INTERNAL_ERROR
  13. | NVRTC_ERROR_UNKNOWN of int

NVRTC result codes

val nvrtc_result_of_int : int -> nvrtc_result
val int_of_nvrtc_result : nvrtc_result -> int
val nvrtc_result : nvrtc_result Ctypes.typ
val string_of_nvrtc_result : nvrtc_result -> string

Library Loading

val nvrtc_lib : Dl.library option Stdlib.Lazy.t

Load NVRTC library dynamically (lazy). Prefer unversioned to get system default that matches driver.

val is_available : unit -> bool

Check if NVRTC library is available

val get_nvrtc_lib : unit -> Dl.library

Get NVRTC library, raising if not available

val foreign_nvrtc_lazy : string -> ('a -> 'b) Ctypes.fn -> ('a -> 'b) lazy_t

Create a lazy foreign binding to NVRTC

Bindings

val nvrtcVersion_lazy : (int Ctypes_static.ptr -> int Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcVersion : int Ctypes_static.ptr -> int Ctypes_static.ptr -> nvrtc_result
val nvrtcCreateProgram_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> string -> string option -> int -> string option Ctypes_static.ptr -> string option Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcCreateProgram : nvrtc_program Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> string -> string option -> int -> string option Ctypes_static.ptr -> string option Ctypes_static.ptr -> nvrtc_result
val nvrtcDestroyProgram_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcDestroyProgram : nvrtc_program Ctypes.structure Ctypes.ptr Ctypes_static.ptr -> nvrtc_result
val nvrtcCompileProgram_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> int -> string Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcCompileProgram : nvrtc_program Ctypes.structure Ctypes.ptr -> int -> string Ctypes_static.ptr -> nvrtc_result
val nvrtcGetPTXSize_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcGetPTXSize : nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result
val nvrtcGetPTX_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcGetPTX : nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result
val nvrtcGetCUBINSize_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result) option lazy_t
val nvrtcGetCUBINSize : nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result
val nvrtcGetCUBIN_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result) option lazy_t
val nvrtcGetCUBIN : nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result
val nvrtcGetProgramLogSize_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcGetProgramLogSize : nvrtc_program Ctypes.structure Ctypes.ptr -> Unsigned.size_t Ctypes_static.ptr -> nvrtc_result
val nvrtcGetProgramLog_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcGetProgramLog : nvrtc_program Ctypes.structure Ctypes.ptr -> char Ctypes_static.ptr -> nvrtc_result
val nvrtcAddNameExpression_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> string -> nvrtc_result) lazy_t
val nvrtcAddNameExpression : nvrtc_program Ctypes.structure Ctypes.ptr -> string -> nvrtc_result
val nvrtcGetLoweredName_lazy : (nvrtc_program Ctypes.structure Ctypes.ptr -> string -> string Ctypes_static.ptr -> nvrtc_result) lazy_t
val nvrtcGetLoweredName : nvrtc_program Ctypes.structure Ctypes.ptr -> string -> string Ctypes_static.ptr -> nvrtc_result

High-Level Helpers

exception Nvrtc_error of nvrtc_result * string

Exception for NVRTC errors

val check : string -> nvrtc_result -> unit

Check result and raise if error

val compile_to_ptx : ?name:string -> arch:string -> string -> string

Compile CUDA source to PTX.

  • parameter source

    CUDA C source code

  • parameter name

    Optional program name

  • parameter arch

    Target architecture (e.g., "compute_75")

  • returns

    PTX code as string

val get_version : unit -> int * int

Get NVRTC version as (major, minor)