diff --git a/src/device_util.cpp b/src/device_util.cpp index 203e7a7826..19a23e419b 100644 --- a/src/device_util.cpp +++ b/src/device_util.cpp @@ -23,6 +23,7 @@ THE SOFTWARE. #include #include #include +#include "device_util.h" #include "hip/hip_runtime.h" @@ -33,15 +34,6 @@ THE SOFTWARE. This is the best place to put them because the device global variables need to be initialized at the start. */ - -#define NUM_PAGES_PER_THREAD 16 -#define SIZE_OF_PAGE 64 -#define NUM_THREADS_PER_CU 64 -#define NUM_CUS_PER_GPU 64 -#define NUM_PAGES NUM_PAGES_PER_THREAD * NUM_THREADS_PER_CU * NUM_CUS_PER_GPU -#define SIZE_MALLOC NUM_PAGES * SIZE_OF_PAGE -#define SIZE_OF_HEAP SIZE_MALLOC - size_t g_malloc_heap_size = SIZE_OF_HEAP; __attribute__((address_space(1))) char gpuHeap[SIZE_OF_HEAP]; diff --git a/src/device_util.h b/src/device_util.h new file mode 100644 index 0000000000..8ccf5a540e --- /dev/null +++ b/src/device_util.h @@ -0,0 +1,38 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#ifndef DEVICE_UTIL_H +#define DEVICE_UTIL_H + +/* + Heap size computation for malloc and free device functions. +*/ + +#define NUM_PAGES_PER_THREAD 16 +#define SIZE_OF_PAGE 64 +#define NUM_THREADS_PER_CU 64 +#define NUM_CUS_PER_GPU 64 +#define NUM_PAGES NUM_PAGES_PER_THREAD * NUM_THREADS_PER_CU * NUM_CUS_PER_GPU +#define SIZE_MALLOC NUM_PAGES * SIZE_OF_PAGE +#define SIZE_OF_HEAP SIZE_MALLOC + +#endif diff --git a/src/hip_device.cpp b/src/hip_device.cpp index 1275c8f19b..bc8a2c297f 100644 --- a/src/hip_device.cpp +++ b/src/hip_device.cpp @@ -23,6 +23,7 @@ THE SOFTWARE. #include "hip/hip_runtime.h" #include "hip_hcc.h" #include "trace_helper.h" +#include "device_util.h" //------------------------------------------------------------------------------------------------- //Devices @@ -97,8 +98,6 @@ hipError_t hipDeviceGetCacheConfig(hipFuncCache_t *cacheConfig) return ihipLogStatus(hipSuccess); } -extern "C" size_t g_malloc_heap_size; - hipError_t hipDeviceGetLimit (size_t *pValue, hipLimit_t limit) { HIP_INIT_API(pValue, limit); @@ -106,7 +105,7 @@ hipError_t hipDeviceGetLimit (size_t *pValue, hipLimit_t limit) return ihipLogStatus(hipErrorInvalidValue); } if(limit == hipLimitMallocHeapSize) { - *pValue = g_malloc_heap_size; + *pValue = (size_t)SIZE_OF_HEAP; return ihipLogStatus(hipSuccess); }else{ return ihipLogStatus(hipErrorUnsupportedLimit);