Added new API, hipMemPtrGetInfo
1. This API returns memory allocation size of pointer 2. Added test to check its functionality Change-Id: I87976d817b5a6ca5530336c09e7cb0420601cb2c
Этот коммит содержится в:
@@ -1236,6 +1236,9 @@ hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t st
|
||||
hipError_t hipMemGetInfo (size_t * free, size_t * total) ;
|
||||
|
||||
|
||||
hipError_t hipMemPtrGetInfo(void *ptr, size_t *size);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Allocate an array on the device.
|
||||
*
|
||||
|
||||
@@ -1024,6 +1024,27 @@ hipError_t hipMemGetInfo (size_t *free, size_t *total)
|
||||
return ihipLogStatus(e);
|
||||
}
|
||||
|
||||
hipError_t hipMemPtrGetInfo(void *ptr, size_t *size)
|
||||
{
|
||||
HIP_INIT_API(ptr, size);
|
||||
|
||||
hipError_t e = hipSuccess;
|
||||
|
||||
if(ptr != nullptr && size != nullptr){
|
||||
hc::accelerator acc;
|
||||
hc::AmPointerInfo amPointerInfo(NULL, NULL, 0, acc, 0, 0);
|
||||
am_status_t status = hc::am_memtracker_getinfo(&amPointerInfo, ptr);
|
||||
if(status == AM_SUCCESS){
|
||||
*size = amPointerInfo._sizeBytes;
|
||||
}else{
|
||||
e = hipErrorInvalidValue;
|
||||
}
|
||||
}else{
|
||||
e = hipErrorInvalidValue;
|
||||
}
|
||||
return ihipLogStatus(e);
|
||||
}
|
||||
|
||||
hipError_t hipFree(void* ptr)
|
||||
{
|
||||
HIP_INIT_API(ptr);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved.
|
||||
Copyright (c) 2015-2017 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
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
Copyright (c) 2015-2017 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.
|
||||
*/
|
||||
|
||||
/* HIT_START
|
||||
* BUILD: %t %s ../../test_common.cpp
|
||||
* RUN: %t
|
||||
* HIT_END
|
||||
*/
|
||||
|
||||
#include"test_common.h"
|
||||
|
||||
struct {
|
||||
float a;
|
||||
int b;
|
||||
void *c;
|
||||
} Struct ;
|
||||
|
||||
int main(){
|
||||
int *iPtr;
|
||||
float *fPtr;
|
||||
struct Struct *sPtr;
|
||||
size_t sSetSize = 1024, sGetSize;
|
||||
hipMalloc(&iPtr, sSetSize);
|
||||
hipMalloc(&fPtr, sSetSize);
|
||||
hipMalloc(&sPtr, sSetSize);
|
||||
hipMemPtrGetInfo(iPtr, &sGetSize);
|
||||
assert(sGetSize == sSetSize);
|
||||
hipMemPtrGetInfo(fPtr, &sGetSize);
|
||||
assert(sGetSize == sSetSize);
|
||||
hipMemPtrGetInfo(sPtr, &sGetSize);
|
||||
assert(sGetSize == sSetSize);
|
||||
passed();
|
||||
}
|
||||
Ссылка в новой задаче
Block a user