P4 to Git Change 1752994 by kjayapra@2_HIPWS_SL_D32 on 2019/03/07 14:06:54

SWDEV-145570 - Implementation of ihipMemsetD32 and ihipMemsetD32Async
	       HIP-HCC Info: https://github.com/ROCm-Developer-Tools/HIP/pull/933

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.def.in#11 edit
... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.map.in#12 edit
... //depot/stg/opencl/drivers/opencl/api/hip/hip_memory.cpp#44 edit


[ROCm/clr commit: 1f45d27b9f]
Этот коммит содержится в:
foreman
2019-03-07 14:58:49 -05:00
родитель 3d1f153ff4
Коммит deeefffff5
3 изменённых файлов: 29 добавлений и 20 удалений
+2
Просмотреть файл
@@ -95,8 +95,10 @@ hipMemGetAddressRange
hipMemGetInfo
hipMemPtrGetInfo
hipMemset
hipMemsetD32
hipMemset2D
hipMemsetAsync
hipMemsetD32Async
hipMemset2DAsync
hipMemsetD8
hipMemset3D
+2
Просмотреть файл
@@ -96,8 +96,10 @@ global:
hipMemGetInfo;
hipMemPtrGetInfo;
hipMemset;
hipMemsetD32;
hipMemset2D;
hipMemsetAsync;
hipMemsetD32Async;
hipMemset2DAsync;
hipMemsetD8;
hipMemset3D;
+25 -20
Просмотреть файл
@@ -112,24 +112,33 @@ hipError_t ihipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKin
return hipSuccess;
}
hipError_t ihipMemset(void* dst, int value, size_t sizeBytes, amd::HostQueue& queue,
bool isAsync = false) {
hipError_t ihipMemset(void* dst, int value, size_t valueSize, size_t sizeBytes,
hipStream_t stream, bool isAsync = false) {
if (dst == nullptr) {
return hipErrorInvalidValue;
}
size_t offset = 0;
amd::HostQueue* queue = nullptr;
amd::Memory* memory = getMemoryObject(dst, offset);
if (stream == nullptr) {
hip::syncStreams();
queue = hip::getNullStream();
} else {
hip::getNullStream()->finish();
queue = as_amd(reinterpret_cast<cl_command_queue>(stream))->asHostQueue();
}
if (memory != nullptr) {
// Device memory
amd::Command::EventWaitList waitList;
amd::Coord3D fillOffset(offset, 0, 0);
amd::Coord3D fillSize(sizeBytes, 1, 1);
amd::FillMemoryCommand* command =
new amd::FillMemoryCommand(queue, CL_COMMAND_FILL_BUFFER, waitList, *memory->asBuffer(),
&value, sizeof(char), fillOffset, fillSize);
new amd::FillMemoryCommand(*queue, CL_COMMAND_FILL_BUFFER, waitList, *memory->asBuffer(),
&value, valueSize, fillOffset, fillSize);
if (command == nullptr) {
return hipErrorOutOfMemory;
@@ -196,26 +205,25 @@ hipError_t hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind
hipError_t hipMemsetAsync(void* dst, int value, size_t sizeBytes, hipStream_t stream) {
HIP_INIT_API(dst, value, sizeBytes, stream);
amd::HostQueue* queue;
HIP_RETURN(ihipMemset(dst, value, sizeof(char), sizeBytes, stream, true));
}
if (stream == nullptr) {
hip::syncStreams();
queue = hip::getNullStream();
} else {
hip::getNullStream()->finish();
queue = as_amd(reinterpret_cast<cl_command_queue>(stream))->asHostQueue();
}
hipError_t hipMemsetD32Async(hipDeviceptr_t dst, int value, size_t count, hipStream_t stream) {
HIP_INIT_API(dst, value, count, stream);
HIP_RETURN(ihipMemset(dst, value, sizeBytes, *queue, true));
HIP_RETURN(ihipMemset(dst, value, sizeof(int), count * sizeof(int), stream, true));
}
hipError_t hipMemset(void* dst, int value, size_t sizeBytes) {
HIP_INIT_API(dst, value, sizeBytes);
hip::syncStreams();
amd::HostQueue* queue = hip::getNullStream();
HIP_RETURN(ihipMemset(dst, value, sizeof(char), sizeBytes, nullptr));
}
HIP_RETURN(ihipMemset(dst, value, sizeBytes, *queue));
hipError_t hipMemsetD32(hipDeviceptr_t dst, int value, size_t count) {
HIP_INIT_API(dst, value, count);
HIP_RETURN(ihipMemset(dst, value, sizeof(int), count * sizeof(int), nullptr));
}
hipError_t hipMemPtrGetInfo(void *ptr, size_t *size) {
@@ -360,10 +368,7 @@ hipError_t hipMemset3D(hipPitchedPtr pitchedDevPtr, int value, hipExtent extent)
void *dst = pitchedDevPtr.ptr;
size_t sizeBytes = pitchedDevPtr.pitch * extent.height * extent.depth;
hip::syncStreams();
amd::HostQueue* queue = hip::getNullStream();
HIP_RETURN(ihipMemset(dst, value, sizeBytes, *queue));
HIP_RETURN(ihipMemset(dst, value, sizeof(char), sizeBytes, nullptr));
}
hipError_t hipArrayCreate(hipArray** array, const HIP_ARRAY_DESCRIPTOR* pAllocateArray) {