P4 to Git Change 1999915 by cpaquot@cpaquot-ocl-lc-lnx on 2019/09/17 19:43:34
SWDEV-201128 - [HIP] test_snli_cuda failure
Default to sync packet
Make sure GPU_NUM_MEM_DEPENDENCY is 0 for HIP
No sync packet is only used when there are mem dependency check
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/hip/hip_context.cpp#22 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#86 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.hpp#28 edit
[ROCm/clr commit: 78cf6e473e]
Этот коммит содержится в:
@@ -195,7 +195,7 @@ bool VirtualGPU::processMemObjects(const amd::Kernel& kernel, const_address para
|
||||
const amd::KernelSignature& signature = kernel.signature();
|
||||
const amd::KernelParameters& kernelParams = kernel.parameters();
|
||||
|
||||
if (!cooperativeGroups) {
|
||||
if (!cooperativeGroups && memoryDependency().maxMemObjectsInQueue() != 0) {
|
||||
// AQL packets
|
||||
setAqlHeader(kDispatchPacketHeaderNoSync);
|
||||
}
|
||||
@@ -575,7 +575,7 @@ VirtualGPU::VirtualGPU(Device& device)
|
||||
kernarg_pool_base_ = nullptr;
|
||||
kernarg_pool_size_ = 0;
|
||||
kernarg_pool_cur_offset_ = 0;
|
||||
aqlHeader_ = kDispatchPacketHeaderNoSync;
|
||||
aqlHeader_ = kDispatchPacketHeader;
|
||||
barrier_signal_.handle = 0;
|
||||
|
||||
// Note: Virtual GPU device creation must be a thread safe operation
|
||||
@@ -2052,7 +2052,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, const
|
||||
return false;
|
||||
}
|
||||
|
||||
LogPrintfInfo("!\tShaderName : %s\n", gpuKernel.name().c_str());
|
||||
LogPrintfInfo("[%zx]!\tShaderName : %s\n", std::this_thread::get_id(), gpuKernel.name().c_str());
|
||||
|
||||
// Check if runtime has to setup hidden arguments
|
||||
for (uint32_t i = signature.numParameters(); i < signature.numParametersAll(); ++i) {
|
||||
|
||||
@@ -131,6 +131,9 @@ class VirtualGPU : public device::VirtualDevice {
|
||||
//! Clear memory dependency
|
||||
void clear(bool all = true);
|
||||
|
||||
//! Max number of mem objects in the queue
|
||||
size_t maxMemObjectsInQueue() const { return maxMemObjectsInQueue_; }
|
||||
|
||||
private:
|
||||
struct MemoryState {
|
||||
uint64_t start_; //! Busy memory start address
|
||||
|
||||
Ссылка в новой задаче
Block a user