tritonserver_rs/
macros.rs#[cfg(feature = "gpu")]
macro_rules! cuda_call {
($expr: expr) => {{
#[allow(clippy::macro_metavars_in_unsafe)]
let res = unsafe { $expr };
if res != cuda_driver_sys::CUresult::CUDA_SUCCESS {
Err($crate::error::Error::new(
$crate::error::ErrorCode::Internal,
format!("Cuda result: {:?}", res),
))
} else {
std::result::Result::<_, $crate::error::Error>::Ok(())
}
}};
($expr: expr, $val: expr) => {{
#[allow(clippy::macro_metavars_in_unsafe)]
let res = unsafe { $expr };
if res != cuda_driver_sys::CUresult::CUDA_SUCCESS {
Err($crate::error::Error::new(
$crate::error::ErrorCode::Internal,
format!("Cuda result: {:?}", res),
))
} else {
std::result::Result::<_, $crate::error::Error>::Ok($val)
}
}};
}
macro_rules! triton_call {
($expr: expr) => {{
#[allow(clippy::macro_metavars_in_unsafe)]
let res = unsafe { $expr };
if res.is_null() {
std::result::Result::<(), $crate::error::Error>::Ok(())
} else {
std::result::Result::<(), $crate::error::Error>::Err(res.into())
}
}};
($expr: expr, $val: expr) => {{
#[allow(clippy::macro_metavars_in_unsafe)]
let res = unsafe { $expr };
if res.is_null() {
std::result::Result::<_, $crate::error::Error>::Ok($val)
} else {
std::result::Result::<_, $crate::error::Error>::Err(res.into())
}
}};
}
#[macro_export]
macro_rules! run_in_context {
($val: expr, $expr: expr) => {{
#[cfg(feature = "gpu")]
{
tokio::task::spawn_blocking(move || {
let ctx = $crate::get_context($val)?;
let _handle = ctx.make_current()?;
$expr
})
.await
.expect("tokio failed to join thread")
}
#[cfg(not(feature = "gpu"))]
$expr
}};
}
#[macro_export]
macro_rules! run_in_context_sync {
($val: expr, $expr: expr) => {{
#[cfg(feature = "gpu")]
{
let ctx = $crate::get_context($val)?;
let _handle = ctx.make_current()?;
$expr
}
#[cfg(not(feature = "gpu"))]
$expr
}};
}