Disable pinned gpu memory (#5753)

This commit is contained in:
sakridge 2019-08-31 16:44:07 -07:00 committed by GitHub
parent e3a6c9234a
commit 0c2a49391a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 11 deletions

View File

@ -16,6 +16,7 @@ codecov = { repository = "solana-labs/solana", branch = "master", service = "git
[features] [features]
cuda = [] cuda = []
kvstore = ["solana-kvstore"] kvstore = ["solana-kvstore"]
pin_gpu_memory = []
[dependencies] [dependencies]
bincode = "1.1.4" bincode = "1.1.4"

View File

@ -6,25 +6,23 @@
// cannot be paged to disk. The cuda driver provides these interfaces to pin and unpin memory. // cannot be paged to disk. The cuda driver provides these interfaces to pin and unpin memory.
use crate::recycler::Reset; 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 crate::sigverify::{cuda_host_register, cuda_host_unregister};
use std::ops::{Deref, DerefMut}; use std::ops::{Deref, DerefMut};
#[cfg(feature = "cuda")] #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))]
use std::mem::size_of;
#[cfg(feature = "cuda")]
use core::ffi::c_void;
#[cfg(feature = "cuda")]
use std::os::raw::c_int; use std::os::raw::c_int;
#[cfg(feature = "cuda")] #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))]
const CUDA_SUCCESS: c_int = 0; const CUDA_SUCCESS: c_int = 0;
pub fn pin<T>(_mem: &mut Vec<T>) { pub fn pin<T>(_mem: &mut Vec<T>) {
#[cfg(feature = "cuda")] #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))]
unsafe { unsafe {
use core::ffi::c_void;
use std::mem::size_of;
let err = cuda_host_register( let err = cuda_host_register(
_mem.as_mut_ptr() as *mut c_void, _mem.as_mut_ptr() as *mut c_void,
_mem.capacity() * size_of::<T>(), _mem.capacity() * size_of::<T>(),
@ -42,8 +40,10 @@ pub fn pin<T>(_mem: &mut Vec<T>) {
} }
pub fn unpin<T>(_mem: *mut T) { pub fn unpin<T>(_mem: *mut T) {
#[cfg(feature = "cuda")] #[cfg(all(feature = "cuda", feature = "pin_gpu_memory"))]
unsafe { unsafe {
use core::ffi::c_void;
let err = cuda_host_unregister(_mem as *mut c_void); let err = cuda_host_unregister(_mem as *mut c_void);
if err != CUDA_SUCCESS { if err != CUDA_SUCCESS {
error!("cudaHostUnregister returned: {} ptr: {:?}", err, _mem); error!("cudaHostUnregister returned: {} ptr: {:?}", err, _mem);