P4 to Git Change 2014404 by gandryey@gera-win10 on 2019/10/16 11:13:37
SWDEV-184710 - Support hipLaunchCooperativeKernelMultiDevice()
- Add support for multi grid launch in hip
- Detect the new hidden argument and pass the required information for the kernel launch
- Memory for synchronization is allocated as a single object and then the offset for each GPU is found
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/hip/hip_module.cpp#44 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#343 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/devkernel.cpp#25 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/devkernel.hpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#82 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#136 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#42 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#90 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.hpp#30 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#99 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#97 edit
[ROCm/clr commit: 6e7e97987f]
This commit is contained in:
1 orang tua
f49169e681
melakukan
fb7da41d27
10 files changed
+151
-52
No files matched your search
@@ -51,7 +51,7 @@ hsa_agent_t roc::Device::cpu_agent_ = {0};
|
||||
std::vector<hsa_agent_t> roc::Device::gpu_agents_;
|
||||
const bool roc::Device::offlineDevice_ = false;
|
||||
const bool roc::NullDevice::offlineDevice_ = true;
|
||||
|
||||
address Device::mg_sync_ = nullptr;
|
||||
|
||||
static HsaDeviceId getHsaDeviceId(hsa_agent_t device, uint32_t& pci_id) {
|
||||
if (HSA_STATUS_SUCCESS !=
|
||||
@@ -175,6 +175,10 @@ Device::~Device() {
|
||||
p2p_stage_->release();
|
||||
p2p_stage_ = nullptr;
|
||||
}
|
||||
if (nullptr != mg_sync_) {
|
||||
amd::SvmBuffer::free(GlbCtx(), mg_sync_);
|
||||
mg_sync_ = nullptr;
|
||||
}
|
||||
if (glb_ctx_ != nullptr) {
|
||||
glb_ctx_->release();
|
||||
glb_ctx_ = nullptr;
|
||||
@@ -715,28 +719,25 @@ bool Device::create(bool sramEccEnabled) {
|
||||
// Use just 1 entry by default for the map cache
|
||||
mapCache_->push_back(nullptr);
|
||||
|
||||
if ((p2p_agents_.size() == 0) &&
|
||||
(glb_ctx_ == nullptr) && (gpu_agents_.size() > 1) &&
|
||||
if ((glb_ctx_ == nullptr) && (gpu_agents_.size() >= 1) &&
|
||||
// Allow creation for the last device in the list.
|
||||
(gpu_agents_[gpu_agents_.size() - 1].handle == _bkendDevice.handle)) {
|
||||
|
||||
std::vector<amd::Device*> devices;
|
||||
uint32_t numDevices = amd::Device::numDevices(CL_DEVICE_TYPE_GPU, false);
|
||||
// Add all PAL devices
|
||||
for (uint32_t i = 0; i < numDevices; ++i) {
|
||||
devices.push_back(amd::Device::devices()[i]);
|
||||
devices.push_back(amd::Device::devices()[i]);
|
||||
}
|
||||
// Add current
|
||||
devices.push_back(this);
|
||||
// Create a dummy context
|
||||
glb_ctx_ = new amd::Context(devices, info);
|
||||
if (glb_ctx_ == nullptr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (devices.size() > 1) {
|
||||
// Create a dummy context
|
||||
glb_ctx_ = new amd::Context(devices, info);
|
||||
if (glb_ctx_ == nullptr) {
|
||||
return false;
|
||||
}
|
||||
amd::Buffer* buf =
|
||||
new (GlbCtx()) amd::Buffer(GlbCtx(), CL_MEM_ALLOC_HOST_PTR, kP2PStagingSize);
|
||||
if ((p2p_agents_.size() == 0) && (devices.size() > 1)) {
|
||||
amd::Buffer* buf = new (GlbCtx()) amd::Buffer(GlbCtx(), CL_MEM_ALLOC_HOST_PTR, kP2PStagingSize);
|
||||
if ((buf != nullptr) && buf->create()) {
|
||||
p2p_stage_ = buf;
|
||||
}
|
||||
@@ -745,6 +746,15 @@ bool Device::create(bool sramEccEnabled) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Check if sync buffer wasn't allocated yet
|
||||
if (amd::IS_HIP && mg_sync_ == nullptr) {
|
||||
mg_sync_ = reinterpret_cast<address>(amd::SvmBuffer::malloc(
|
||||
GlbCtx(), (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS),
|
||||
kMGInfoSizePerDevice * GlbCtx().devices().size(), kMGInfoSizePerDevice));
|
||||
if (mg_sync_ == nullptr) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (settings().stagedXferSize_ != 0) {
|
||||
@@ -1817,6 +1827,7 @@ VirtualGPU* Device::xferQueue() const {
|
||||
xferQueue_->enableSyncBlit();
|
||||
return xferQueue_;
|
||||
}
|
||||
|
||||
bool Device::SetClockMode(const cl_set_device_clock_mode_input_amd setClockModeInput, cl_set_device_clock_mode_output_amd* pSetClockModeOutput) {
|
||||
bool result = true;
|
||||
return result;
|
||||
|
||||
Reference in new issue
Block a user