From 0c2a49391a182cc3c405a453dd6ca065d8a3652b Mon Sep 17 00:00:00 2001 From: sakridge Date: Sat, 31 Aug 2019 16:44:07 -0700 Subject: [PATCH] Disable pinned gpu memory (#5753) --- core/Cargo.toml | 1 + core/src/cuda_runtime.rs | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/core/Cargo.toml b/core/Cargo.toml index 965902d6b..e640ff6aa 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -16,6 +16,7 @@ codecov = { repository = "solana-labs/solana", branch = "master", service = "git [features] cuda = [] kvstore = ["solana-kvstore"] +pin_gpu_memory = [] [dependencies] bincode = "1.1.4" diff --git a/core/src/cuda_runtime.rs b/core/src/cuda_runtime.rs index 929468eb1..c554f2a78 100644 --- a/core/src/cuda_runtime.rs +++ b/core/src/cuda_runtime.rs @@ -6,25 +6,23 @@ // cannot be paged to disk. The cuda driver provides these interfaces to pin and unpin memory. use crate::recycler::Reset; -#[cfg(feature = "cuda")] + +#[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))] use crate::sigverify::{cuda_host_register, cuda_host_unregister}; use std::ops::{Deref, DerefMut}; -#[cfg(feature = "cuda")] -use std::mem::size_of; - -#[cfg(feature = "cuda")] -use core::ffi::c_void; - -#[cfg(feature = "cuda")] +#[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))] use std::os::raw::c_int; -#[cfg(feature = "cuda")] +#[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))] const CUDA_SUCCESS: c_int = 0; pub fn pin(_mem: &mut Vec) { - #[cfg(feature = "cuda")] + #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))] unsafe { + use core::ffi::c_void; + use std::mem::size_of; + let err = cuda_host_register( _mem.as_mut_ptr() as *mut c_void, _mem.capacity() * size_of::(), @@ -42,8 +40,10 @@ pub fn pin(_mem: &mut Vec) { } pub fn unpin(_mem: *mut T) { - #[cfg(feature = "cuda")] + #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))] unsafe { + use core::ffi::c_void; + let err = cuda_host_unregister(_mem as *mut c_void); if err != CUDA_SUCCESS { error!("cudaHostUnregister returned: {} ptr: {:?}", err, _mem);