SWDEV-529929 - hipMemGetHandleForAddressRange implementation. (#245)
This commit is contained in:
committed by
GitHub
parent
bed454caa1
commit
12131de4a9
@@ -826,6 +826,9 @@ hipError_t hipEventRecordWithFlags(hipEvent_t event, hipStream_t stream, unsigne
|
||||
hipError_t hipLaunchKernelExC(const hipLaunchConfig_t* config, const void* fPtr, void** args);
|
||||
hipError_t hipDrvLaunchKernelEx(const HIP_LAUNCH_CONFIG* config, hipFunction_t f, void** params,
|
||||
void** extra);
|
||||
hipError_t hipMemGetHandleForAddressRange(void* handle, hipDeviceptr_t dptr, size_t size,
|
||||
hipMemRangeHandleType handleType,
|
||||
unsigned long long flags);
|
||||
|
||||
} // namespace hip
|
||||
|
||||
@@ -1341,6 +1344,7 @@ void UpdateDispatchTable(HipDispatchTable* ptrDispatchTable) {
|
||||
ptrDispatchTable->hipEventRecordWithFlags_fn = hip::hipEventRecordWithFlags;
|
||||
ptrDispatchTable->hipLaunchKernelExC_fn = hip::hipLaunchKernelExC;
|
||||
ptrDispatchTable->hipDrvLaunchKernelEx_fn = hip::hipDrvLaunchKernelEx;
|
||||
ptrDispatchTable->hipMemGetHandleForAddressRange_fn = hip::hipMemGetHandleForAddressRange;
|
||||
}
|
||||
|
||||
#if HIP_ROCPROFILER_REGISTER > 0
|
||||
@@ -1981,15 +1985,17 @@ HIP_ENFORCE_ABI(HipDispatchTable, hipLinkDestroy_fn , 473)
|
||||
// HIP_RUNTIME_API_TABLE_STEP_VERSION == 11
|
||||
HIP_ENFORCE_ABI(HipDispatchTable, hipLaunchKernelExC_fn, 474);
|
||||
HIP_ENFORCE_ABI(HipDispatchTable, hipDrvLaunchKernelEx_fn, 475);
|
||||
// HIP_RUNTIME_API_TABLE_STEP_VERSION == 12
|
||||
HIP_ENFORCE_ABI(HipDispatchTable, hipMemGetHandleForAddressRange_fn, 476);
|
||||
// if HIP_ENFORCE_ABI entries are added for each new function pointer in the table, the number below
|
||||
// will be +1 of the number in the last HIP_ENFORCE_ABI line. E.g.:
|
||||
//
|
||||
// HIP_ENFORCE_ABI(<table>, <functor>, 8)
|
||||
//
|
||||
// HIP_ENFORCE_ABI_VERSIONING(<table>, 9) <- 8 + 1 = 9
|
||||
HIP_ENFORCE_ABI_VERSIONING(HipDispatchTable, 476)
|
||||
HIP_ENFORCE_ABI_VERSIONING(HipDispatchTable, 477)
|
||||
|
||||
static_assert(HIP_RUNTIME_API_TABLE_MAJOR_VERSION == 0 && HIP_RUNTIME_API_TABLE_STEP_VERSION == 11,
|
||||
static_assert(HIP_RUNTIME_API_TABLE_MAJOR_VERSION == 0 && HIP_RUNTIME_API_TABLE_STEP_VERSION == 12,
|
||||
"If you get this error, add new HIP_ENFORCE_ABI(...) code for the new function "
|
||||
"pointers and then update this check so it is true");
|
||||
#endif
|
||||
|
||||
@@ -601,6 +601,7 @@ hip_6.5 {
|
||||
global:
|
||||
hipLaunchKernelExC;
|
||||
hipDrvLaunchKernelEx;
|
||||
hipMemGetHandleForAddressRange;
|
||||
local:
|
||||
*;
|
||||
} hip_6.4;
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
THE SOFTWARE. */
|
||||
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "device.hpp"
|
||||
#include "hip/driver_types.h"
|
||||
#include "hip_internal.hpp"
|
||||
#include "hip_platform.hpp"
|
||||
@@ -4279,4 +4280,23 @@ hipError_t hipExternalMemoryGetMappedMipmappedArray(
|
||||
HIP_RETURN(ihipMipmapArrayCreate(mipmap, &allocateArray, mipmapDesc->numLevels,
|
||||
(size_t)mipmapDesc->offset, buf));
|
||||
}
|
||||
} // namespace hip
|
||||
|
||||
hipError_t hipMemGetHandleForAddressRange(void* handle, hipDeviceptr_t dptr, size_t size,
|
||||
hipMemRangeHandleType handleType,
|
||||
unsigned long long flags) {
|
||||
HIP_INIT_API(hipMemGetHandleForAddressRange, handle, dptr, size, handleType, flags);
|
||||
|
||||
// We do not support any flags at this time.
|
||||
if (dptr == nullptr || size == 0 || handleType != hipMemRangeHandleTypeDmaBufFd || flags != 0) {
|
||||
HIP_RETURN(hipErrorInvalidValue;)
|
||||
}
|
||||
|
||||
amd::Device* device = hip::getCurrentDevice()->devices()[0];
|
||||
if (!device->GetHandleForAddressRange(dptr, size, handle)) {
|
||||
HIP_RETURN(hipErrorInvalidValue;)
|
||||
}
|
||||
|
||||
HIP_RETURN(hipSuccess);
|
||||
}
|
||||
|
||||
} // namespace hip
|
||||
@@ -1877,4 +1877,11 @@ hipError_t hipLaunchKernelExC(const hipLaunchConfig_t* config, const void* fPtr,
|
||||
hipError_t hipDrvLaunchKernelEx(const HIP_LAUNCH_CONFIG* config, hipFunction_t f, void** kernel,
|
||||
void** extra) {
|
||||
return hip::GetHipDispatchTable()->hipDrvLaunchKernelEx_fn(config, f, kernel, extra);
|
||||
}
|
||||
|
||||
hipError_t hipMemGetHandleForAddressRange(void* handle, hipDeviceptr_t dptr, size_t size,
|
||||
hipMemRangeHandleType handleType,
|
||||
unsigned long long flags) {
|
||||
return hip::GetHipDispatchTable()->hipMemGetHandleForAddressRange_fn(handle, dptr, size,
|
||||
handleType, flags);
|
||||
}
|
||||
Reference in New Issue
Block a user