#![cfg_attr(feature = "no-std", no_std)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(dead_code)]
#[cfg(feature = "no-std")]
extern crate alloc;
#[cfg(feature = "no-std")]
extern crate no_std_compat as std;
pub type nvrtcProgram = *mut _nvrtcProgram;
#[cfg(any(
feature = "cuda-11040",
feature = "cuda-11050",
feature = "cuda-11060",
feature = "cuda-11070",
feature = "cuda-11080",
feature = "cuda-12000"
))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum nvrtcResult {
NVRTC_SUCCESS = 0,
NVRTC_ERROR_OUT_OF_MEMORY = 1,
NVRTC_ERROR_PROGRAM_CREATION_FAILURE = 2,
NVRTC_ERROR_INVALID_INPUT = 3,
NVRTC_ERROR_INVALID_PROGRAM = 4,
NVRTC_ERROR_INVALID_OPTION = 5,
NVRTC_ERROR_COMPILATION = 6,
NVRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7,
NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8,
NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9,
NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10,
NVRTC_ERROR_INTERNAL_ERROR = 11,
}
#[cfg(any(
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060"
))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum nvrtcResult {
NVRTC_SUCCESS = 0,
NVRTC_ERROR_OUT_OF_MEMORY = 1,
NVRTC_ERROR_PROGRAM_CREATION_FAILURE = 2,
NVRTC_ERROR_INVALID_INPUT = 3,
NVRTC_ERROR_INVALID_PROGRAM = 4,
NVRTC_ERROR_INVALID_OPTION = 5,
NVRTC_ERROR_COMPILATION = 6,
NVRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7,
NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8,
NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9,
NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10,
NVRTC_ERROR_INTERNAL_ERROR = 11,
NVRTC_ERROR_TIME_FILE_WRITE_FAILED = 12,
}
#[cfg(any(feature = "cuda-12080", feature = "cuda-12090"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum nvrtcResult {
NVRTC_SUCCESS = 0,
NVRTC_ERROR_OUT_OF_MEMORY = 1,
NVRTC_ERROR_PROGRAM_CREATION_FAILURE = 2,
NVRTC_ERROR_INVALID_INPUT = 3,
NVRTC_ERROR_INVALID_PROGRAM = 4,
NVRTC_ERROR_INVALID_OPTION = 5,
NVRTC_ERROR_COMPILATION = 6,
NVRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7,
NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8,
NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9,
NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10,
NVRTC_ERROR_INTERNAL_ERROR = 11,
NVRTC_ERROR_TIME_FILE_WRITE_FAILED = 12,
NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED = 13,
NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED = 14,
NVRTC_ERROR_PCH_CREATE = 15,
NVRTC_ERROR_CANCELLED = 16,
}
#[cfg(any(feature = "cuda-13000", feature = "cuda-13010", feature = "cuda-13020"))]
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
pub enum nvrtcResult {
NVRTC_SUCCESS = 0,
NVRTC_ERROR_OUT_OF_MEMORY = 1,
NVRTC_ERROR_PROGRAM_CREATION_FAILURE = 2,
NVRTC_ERROR_INVALID_INPUT = 3,
NVRTC_ERROR_INVALID_PROGRAM = 4,
NVRTC_ERROR_INVALID_OPTION = 5,
NVRTC_ERROR_COMPILATION = 6,
NVRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7,
NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8,
NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9,
NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10,
NVRTC_ERROR_INTERNAL_ERROR = 11,
NVRTC_ERROR_TIME_FILE_WRITE_FAILED = 12,
NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED = 13,
NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED = 14,
NVRTC_ERROR_PCH_CREATE = 15,
NVRTC_ERROR_CANCELLED = 16,
NVRTC_ERROR_TIME_TRACE_FILE_WRITE_FAILED = 17,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _nvrtcProgram {
_unused: [u8; 0],
}
#[cfg(not(feature = "dynamic-loading"))]
extern "C" {
pub fn nvrtcAddNameExpression(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
) -> nvrtcResult;
pub fn nvrtcCompileProgram(
prog: nvrtcProgram,
numOptions: ::core::ffi::c_int,
options: *const *const ::core::ffi::c_char,
) -> nvrtcResult;
pub fn nvrtcCreateProgram(
prog: *mut nvrtcProgram,
src: *const ::core::ffi::c_char,
name: *const ::core::ffi::c_char,
numHeaders: ::core::ffi::c_int,
headers: *const *const ::core::ffi::c_char,
includeNames: *const *const ::core::ffi::c_char,
) -> nvrtcResult;
pub fn nvrtcDestroyProgram(prog: *mut nvrtcProgram) -> nvrtcResult;
pub fn nvrtcGetCUBIN(prog: nvrtcProgram, cubin: *mut ::core::ffi::c_char) -> nvrtcResult;
pub fn nvrtcGetCUBINSize(prog: nvrtcProgram, cubinSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcGetErrorString(result: nvrtcResult) -> *const ::core::ffi::c_char;
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub fn nvrtcGetLTOIR(prog: nvrtcProgram, LTOIR: *mut ::core::ffi::c_char) -> nvrtcResult;
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub fn nvrtcGetLTOIRSize(prog: nvrtcProgram, LTOIRSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcGetLoweredName(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
lowered_name: *mut *const ::core::ffi::c_char,
) -> nvrtcResult;
pub fn nvrtcGetNumSupportedArchs(numArchs: *mut ::core::ffi::c_int) -> nvrtcResult;
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub fn nvrtcGetOptiXIR(prog: nvrtcProgram, optixir: *mut ::core::ffi::c_char) -> nvrtcResult;
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub fn nvrtcGetOptiXIRSize(prog: nvrtcProgram, optixirSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcGetPTX(prog: nvrtcProgram, ptx: *mut ::core::ffi::c_char) -> nvrtcResult;
pub fn nvrtcGetPTXSize(prog: nvrtcProgram, ptxSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcGetProgramLog(prog: nvrtcProgram, log: *mut ::core::ffi::c_char) -> nvrtcResult;
pub fn nvrtcGetProgramLogSize(prog: nvrtcProgram, logSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcGetSupportedArchs(supportedArchs: *mut ::core::ffi::c_int) -> nvrtcResult;
#[cfg(any(feature = "cuda-13020"))]
pub fn nvrtcGetTileIR(prog: nvrtcProgram, TileIR: *mut ::core::ffi::c_char) -> nvrtcResult;
#[cfg(any(feature = "cuda-13020"))]
pub fn nvrtcGetTileIRSize(prog: nvrtcProgram, TileIRSizeRet: *mut usize) -> nvrtcResult;
pub fn nvrtcVersion(
major: *mut ::core::ffi::c_int,
minor: *mut ::core::ffi::c_int,
) -> nvrtcResult;
}
#[cfg(feature = "dynamic-loading")]
mod loaded {
use super::*;
pub unsafe fn nvrtcAddNameExpression(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcAddNameExpression)(prog, name_expression)
}
pub unsafe fn nvrtcCompileProgram(
prog: nvrtcProgram,
numOptions: ::core::ffi::c_int,
options: *const *const ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcCompileProgram)(prog, numOptions, options)
}
pub unsafe fn nvrtcCreateProgram(
prog: *mut nvrtcProgram,
src: *const ::core::ffi::c_char,
name: *const ::core::ffi::c_char,
numHeaders: ::core::ffi::c_int,
headers: *const *const ::core::ffi::c_char,
includeNames: *const *const ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcCreateProgram)(prog, src, name, numHeaders, headers, includeNames)
}
pub unsafe fn nvrtcDestroyProgram(prog: *mut nvrtcProgram) -> nvrtcResult {
(culib().nvrtcDestroyProgram)(prog)
}
pub unsafe fn nvrtcGetCUBIN(
prog: nvrtcProgram,
cubin: *mut ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetCUBIN)(prog, cubin)
}
pub unsafe fn nvrtcGetCUBINSize(prog: nvrtcProgram, cubinSizeRet: *mut usize) -> nvrtcResult {
(culib().nvrtcGetCUBINSize)(prog, cubinSizeRet)
}
pub unsafe fn nvrtcGetErrorString(result: nvrtcResult) -> *const ::core::ffi::c_char {
(culib().nvrtcGetErrorString)(result)
}
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub unsafe fn nvrtcGetLTOIR(
prog: nvrtcProgram,
LTOIR: *mut ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetLTOIR)(prog, LTOIR)
}
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub unsafe fn nvrtcGetLTOIRSize(prog: nvrtcProgram, LTOIRSizeRet: *mut usize) -> nvrtcResult {
(culib().nvrtcGetLTOIRSize)(prog, LTOIRSizeRet)
}
pub unsafe fn nvrtcGetLoweredName(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
lowered_name: *mut *const ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetLoweredName)(prog, name_expression, lowered_name)
}
pub unsafe fn nvrtcGetNumSupportedArchs(numArchs: *mut ::core::ffi::c_int) -> nvrtcResult {
(culib().nvrtcGetNumSupportedArchs)(numArchs)
}
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub unsafe fn nvrtcGetOptiXIR(
prog: nvrtcProgram,
optixir: *mut ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetOptiXIR)(prog, optixir)
}
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub unsafe fn nvrtcGetOptiXIRSize(
prog: nvrtcProgram,
optixirSizeRet: *mut usize,
) -> nvrtcResult {
(culib().nvrtcGetOptiXIRSize)(prog, optixirSizeRet)
}
pub unsafe fn nvrtcGetPTX(prog: nvrtcProgram, ptx: *mut ::core::ffi::c_char) -> nvrtcResult {
(culib().nvrtcGetPTX)(prog, ptx)
}
pub unsafe fn nvrtcGetPTXSize(prog: nvrtcProgram, ptxSizeRet: *mut usize) -> nvrtcResult {
(culib().nvrtcGetPTXSize)(prog, ptxSizeRet)
}
pub unsafe fn nvrtcGetProgramLog(
prog: nvrtcProgram,
log: *mut ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetProgramLog)(prog, log)
}
pub unsafe fn nvrtcGetProgramLogSize(
prog: nvrtcProgram,
logSizeRet: *mut usize,
) -> nvrtcResult {
(culib().nvrtcGetProgramLogSize)(prog, logSizeRet)
}
pub unsafe fn nvrtcGetSupportedArchs(supportedArchs: *mut ::core::ffi::c_int) -> nvrtcResult {
(culib().nvrtcGetSupportedArchs)(supportedArchs)
}
#[cfg(any(feature = "cuda-13020"))]
pub unsafe fn nvrtcGetTileIR(
prog: nvrtcProgram,
TileIR: *mut ::core::ffi::c_char,
) -> nvrtcResult {
(culib().nvrtcGetTileIR)(prog, TileIR)
}
#[cfg(any(feature = "cuda-13020"))]
pub unsafe fn nvrtcGetTileIRSize(prog: nvrtcProgram, TileIRSizeRet: *mut usize) -> nvrtcResult {
(culib().nvrtcGetTileIRSize)(prog, TileIRSizeRet)
}
pub unsafe fn nvrtcVersion(
major: *mut ::core::ffi::c_int,
minor: *mut ::core::ffi::c_int,
) -> nvrtcResult {
(culib().nvrtcVersion)(major, minor)
}
pub struct Lib {
__library: ::libloading::Library,
pub nvrtcAddNameExpression: unsafe extern "C" fn(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
) -> nvrtcResult,
pub nvrtcCompileProgram: unsafe extern "C" fn(
prog: nvrtcProgram,
numOptions: ::core::ffi::c_int,
options: *const *const ::core::ffi::c_char,
) -> nvrtcResult,
pub nvrtcCreateProgram: unsafe extern "C" fn(
prog: *mut nvrtcProgram,
src: *const ::core::ffi::c_char,
name: *const ::core::ffi::c_char,
numHeaders: ::core::ffi::c_int,
headers: *const *const ::core::ffi::c_char,
includeNames: *const *const ::core::ffi::c_char,
) -> nvrtcResult,
pub nvrtcDestroyProgram: unsafe extern "C" fn(prog: *mut nvrtcProgram) -> nvrtcResult,
pub nvrtcGetCUBIN: unsafe extern "C" fn(
prog: nvrtcProgram,
cubin: *mut ::core::ffi::c_char,
) -> nvrtcResult,
pub nvrtcGetCUBINSize:
unsafe extern "C" fn(prog: nvrtcProgram, cubinSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcGetErrorString:
unsafe extern "C" fn(result: nvrtcResult) -> *const ::core::ffi::c_char,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub nvrtcGetLTOIR: unsafe extern "C" fn(
prog: nvrtcProgram,
LTOIR: *mut ::core::ffi::c_char,
) -> nvrtcResult,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub nvrtcGetLTOIRSize:
unsafe extern "C" fn(prog: nvrtcProgram, LTOIRSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcGetLoweredName: unsafe extern "C" fn(
prog: nvrtcProgram,
name_expression: *const ::core::ffi::c_char,
lowered_name: *mut *const ::core::ffi::c_char,
) -> nvrtcResult,
pub nvrtcGetNumSupportedArchs:
unsafe extern "C" fn(numArchs: *mut ::core::ffi::c_int) -> nvrtcResult,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub nvrtcGetOptiXIR: unsafe extern "C" fn(
prog: nvrtcProgram,
optixir: *mut ::core::ffi::c_char,
) -> nvrtcResult,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
pub nvrtcGetOptiXIRSize:
unsafe extern "C" fn(prog: nvrtcProgram, optixirSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcGetPTX:
unsafe extern "C" fn(prog: nvrtcProgram, ptx: *mut ::core::ffi::c_char) -> nvrtcResult,
pub nvrtcGetPTXSize:
unsafe extern "C" fn(prog: nvrtcProgram, ptxSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcGetProgramLog:
unsafe extern "C" fn(prog: nvrtcProgram, log: *mut ::core::ffi::c_char) -> nvrtcResult,
pub nvrtcGetProgramLogSize:
unsafe extern "C" fn(prog: nvrtcProgram, logSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcGetSupportedArchs:
unsafe extern "C" fn(supportedArchs: *mut ::core::ffi::c_int) -> nvrtcResult,
#[cfg(any(feature = "cuda-13020"))]
pub nvrtcGetTileIR: unsafe extern "C" fn(
prog: nvrtcProgram,
TileIR: *mut ::core::ffi::c_char,
) -> nvrtcResult,
#[cfg(any(feature = "cuda-13020"))]
pub nvrtcGetTileIRSize:
unsafe extern "C" fn(prog: nvrtcProgram, TileIRSizeRet: *mut usize) -> nvrtcResult,
pub nvrtcVersion: unsafe extern "C" fn(
major: *mut ::core::ffi::c_int,
minor: *mut ::core::ffi::c_int,
) -> nvrtcResult,
}
impl Lib {
pub unsafe fn new<P>(path: P) -> Result<Self, ::libloading::Error>
where
P: AsRef<::std::ffi::OsStr>,
{
let library = ::libloading::Library::new(path.as_ref())?;
Self::from_library(library)
}
pub unsafe fn from_library<L>(library: L) -> Result<Self, ::libloading::Error>
where
L: Into<::libloading::Library>,
{
let __library = library.into();
let nvrtcAddNameExpression = __library
.get(b"nvrtcAddNameExpression\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcCompileProgram = __library
.get(b"nvrtcCompileProgram\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcCreateProgram = __library
.get(b"nvrtcCreateProgram\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcDestroyProgram = __library
.get(b"nvrtcDestroyProgram\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetCUBIN = __library
.get(b"nvrtcGetCUBIN\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetCUBINSize = __library
.get(b"nvrtcGetCUBINSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetErrorString = __library
.get(b"nvrtcGetErrorString\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
let nvrtcGetLTOIR = __library
.get(b"nvrtcGetLTOIR\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
let nvrtcGetLTOIRSize = __library
.get(b"nvrtcGetLTOIRSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetLoweredName = __library
.get(b"nvrtcGetLoweredName\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetNumSupportedArchs = __library
.get(b"nvrtcGetNumSupportedArchs\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
let nvrtcGetOptiXIR = __library
.get(b"nvrtcGetOptiXIR\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
let nvrtcGetOptiXIRSize = __library
.get(b"nvrtcGetOptiXIRSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetPTX = __library
.get(b"nvrtcGetPTX\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetPTXSize = __library
.get(b"nvrtcGetPTXSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetProgramLog = __library
.get(b"nvrtcGetProgramLog\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetProgramLogSize = __library
.get(b"nvrtcGetProgramLogSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcGetSupportedArchs = __library
.get(b"nvrtcGetSupportedArchs\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(feature = "cuda-13020"))]
let nvrtcGetTileIR = __library
.get(b"nvrtcGetTileIR\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
#[cfg(any(feature = "cuda-13020"))]
let nvrtcGetTileIRSize = __library
.get(b"nvrtcGetTileIRSize\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
let nvrtcVersion = __library
.get(b"nvrtcVersion\0")
.map(|sym| *sym)
.expect("Expected symbol in library");
Ok(Self {
__library,
nvrtcAddNameExpression,
nvrtcCompileProgram,
nvrtcCreateProgram,
nvrtcDestroyProgram,
nvrtcGetCUBIN,
nvrtcGetCUBINSize,
nvrtcGetErrorString,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
nvrtcGetLTOIR,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
nvrtcGetLTOIRSize,
nvrtcGetLoweredName,
nvrtcGetNumSupportedArchs,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
nvrtcGetOptiXIR,
#[cfg(any(
feature = "cuda-12000",
feature = "cuda-12010",
feature = "cuda-12020",
feature = "cuda-12030",
feature = "cuda-12040",
feature = "cuda-12050",
feature = "cuda-12060",
feature = "cuda-12080",
feature = "cuda-12090",
feature = "cuda-13000",
feature = "cuda-13010",
feature = "cuda-13020"
))]
nvrtcGetOptiXIRSize,
nvrtcGetPTX,
nvrtcGetPTXSize,
nvrtcGetProgramLog,
nvrtcGetProgramLogSize,
nvrtcGetSupportedArchs,
#[cfg(any(feature = "cuda-13020"))]
nvrtcGetTileIR,
#[cfg(any(feature = "cuda-13020"))]
nvrtcGetTileIRSize,
nvrtcVersion,
})
}
}
pub unsafe fn is_culib_present() -> bool {
let lib_names = ["nvrtc"];
let choices = lib_names
.iter()
.map(|l| crate::get_lib_name_candidates(l))
.flatten();
for choice in choices {
if Lib::new(choice).is_ok() {
return true;
}
}
false
}
pub unsafe fn culib() -> &'static Lib {
static LIB: std::sync::OnceLock<Lib> = std::sync::OnceLock::new();
LIB.get_or_init(|| {
let lib_names = std::vec!["nvrtc"];
let choices: std::vec::Vec<_> = lib_names
.iter()
.map(|l| crate::get_lib_name_candidates(l))
.flatten()
.collect();
for choice in choices.iter() {
if let Ok(lib) = Lib::new(choice) {
return lib;
}
}
crate::panic_no_lib_found(lib_names[0], &choices);
})
}
}
#[cfg(feature = "dynamic-loading")]
pub use loaded::*;