SWDEV-282397 - Alloc scratch memory on the current queue
Device enqueue has an option to execute scheduler on the current
queue and it's enabled by default. Make sure scratch is allocated
on the current queue for that case. Add max vgpr tracking per
program to adjust scratch size accordingly.
Change-Id: I2a6d796913a4551a1e7f343a2465d589eec60d8a
[ROCm/clr commit: e553b2763a]
Dieser Commit ist enthalten in:
1 Ursprung
44e600b701
Commit
8cea0215fb
3 Dateien geändert
+21
-6
Keine Dateien entsprechen Ihrer Suche
@@ -181,6 +181,7 @@ HSAILProgram::HSAILProgram(Device& device, amd::Program& owner)
|
||||
codeSegGpu_(nullptr),
|
||||
codeSegment_(nullptr),
|
||||
maxScratchRegs_(0),
|
||||
maxVgprs_(0),
|
||||
executable_(nullptr),
|
||||
loaderContext_(this) {
|
||||
assert(device.isOnline());
|
||||
@@ -194,6 +195,7 @@ HSAILProgram::HSAILProgram(NullDevice& device, amd::Program& owner)
|
||||
codeSegGpu_(nullptr),
|
||||
codeSegment_(nullptr),
|
||||
maxScratchRegs_(0),
|
||||
maxVgprs_(0),
|
||||
executable_(nullptr),
|
||||
loaderContext_(this) {
|
||||
assert(!device.isOnline());
|
||||
@@ -317,6 +319,7 @@ bool HSAILProgram::setKernels(amd::option::Options* options, void* binary, size_
|
||||
// with dynamic parallelism, since runtime doesn't know which child kernel will be called
|
||||
maxScratchRegs_ =
|
||||
std::max(static_cast<uint>(aKernel->workGroupInfo()->scratchRegs_), maxScratchRegs_);
|
||||
maxVgprs_ = std::max(static_cast<uint>(aKernel->workGroupInfo()->usedVGPRs_), maxVgprs_);
|
||||
}
|
||||
// Allocate kernel table for device enqueuing
|
||||
if (!isNull() && dynamicParallelism && !allocKernelTable()) {
|
||||
@@ -781,6 +784,7 @@ bool LightningProgram::setKernels(amd::option::Options* options, void* binary, s
|
||||
// with dynamic parallelism, since runtime doesn't know which child kernel will be called
|
||||
maxScratchRegs_ =
|
||||
std::max(static_cast<uint>(kernel->workGroupInfo()->scratchRegs_), maxScratchRegs_);
|
||||
maxVgprs_ = std::max(static_cast<uint>(kernel->workGroupInfo()->usedVGPRs_), maxVgprs_);
|
||||
}
|
||||
DestroySegmentCpuAccess();
|
||||
#endif // defined(USE_COMGR_LIBRARY)
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren