Disable pinned gpu memory (#5753)
This commit is contained in:
parent
e3a6c9234a
commit
0c2a49391a
|
@ -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"
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue