Implemet enough of nvml for geekbench

This commit is contained in:
Andrzej Janik 2024-12-10 15:29:48 +00:00
parent ed98dca26d
commit 22679fff82
2 changed files with 31 additions and 2 deletions

View file

@ -1,4 +1,5 @@
use cuda_types::nvml::nvmlReturn_t;
use cuda_types::nvml::*;
use std::{ffi::CStr, ptr};
#[cfg(debug_assertions)]
pub(crate) fn unimplemented() -> nvmlReturn_t {
@ -10,8 +11,34 @@ pub(crate) fn unimplemented() -> nvmlReturn_t {
nvmlReturn_t::NVML_ERROR_NOT_SUPPORTED
}
#[allow(non_snake_case)]
pub(crate) fn nvmlErrorString(
_result: cuda_types::nvml::nvmlReturn_t,
) -> *const ::core::ffi::c_char {
c"".as_ptr()
}
#[allow(non_snake_case)]
pub(crate) fn nvmlInit_v2() -> cuda_types::nvml::nvmlReturn_t {
nvmlReturn_t::SUCCESS
}
const VERSION: &'static CStr = c"550.77";
#[allow(non_snake_case)]
pub(crate) fn nvmlSystemGetDriverVersion(
result: *mut ::core::ffi::c_char,
length: ::core::ffi::c_uint,
) -> cuda_types::nvml::nvmlReturn_t {
if result == ptr::null_mut() {
return nvmlReturn_t::ERROR_INVALID_ARGUMENT;
}
let version = VERSION.to_bytes_with_nul();
let copy_length = usize::min(length as usize, version.len());
let slice = unsafe { std::slice::from_raw_parts_mut(result.cast(), copy_length) };
slice.copy_from_slice(&version[..copy_length]);
if let Some(null) = slice.last_mut() {
*null = 0;
}
nvmlReturn_t::SUCCESS
}

View file

@ -27,6 +27,8 @@ macro_rules! implemented_fn {
cuda_base::nvml_function_declarations!(
unimplemented_fn,
implemented_fn <= [
nvmlErrorString
nvmlErrorString,
nvmlInit_v2,
nvmlSystemGetDriverVersion
]
);