Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 3 additions & 16 deletions projects/hipblaslt/tensilelite/src/ContractionSolution.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5454,9 +5454,7 @@ namespace TensileLite
{
// Limit workgroups per CU to 3
// TODO Verify this limit is best
const size_t occupancy
= std::max(self.sizeMapping.CUOccupancy, static_cast<int>(1));
auto kernelOccupancy = std::min(occupancy, size_t{3});
auto kernelOccupancy = std::min(self.sizeMapping.CUOccupancy, 3);
auto maxGrid = cuCount * kernelOccupancy;
if(pAMDGPU->skMaxCUs > 0)
{
Expand Down Expand Up @@ -5680,22 +5678,11 @@ namespace TensileLite
{
size_t itersPerTile = problem.getItersPerTile(self.sizeMapping);
size_t itersPerWG = tiles * itersPerTile / skGrid;
// numWorkItems = skGrid * threadsPerWorkGroup
// the largest grid this fallback can express is
// UINT32_MAX / threadsPerWorkGroup -- 2^24 tiles at 256 threads
// but 2^25 at 128 and 2^22 at 1024.
const size_t threadsPerWorkGroup = self.sizeMapping.workGroupSize.x
* self.sizeMapping.workGroupSize.y
* self.sizeMapping.workGroupSize.z;
const size_t maxTiles = (size_t{std::numeric_limits<uint32_t>::max()} + 1)
/ std::max(threadsPerWorkGroup, size_t{1});

if(itersPerTile >= 65536 || itersPerWG >= 65536
|| (tiles * itersPerTile) >= maxTiles)
|| (tiles * itersPerTile) >= 16777216)
{
const size_t occupancy
= std::max(self.sizeMapping.CUOccupancy, static_cast<int>(1));
skGrid = (tiles >= maxTiles) ? cuCount * occupancy : tiles;
skGrid = tiles;
if(outTreeBoundsFallback)
*outTreeBoundsFallback = true;
}
Expand Down
Loading
Loading