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]
cuda = []
kvstore = ["solana-kvstore"]
pin_gpu_memory = []
[dependencies]
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.
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<T>(_mem: &mut Vec<T>) {
#[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::<T>(),
@ -42,8 +40,10 @@ pub fn pin<T>(_mem: &mut Vec<T>) {
}
pub fn unpin<T>(_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);