P4 to Git Change 1775995 by gandryey@gera-w8 on 2019/04/29 13:46:53

SWDEV-79445 - OCL generic changes and code clean-up
	- Enable P2P extension for PAL path, currently it's staging copy only
	- Fix P2P staging copy

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/hip/hip_memory.cpp#55 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#243 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#336 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#130 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#77 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#131 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#59 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#124 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#36 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#74 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#92 edit
This commit is contained in:
foreman
2019-04-29 13:58:26 -04:00
szülő 1dddb78021
commit 1e33e8be4d
10 fájl változott, egészen pontosan 210 új sor hozzáadva és 45 régi sor törölve
@@ -1253,6 +1253,12 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) {
size, cmd.isEntireMemory());
}
else {
amd::ScopedLock lock(dev().P2PStageOps());
Memory* dstStgMem = static_cast<Memory*>(
dev().P2PStage()->getDeviceMemory(*cmd.source().getContext().devices()[0]));
Memory* srcStgMem = static_cast<Memory*>(
dev().P2PStage()->getDeviceMemory(*cmd.destination().getContext().devices()[0]));
size_t copy_size = Device::kP2PStagingSize;
size_t left_size = size[0];
result = true;
@@ -1265,14 +1271,11 @@ void VirtualGPU::submitCopyMemoryP2P(amd::CopyMemoryP2PCommand& cmd) {
amd::Coord3D cpSize(copy_size);
// Perform 2 step transfer with staging buffer
// todo: optimization can be done with double buffering if events tracking
// will be propagated outside of the device transfers object
result &= dev().xferMgr().copyBuffer(*srcDevMem, *(dev().P2PStages()[0]), srcOrigin,
stageOffset, cpSize, cmd.isEntireMemory());
result &= dev().xferMgr().copyBuffer(
*srcDevMem, *dstStgMem, srcOrigin, stageOffset, cpSize);
srcOrigin.c[0] += copy_size;
result &= dstDevMem->dev().xferMgr().copyBuffer(*dstDevMem->dev().P2PStages()[0],
*dstDevMem, stageOffset, dstOrigin,
copy_size, cmd.isEntireMemory());
result &= dstDevMem->dev().xferMgr().copyBuffer(
*srcStgMem, *dstDevMem, stageOffset, dstOrigin, cpSize);
dstOrigin.c[0] += copy_size;
} while (left_size > 0);
}