SWDEV-489255 - Update stack size limit in rocvirtual

Change-Id: I2aac9d211f64b3d6c121d8b010d215dcbdeac3aa
This commit is contained in:
Ioannis Assiouras
2024-12-13 13:31:52 +00:00
parent 13e2e797c0
commit a808c4b23a
3 changed files with 10 additions and 11 deletions
+1 -6
View File
@@ -938,12 +938,7 @@ bool Device::disableP2P(amd::Device* ptrDev) {
}
bool Device::UpdateStackSize(uint64_t stackSize) {
// Amount of space used by each wave is in units of 256 dwords.
// As per COMPUTE_TMPRING_SIZE.WAVE_SIZE 24:12
// The field size supports a range of 0->(2M-256) dwords per wave64.
// Per lane this works out to 131056 bytes or 128K - 16
uint64_t kStackSize = ((128 * Ki) - 16);
if (stackSize > kStackSize) {
if (stackSize > kMaxStackSize) {
return false;
}
stack_size_ = amd::alignUp(stackSize, 16);
+6
View File
@@ -1653,6 +1653,12 @@ class Device : public RuntimeObject {
static constexpr size_t kMGInfoSizePerDevice = kMGSyncDataSize + sizeof(MGSyncInfo);
static constexpr size_t kSGInfoSize = kMGSyncDataSize;
// Amount of space used by each wave is in units of 256 dwords.
// As per COMPUTE_TMPRING_SIZE.WAVE_SIZE 24:12
// The field size supports a range of 0->(2M-256) dwords per wave64.
// Per lane this works out to 131056 bytes or 128K - 16
static constexpr size_t kMaxStackSize = ((128 * Ki) - 16);
typedef std::list<CommandQueue*> CommandQueues;
struct BlitProgram : public amd::HeapObject {
+3 -5
View File
@@ -3479,11 +3479,9 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes,
dispatchPacket.private_segment_size = devKernel->workGroupInfo()->privateMemSize_;
if ((devKernel->workGroupInfo()->usedStackSize_ & 0x1) == 0x1) {
dispatchPacket.private_segment_size =
std::max<uint64_t>(dev().StackSize(), dispatchPacket.private_segment_size);
if (dispatchPacket.private_segment_size > 16 * Ki) {
dispatchPacket.private_segment_size = 16 * Ki;
}
dispatchPacket.private_segment_size = std::min<uint64_t>(
std::max<uint64_t>(dev().StackSize(), dispatchPacket.private_segment_size),
Device::kMaxStackSize);
}
// Pass the header accordingly