diff --git a/src/MemoryProcessing.cpp b/src/MemoryProcessing.cpp index ecaa177ca07bdaf316d9c37f62dcafc4866273e0..4a6dcd83301fc5ecc912a4c9387e6aa0dc517bc1 100644 --- a/src/MemoryProcessing.cpp +++ b/src/MemoryProcessing.cpp @@ -2,53 +2,56 @@ #include <cstdlib> #include <cstring> -template<> -bool memproc::dealloc<MemType::CPU>(void *&array, size_t &allocated_size) +namespace memproc { - if(allocated_size > 0) + template<> + bool dealloc<MemType::CPU>(void *&array, size_t &allocated_size) { - free(array); - allocated_size = 0; - } - - return true; -} - -template<> -bool memproc::dealloc<MemType::CPU>(void *&array) -{ - free(array); - return true; -} + if(allocated_size > 0) + { + free(array); + allocated_size = 0; + } -template <> -bool memproc::alloc<MemType::CPU>(void *&array, const size_t new_size) -{ - array = malloc(new_size); - memset(array, 0, new_size); - - return true; -} + return true; + } + template<> + bool dealloc<MemType::CPU>(void *&array) + { + free(array); + return true; + } -template <> -bool memproc::realloc<MemType::CPU>(void *&array, size_t &allocated_size, const size_t new_size) -{ - if(new_size > allocated_size) + template <> + bool alloc<MemType::CPU>(void *&array, const size_t new_size) { - if(allocated_size > 0) dealloc<MemType::CPU>(array, allocated_size); - allocated_size = new_size; array = malloc(new_size); memset(array, 0, new_size); + + return true; } - return true; -} -template <> -bool memproc::memcopy<MemType::CPU, MemType::CPU>(void *dst, const void* src, const size_t copy_elem_size) -{ - memcpy(dst, src, copy_elem_size); + template <> + bool realloc<MemType::CPU>(void *&array, size_t &allocated_size, const size_t new_size) + { + if(new_size > allocated_size) + { + if(allocated_size > 0) dealloc<MemType::CPU>(array, allocated_size); + allocated_size = new_size; + array = malloc(new_size); + memset(array, 0, new_size); + } + + return true; + } + + template <> + bool memcopy<MemType::CPU, MemType::CPU>(void *dst, const void* src, const size_t copy_elem_size) + { + memcpy(dst, src, copy_elem_size); - return true; + return true; + } } \ No newline at end of file diff --git a/src/MemoryProcessing.cu b/src/MemoryProcessing.cu index 9ce6d30cd2e7780c1df278dfc569ab15d546e411..4c866edff474f039eca1ef2ddd4c535ee0574ac2 100644 --- a/src/MemoryProcessing.cu +++ b/src/MemoryProcessing.cu @@ -2,66 +2,69 @@ #include <cuda.h> #include <cuda_runtime_api.h> -template<> -bool memproc::dealloc<MemType::GPU>(void *&array, size_t &allocated_size) +namespace memproc { - if(allocated_size > 0) + template<> + bool dealloc<MemType::GPU>(void *&array, size_t &allocated_size) { - cudaFree(array); - allocated_size = 0; - } - - return true; -} + if(allocated_size > 0) + { + cudaFree(array); + allocated_size = 0; + } -template<> -bool memproc::dealloc<MemType::GPU>(void *&array) -{ - cudaFree(array); - return true; -} - -template <> -bool memproc::alloc<MemType::GPU>(void *&array, const size_t new_size) -{ - cudaMalloc ( (void **)&array, new_size); - cudaMemset(array, 0, new_size); + return true; + } - return true; -} + template<> + bool dealloc<MemType::GPU>(void *&array) + { + cudaFree(array); + return true; + } -template <> -bool memproc::realloc<MemType::GPU>(void *&array, size_t &allocated_size, const size_t new_size) -{ - if(new_size > allocated_size) + template <> + bool alloc<MemType::GPU>(void *&array, const size_t new_size) { - if(allocated_size > 0) dealloc<MemType::GPU>(array, allocated_size); - allocated_size = new_size; cudaMalloc ( (void **)&array, new_size); cudaMemset(array, 0, new_size); + + return true; } - return true; -} + template <> + bool realloc<MemType::GPU>(void *&array, size_t &allocated_size, const size_t new_size) + { + if(new_size > allocated_size) + { + if(allocated_size > 0) dealloc<MemType::GPU>(array, allocated_size); + allocated_size = new_size; + cudaMalloc ( (void **)&array, new_size); + cudaMemset(array, 0, new_size); + } -template <> -bool memproc::memcopy<MemType::GPU, MemType::CPU>(void *dst, const void* src, const size_t copy_elem_size) -{ - cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyHostToDevice); + return true; + } - return true; -} + template <> + bool memcopy<MemType::GPU, MemType::CPU>(void *dst, const void* src, const size_t copy_elem_size) + { + cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyHostToDevice); -template <> -bool memproc::memcopy<MemType::CPU, MemType::GPU>(void *dst, const void* src, const size_t copy_elem_size) -{ - cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyDeviceToHost); - return true; -} + return true; + } -template <> -bool memproc::memcopy<MemType::GPU, MemType::GPU>(void *dst, const void* src, const size_t copy_elem_size) -{ - cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyDeviceToDevice); - return true; + template <> + bool memcopy<MemType::CPU, MemType::GPU>(void *dst, const void* src, const size_t copy_elem_size) + { + cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyDeviceToHost); + return true; + } + + template <> + bool memcopy<MemType::GPU, MemType::GPU>(void *dst, const void* src, const size_t copy_elem_size) + { + cudaMemcpy ( dst, src, copy_elem_size, cudaMemcpyDeviceToDevice); + return true; + } } \ No newline at end of file