From 22679fff82cddbff0bd1ba106b9f804ea765eb0a Mon Sep 17 00:00:00 2001 From: Andrzej Janik Date: Tue, 10 Dec 2024 15:29:48 +0000 Subject: Implemet enough of nvml for geekbench --- zluda_ml/src/impl.rs | 29 ++++++++++++++++++++++++++++- zluda_ml/src/lib.rs | 4 +++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/zluda_ml/src/impl.rs b/zluda_ml/src/impl.rs index 60e5e9d..818d711 100644 --- a/zluda_ml/src/impl.rs +++ b/zluda_ml/src/impl.rs @@ -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 +} diff --git a/zluda_ml/src/lib.rs b/zluda_ml/src/lib.rs index d076227..690ed67 100644 --- a/zluda_ml/src/lib.rs +++ b/zluda_ml/src/lib.rs @@ -27,6 +27,8 @@ macro_rules! implemented_fn { cuda_base::nvml_function_declarations!( unimplemented_fn, implemented_fn <= [ - nvmlErrorString + nvmlErrorString, + nvmlInit_v2, + nvmlSystemGetDriverVersion ] ); -- cgit v1.2.3