Kokkos Node API and Local Linear Algebra Kernels Version of the Day
Kokkos_CUDANodeUtils.cpp
00001 #include "Kokkos_CUDANodeUtils.hpp"
00002 #include <iostream>
00003 #include <cuda_runtime.h>
00004 
00005 namespace Kokkos {
00006 
00007   CUDANodeDeallocator::CUDANodeDeallocator(size_t sizeInBytes, const Teuchos::RCP<CUDANodeMemoryModel> &node)
00008 #ifdef HAVE_KOKKOS_CUDA_NODE_MEMORY_PROFILING
00009   : node_(node)
00010   , allocSize_(sizeInBytes)
00011 #endif
00012   {
00013     (void)sizeInBytes;
00014     (void)node;
00015   }
00016 
00017   void CUDANodeDeallocator::free(void *ptr) {
00018     cudaError_t err = cudaFree(ptr);
00019     TEST_FOR_EXCEPTION( cudaSuccess != err, std::runtime_error, 
00020         "Kokkos::CUDANodeDeallocator::free(): cudaFree() returned error:\n"
00021         << cudaGetErrorString(err) 
00022       );
00023 #ifdef HAVE_KOKKOS_CUDA_NODE_MEMORY_PROFILING
00024     node_->allocSize_ -= allocSize_;
00025 #endif
00026   }
00027 
00028 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends