Rename everything

This commit is contained in:
Andrzej Janik 2020-11-23 20:00:16 +01:00
commit eb7c9aeeee
32 changed files with 76 additions and 60 deletions

View file

@ -4,9 +4,9 @@ members = [
"level_zero-sys", "level_zero-sys",
"level_zero", "level_zero",
"spirv_tools-sys", "spirv_tools-sys",
"notcuda", "zluda",
#"notcuda_inject", #"zluda_inject",
#"notcuda_redirect", #"zluda_redirect",
"ptx", "ptx",
] ]

16
ltrace.txt Normal file
View file

@ -0,0 +1,16 @@
LD_LIBRARY_PATH=/media/vosen/01D3D293C1C33E60/dev/ZLUDA/target/debug_run/ ltrace -x 'cu*@libcuda*' -L /home/vosen/cuda-samples-dbg/bin/x86_64/linux/debug/vectorAdd
LD_LIBRARY_PATH=/media/vosen/01D3D293C1C33E60/dev/ZLUDA/target/debug_run/ gdb /home/vosen/cuda-samples-dbg/bin/x86_64/linux/debug/vectorAdd
/usr/local/cuda-11.0/bin/nvcc vectorAdd2.cu -I../../common/inc/ -lcudart -lcuda -o vectorAdd2 -g -O0
/usr/local/cuda-11.0/bin/fatbinary --create="vectorAdd_temp.fatbin" -64 "--image3=kind=ptx,sm=52,file=vectorAdd3.ptx" --compress false
cd /home/vosen/cuda-samples-dbg/0_Simple/vectorAdd
/usr/local/cuda-11.0/bin/fatbinary --create vectorAdd_temp.fatbin -64 --image3 kind=ptx,sm=52,file=vectorAdd3.big.ptx --compress true
LD_LIBRARY_PATH=/media/vosen/01D3D293C1C33E60/dev/ZLUDA/target/debug_run/ ./geekbench_x86_64 --no-upload --compute-list
LD_LIBRARY_PATH=/media/vosen/01D3D293C1C33E60/dev/ZLUDA/target/debug_run/ ./geekbench_x86_64 --no-upload --compute CUDA
LD_LIBRARY_PATH=/media/vosen/01D3D293C1C33E60/dev/ZLUDA/target/debug_run/ ./geekbench_x86_64 --no-upload --compute OpenCL --compute-platform-id 1
LI_DumpBuffersForKernel=lens_blur_gpu CLI_DumpBuffersBeforeEnqueue=1 CLI_DumpBuffersAfterEnqueue=1 ~/opencl-intercept-layer/build/cliloader/cliloader -c ./geekbench_x86_64 --no-upload --compute OpenCL --compute-platform-id 1 &> log.txt

View file

@ -1,9 +1,9 @@
// Every time this file changes it must te rebuilt: // Every time this file changes it must te rebuilt:
// ocloc -file notcuda_ptx_impl.cl -64 -options "-cl-std=CL2.0 -Dcl_intel_bit_instructions" -out_dir . -device kbl -output_no_suffix -spv_only // ocloc -file zluda_ptx_impl.cl -64 -options "-cl-std=CL2.0 -Dcl_intel_bit_instructions" -out_dir . -device kbl -output_no_suffix -spv_only
// Additionally you should strip names: // Additionally you should strip names:
// spirv-opt --strip-debug notcuda_ptx_impl.spv -o notcuda_ptx_impl.spv // spirv-opt --strip-debug zluda_ptx_impl.spv -o zluda_ptx_impl.spv
#define FUNC(NAME) __notcuda_ptx_impl__ ## NAME #define FUNC(NAME) __zluda_ptx_impl__ ## NAME
#define atomic_inc(NAME, SUCCESS, FAILURE, SCOPE, SPACE) \ #define atomic_inc(NAME, SUCCESS, FAILURE, SCOPE, SPACE) \
uint FUNC(NAME)(SPACE uint* ptr, uint threshold) { \ uint FUNC(NAME)(SPACE uint* ptr, uint threshold) { \

View file

@ -10,7 +10,7 @@
%67 = OpExtInstImport "OpenCL.std" %67 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %12 "assertfail" OpEntryPoint Kernel %12 "assertfail"
OpDecorate %1 LinkageAttributes "__notcuda_ptx_impl____assertfail" Import OpDecorate %1 LinkageAttributes "__zluda_ptx_impl____assertfail" Import
%void = OpTypeVoid %void = OpTypeVoid
%ulong = OpTypeInt 64 0 %ulong = OpTypeInt 64 0
%_ptr_Function_ulong = OpTypePointer Function %ulong %_ptr_Function_ulong = OpTypePointer Function %ulong

View file

@ -10,8 +10,8 @@
%47 = OpExtInstImport "OpenCL.std" %47 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %1 "atom_inc" OpEntryPoint Kernel %1 "atom_inc"
OpDecorate %38 LinkageAttributes "__notcuda_ptx_impl__atom_relaxed_gpu_generic_inc" Import OpDecorate %38 LinkageAttributes "__zluda_ptx_impl__atom_relaxed_gpu_generic_inc" Import
OpDecorate %42 LinkageAttributes "__notcuda_ptx_impl__atom_relaxed_gpu_global_inc" Import OpDecorate %42 LinkageAttributes "__zluda_ptx_impl__atom_relaxed_gpu_global_inc" Import
%void = OpTypeVoid %void = OpTypeVoid
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%_ptr_Generic_uint = OpTypePointer Generic %uint %_ptr_Generic_uint = OpTypePointer Generic %uint

View file

@ -10,7 +10,7 @@
%40 = OpExtInstImport "OpenCL.std" %40 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %1 "bfe" OpEntryPoint Kernel %1 "bfe"
OpDecorate %34 LinkageAttributes "__notcuda_ptx_impl__bfe_u32" Import OpDecorate %34 LinkageAttributes "__zluda_ptx_impl__bfe_u32" Import
%void = OpTypeVoid %void = OpTypeVoid
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%43 = OpTypeFunction %uint %uint %uint %uint %43 = OpTypeFunction %uint %uint %uint %uint

View file

@ -170,9 +170,9 @@ fn test_ptx_assert<'a, T: From<u8> + ze::SafeRepr + Debug + Copy + PartialEq>(
let mut errors = Vec::new(); let mut errors = Vec::new();
let ast = ptx::ModuleParser::new().parse(&mut errors, ptx_text)?; let ast = ptx::ModuleParser::new().parse(&mut errors, ptx_text)?;
assert!(errors.len() == 0); assert!(errors.len() == 0);
let notcuda_module = translate::to_spirv_module(ast)?; let zluda_module = translate::to_spirv_module(ast)?;
let name = CString::new(name)?; let name = CString::new(name)?;
let result = run_spirv(name.as_c_str(), notcuda_module, input, output) let result = run_spirv(name.as_c_str(), zluda_module, input, output)
.map_err(|err| DisplayError { err })?; .map_err(|err| DisplayError { err })?;
assert_eq!(result.as_slice(), output); assert_eq!(result.as_slice(), output);
Ok(()) Ok(())
@ -331,7 +331,7 @@ fn test_spvtxt_assert<'a>(
} else { } else {
Cow::Owned(spirv_module.spirv.disassemble()) Cow::Owned(spirv_module.spirv.disassemble())
}; };
if let Ok(dump_path) = env::var("NOTCUDA_TEST_SPIRV_DUMP_DIR") { if let Ok(dump_path) = env::var("ZLUDA_TEST_SPIRV_DUMP_DIR") {
let mut path = PathBuf::from(dump_path); let mut path = PathBuf::from(dump_path);
if let Ok(()) = fs::create_dir_all(&path) { if let Ok(()) = fs::create_dir_all(&path) {
path.push(spirv_file_name); path.push(spirv_file_name);

View file

@ -10,7 +10,7 @@
%34 = OpExtInstImport "OpenCL.std" %34 = OpExtInstImport "OpenCL.std"
OpMemoryModel Physical64 OpenCL OpMemoryModel Physical64 OpenCL
OpEntryPoint Kernel %1 "shl_link_hack" OpEntryPoint Kernel %1 "shl_link_hack"
OpDecorate %29 LinkageAttributes "__notcuda_ptx_impl__atom_relaxed_gpu_generic_inc" Import OpDecorate %29 LinkageAttributes "__zluda_ptx_impl__atom_relaxed_gpu_generic_inc" Import
%void = OpTypeVoid %void = OpTypeVoid
%uint = OpTypeInt 32 0 %uint = OpTypeInt 32 0
%_ptr_Generic_uint = OpTypePointer Generic %uint %_ptr_Generic_uint = OpTypePointer Generic %uint

View file

@ -9,7 +9,7 @@ use std::{
use rspirv::binary::Assemble; use rspirv::binary::Assemble;
static NOTCUDA_PTX_IMPL: &'static [u8] = include_bytes!("../lib/notcuda_ptx_impl.spv"); static ZLUDA_PTX_IMPL: &'static [u8] = include_bytes!("../lib/zluda_ptx_impl.spv");
quick_error! { quick_error! {
#[derive(Debug)] #[derive(Debug)]
@ -506,7 +506,7 @@ pub fn to_spirv_module<'a>(ast: ast::Module<'a>) -> Result<Module, TranslateErro
spirv, spirv,
kernel_info, kernel_info,
should_link_ptx_impl: if must_link_ptx_impl { should_link_ptx_impl: if must_link_ptx_impl {
Some(NOTCUDA_PTX_IMPL) Some(ZLUDA_PTX_IMPL)
} else { } else {
None None
}, },
@ -1226,7 +1226,7 @@ fn translate_function<'a>(
) -> Result<Option<Function<'a>>, TranslateError> { ) -> Result<Option<Function<'a>>, TranslateError> {
let import_as = match &f.func_directive { let import_as = match &f.func_directive {
ast::MethodDecl::Func(_, "__assertfail", _) => { ast::MethodDecl::Func(_, "__assertfail", _) => {
Some("__notcuda_ptx_impl____assertfail".to_owned()) Some("__zluda_ptx_impl____assertfail".to_owned())
} }
_ => None, _ => None,
}; };
@ -1667,7 +1667,7 @@ fn to_ptx_impl_atomic_call(
let scope = ptx_scope_name(details.scope); let scope = ptx_scope_name(details.scope);
let space = ptx_space_name(details.space); let space = ptx_space_name(details.space);
let fn_name = format!( let fn_name = format!(
"__notcuda_ptx_impl__atom_{}_{}_{}_{}", "__zluda_ptx_impl__atom_{}_{}_{}_{}",
semantics, scope, space, op semantics, scope, space, op
); );
// TODO: extract to a function // TODO: extract to a function
@ -1757,7 +1757,7 @@ fn to_ptx_impl_bfe_call(
typ: ast::IntType, typ: ast::IntType,
arg: ast::Arg4<ExpandedArgParams>, arg: ast::Arg4<ExpandedArgParams>,
) -> ExpandedStatement { ) -> ExpandedStatement {
let prefix = "__notcuda_ptx_impl__"; let prefix = "__zluda_ptx_impl__";
let suffix = match typ { let suffix = match typ {
ast::IntType::U32 => "bfe_u32", ast::IntType::U32 => "bfe_u32",
ast::IntType::U64 => "bfe_u64", ast::IntType::U64 => "bfe_u64",

View file

@ -1,11 +1,11 @@
[package] [package]
name = "notcuda" name = "zluda"
version = "0.0.0" version = "0.0.0"
authors = ["Andrzej Janik <vosen@vosen.pl>"] authors = ["Andrzej Janik <vosen@vosen.pl>"]
edition = "2018" edition = "2018"
[lib] [lib]
name = "notcuda" name = "zluda"
crate-type = ["cdylib"] crate-type = ["cdylib"]
[dependencies] [dependencies]

View file

@ -8,7 +8,7 @@ use std::{
sync::atomic::{AtomicU32, Ordering}, sync::atomic::{AtomicU32, Ordering},
}; };
const PROJECT_URL_SUFFIX: &'static str = " [github.com/vosen/notCUDA]"; const PROJECT_URL_SUFFIX: &'static str = " [github.com/vosen/ZLUDA]";
#[repr(transparent)] #[repr(transparent)]
#[derive(Clone, Copy, Eq, PartialEq, Hash)] #[derive(Clone, Copy, Eq, PartialEq, Hash)]

View file

@ -1,6 +1,6 @@
#![allow(non_snake_case)] #![allow(non_snake_case)]
use crate::cuda as notcuda; use crate::cuda as zluda;
use crate::cuda::CUstream; use crate::cuda::CUstream;
use crate::cuda::CUuuid; use crate::cuda::CUuuid;
use crate::{ use crate::{
@ -18,8 +18,8 @@ macro_rules! cuda_driver_test {
($func:ident) => { ($func:ident) => {
paste! { paste! {
#[test] #[test]
fn [<$func _notcuda>]() { fn [<$func _zluda>]() {
$func::<crate::r#impl::test::NotCuda>() $func::<crate::r#impl::test::Zluda>()
} }
#[test] #[test]
@ -46,58 +46,58 @@ pub trait CudaDriverFns {
fn cuStreamDestroy_v2(stream: CUstream) -> CUresult; fn cuStreamDestroy_v2(stream: CUstream) -> CUresult;
} }
pub struct NotCuda(); pub struct Zluda();
impl CudaDriverFns for NotCuda { impl CudaDriverFns for Zluda {
fn cuInit(_flags: c_uint) -> CUresult { fn cuInit(_flags: c_uint) -> CUresult {
notcuda::cuInit(_flags as _) zluda::cuInit(_flags as _)
} }
fn cuCtxCreate_v2(pctx: *mut *mut c_void, flags: c_uint, dev: c_int) -> CUresult { fn cuCtxCreate_v2(pctx: *mut *mut c_void, flags: c_uint, dev: c_int) -> CUresult {
notcuda::cuCtxCreate_v2(pctx as *mut _, flags, CUdevice(dev)) zluda::cuCtxCreate_v2(pctx as *mut _, flags, CUdevice(dev))
} }
fn cuCtxDestroy_v2(ctx: *mut c_void) -> CUresult { fn cuCtxDestroy_v2(ctx: *mut c_void) -> CUresult {
notcuda::cuCtxDestroy_v2(ctx as *mut _) zluda::cuCtxDestroy_v2(ctx as *mut _)
} }
fn cuCtxPopCurrent_v2(pctx: *mut *mut c_void) -> CUresult { fn cuCtxPopCurrent_v2(pctx: *mut *mut c_void) -> CUresult {
notcuda::cuCtxPopCurrent_v2(pctx as *mut _) zluda::cuCtxPopCurrent_v2(pctx as *mut _)
} }
fn cuCtxGetApiVersion(ctx: *mut c_void, version: *mut c_uint) -> CUresult { fn cuCtxGetApiVersion(ctx: *mut c_void, version: *mut c_uint) -> CUresult {
notcuda::cuCtxGetApiVersion(ctx as *mut _, version) zluda::cuCtxGetApiVersion(ctx as *mut _, version)
} }
fn cuCtxGetCurrent(pctx: *mut *mut c_void) -> CUresult { fn cuCtxGetCurrent(pctx: *mut *mut c_void) -> CUresult {
notcuda::cuCtxGetCurrent(pctx as *mut _) zluda::cuCtxGetCurrent(pctx as *mut _)
} }
fn cuMemAlloc_v2(dptr: *mut *mut c_void, bytesize: usize) -> CUresult { fn cuMemAlloc_v2(dptr: *mut *mut c_void, bytesize: usize) -> CUresult {
notcuda::cuMemAlloc_v2(dptr as *mut _, bytesize) zluda::cuMemAlloc_v2(dptr as *mut _, bytesize)
} }
fn cuDeviceGetUuid(uuid: *mut CUuuid, dev: c_int) -> CUresult { fn cuDeviceGetUuid(uuid: *mut CUuuid, dev: c_int) -> CUresult {
notcuda::cuDeviceGetUuid(uuid, CUdevice(dev)) zluda::cuDeviceGetUuid(uuid, CUdevice(dev))
} }
fn cuDevicePrimaryCtxGetState(dev: c_int, flags: *mut c_uint, active: *mut c_int) -> CUresult { fn cuDevicePrimaryCtxGetState(dev: c_int, flags: *mut c_uint, active: *mut c_int) -> CUresult {
notcuda::cuDevicePrimaryCtxGetState(CUdevice(dev), flags, active) zluda::cuDevicePrimaryCtxGetState(CUdevice(dev), flags, active)
} }
fn cuStreamGetCtx(hStream: CUstream, pctx: *mut *mut c_void) -> CUresult { fn cuStreamGetCtx(hStream: CUstream, pctx: *mut *mut c_void) -> CUresult {
notcuda::cuStreamGetCtx(hStream, pctx as _) zluda::cuStreamGetCtx(hStream, pctx as _)
} }
fn cuStreamCreate(stream: *mut CUstream, flags: c_uint) -> CUresult { fn cuStreamCreate(stream: *mut CUstream, flags: c_uint) -> CUresult {
notcuda::cuStreamCreate(stream, flags) zluda::cuStreamCreate(stream, flags)
} }
fn cuMemFree_v2(dptr: *mut c_void) -> CUresult { fn cuMemFree_v2(dptr: *mut c_void) -> CUresult {
notcuda::cuMemFree_v2(CUdeviceptr(dptr as _)) zluda::cuMemFree_v2(CUdeviceptr(dptr as _))
} }
fn cuStreamDestroy_v2(stream: CUstream) -> CUresult { fn cuStreamDestroy_v2(stream: CUstream) -> CUresult {
notcuda::cuStreamDestroy_v2(stream) zluda::cuStreamDestroy_v2(stream)
} }
} }

View file

@ -1,15 +1,15 @@
[package] [package]
name = "notcuda_inject" name = "zluda_inject"
version = "0.0.0" version = "0.0.0"
authors = ["Andrzej Janik <vosen@vosen.pl>"] authors = ["Andrzej Janik <vosen@vosen.pl>"]
edition = "2018" edition = "2018"
[[bin]] [[bin]]
name = "notcuda" name = "zluda"
path = "src/main.rs" path = "src/main.rs"
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
notcuda_redirect = { path = "../notcuda_redirect" } zluda_redirect = { path = "../zluda_redirect" }
winapi = { version = "0.3", features = ["processthreadsapi", "std", "synchapi"] } winapi = { version = "0.3", features = ["processthreadsapi", "std", "synchapi"] }
detours-sys = "0.1" detours-sys = "0.1"
clap = "2.33" clap = "2.33"

View file

@ -20,11 +20,11 @@ use clap::{App, AppSettings, Arg};
mod win; mod win;
fn main() -> Result<(), Box<dyn Error>> { fn main() -> Result<(), Box<dyn Error>> {
let matches = App::new("notCUDA injector") let matches = App::new("ZLUDA injector")
.setting(AppSettings::TrailingVarArg) .setting(AppSettings::TrailingVarArg)
.arg( .arg(
Arg::with_name("EXE") Arg::with_name("EXE")
.help("Path to the executable to be injected with notCUDA") .help("Path to the executable to be injected with ZLUDA")
.required(true), .required(true),
) )
.arg( .arg(
@ -67,7 +67,7 @@ fn main() -> Result<(), Box<dyn Error>> {
ptr::null(), ptr::null(),
&mut startup_info as *mut _, &mut startup_info as *mut _,
&mut proc_info as *mut _, &mut proc_info as *mut _,
"notcuda_redirect.dll\0".as_ptr() as *const i8, "zluda_redirect.dll\0".as_ptr() as *const i8,
Option::None Option::None
), ),
|x| x != 0 |x| x != 0

View file

@ -1,5 +1,5 @@
[package] [package]
name = "notcuda_redirect" name = "zluda_redirect"
version = "0.0.0" version = "0.0.0"
authors = ["Andrzej Janik <vosen@vosen.pl>"] authors = ["Andrzej Janik <vosen@vosen.pl>"]
edition = "2018" edition = "2018"

View file

@ -19,8 +19,8 @@ use winapi::um::winbase::lstrcmpiW;
use winapi::um::winnt::{DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, HANDLE, LPCWSTR}; use winapi::um::winnt::{DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, HANDLE, LPCWSTR};
const NVCUDA_PATH: &[u16] = wch_c!(r"C:\WINDOWS\system32\nvcuda.dll"); const NVCUDA_PATH: &[u16] = wch_c!(r"C:\WINDOWS\system32\nvcuda.dll");
const NOTCUDA_DLL: &[u16] = wch!(r"nvcuda.dll"); const ZLUDA_DLL: &[u16] = wch!(r"nvcuda.dll");
static mut NOTCUDA_PATH: Option<Vec<u16>> = None; static mut ZLUDA_PATH: Option<Vec<u16>> = None;
static mut LOAD_LIBRARY_EX: unsafe extern "system" fn( static mut LOAD_LIBRARY_EX: unsafe extern "system" fn(
lpLibFileName: LPCWSTR, lpLibFileName: LPCWSTR,
@ -30,13 +30,13 @@ static mut LOAD_LIBRARY_EX: unsafe extern "system" fn(
#[allow(non_snake_case)] #[allow(non_snake_case)]
#[no_mangle] #[no_mangle]
unsafe extern "system" fn NotCudaLoadLibraryExW( unsafe extern "system" fn ZludaLoadLibraryExW(
lpLibFileName: LPCWSTR, lpLibFileName: LPCWSTR,
hFile: HANDLE, hFile: HANDLE,
dwFlags: DWORD, dwFlags: DWORD,
) -> HMODULE { ) -> HMODULE {
let nvcuda_file_name = if lstrcmpiW(lpLibFileName, NVCUDA_PATH.as_ptr()) == 0 { let nvcuda_file_name = if lstrcmpiW(lpLibFileName, NVCUDA_PATH.as_ptr()) == 0 {
NOTCUDA_PATH.as_ref().unwrap().as_ptr() ZLUDA_PATH.as_ref().unwrap().as_ptr()
} else { } else {
lpLibFileName lpLibFileName
}; };
@ -48,15 +48,15 @@ unsafe extern "system" fn NotCudaLoadLibraryExW(
unsafe extern "system" fn DllMain(_: *const u8, dwReason: u32, _: *const u8) -> i32 { unsafe extern "system" fn DllMain(_: *const u8, dwReason: u32, _: *const u8) -> i32 {
if dwReason == DLL_PROCESS_ATTACH { if dwReason == DLL_PROCESS_ATTACH {
DetourRestoreAfterWith(); DetourRestoreAfterWith();
match get_notcuda_dll_path() { match get_zluda_dll_path() {
Some((path, len)) => set_notcuda_dll_path(path, len), Some((path, len)) => set_zluda_dll_path(path, len),
None => return FALSE, None => return FALSE,
} }
DetourTransactionBegin(); DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread()); DetourUpdateThread(GetCurrentThread());
DetourAttach( DetourAttach(
std::mem::transmute(&mut LOAD_LIBRARY_EX), std::mem::transmute(&mut LOAD_LIBRARY_EX),
NotCudaLoadLibraryExW as *mut _, ZludaLoadLibraryExW as *mut _,
); );
DetourTransactionCommit(); DetourTransactionCommit();
} else if dwReason == DLL_PROCESS_DETACH { } else if dwReason == DLL_PROCESS_DETACH {
@ -64,14 +64,14 @@ unsafe extern "system" fn DllMain(_: *const u8, dwReason: u32, _: *const u8) ->
DetourUpdateThread(GetCurrentThread()); DetourUpdateThread(GetCurrentThread());
DetourDetach( DetourDetach(
std::mem::transmute(&mut LOAD_LIBRARY_EX), std::mem::transmute(&mut LOAD_LIBRARY_EX),
NotCudaLoadLibraryExW as *mut _, ZludaLoadLibraryExW as *mut _,
); );
DetourTransactionCommit(); DetourTransactionCommit();
} }
TRUE TRUE
} }
fn get_notcuda_dll_path() -> Option<(*const u16, usize)> { fn get_zluda_dll_path() -> Option<(*const u16, usize)> {
let guid = guid! {"C225FC0C-00D7-40B8-935A-7E342A9344C1"}; let guid = guid! {"C225FC0C-00D7-40B8-935A-7E342A9344C1"};
let mut module = std::ptr::null_mut(); let mut module = std::ptr::null_mut();
loop { loop {
@ -90,16 +90,16 @@ fn get_notcuda_dll_path() -> Option<(*const u16, usize)> {
None None
} }
unsafe fn set_notcuda_dll_path(path: *const u16, len: usize) { unsafe fn set_zluda_dll_path(path: *const u16, len: usize) {
let len = len as usize; let len = len as usize;
let mut result = Vec::<u16>::with_capacity(len + NOTCUDA_DLL.len() + 2); let mut result = Vec::<u16>::with_capacity(len + ZLUDA_DLL.len() + 2);
for i in 0..len { for i in 0..len {
result.push(*path.add(i)); result.push(*path.add(i));
} }
result.push(0x5c); // \ result.push(0x5c); // \
for c in NOTCUDA_DLL.iter().copied() { for c in ZLUDA_DLL.iter().copied() {
result.push(c); result.push(c);
} }
result.push(0); result.push(0);
NOTCUDA_PATH = Some(result); ZLUDA_PATH = Some(result);
} }