Open
Conversation
`kernels_[blitType]` yields a null function pointer in `KernelBlitManager::initHeap` due to `KernelBlitManager::createProgram` not initializing all the kernels because of broken layout invariants. `KernBlitManager::NumBlitKernels` has two possible return values: `BlitTotal, and BlitLinearTotal` which are sentinels. These sentinels are used in `KernelBlitManager::createProgram` to initialize the `kernels_` array. It correctly initializes `[0, NumBlitKernels())`, but `InitHeap` is > `NumBlitKernels`, so the `InitHeap` kernel is not loaded. Thus, when images are disabled, and a kernel has an `hidden_heap_v1` entry, the `InitHeap` blitkernel is not loaded, and `kernelBlitManager::initHeap` subsequently gets a null pointer. The kernel always has such `hidden_heap_v1` descriptor entry at -O0, but I believe it's possible (unconfirmed) for this situation to occur in other circumstances. The fix is simply to ensure the `InitHeap` enumeration has a numeric value *less than* `BlitLinearTotal`. n.b. This bug does not exist on the 5.7 release, but it looks like that's by chance.
Contributor
|
cc'ing: @gandryey @chrispaquot @saleelk |
npmiller
added a commit
to npmiller/llvm
that referenced
this pull request
May 30, 2024
This was tracked down to a bug in ROCm that seems to be fixed with newer versions, and the CI is now on ROCm 6+ so these should be fine. ROCm ticket: ROCm/clr#13 The reduce over group test works on W6800 and MI210, but it seems for gfx1031 it reports not supporting shared USM, note that HIP for gfx1031 isn't officially supported by AMD.
steffenlarsen
pushed a commit
to intel/llvm
that referenced
this pull request
Jun 7, 2024
This was tracked down to a bug in ROCm that seems to be fixed with newer versions, and the CI is now on ROCm 6+ so these should be fine. ROCm ticket: ROCm/clr#13 The reduce over group test works on W6800 and MI210, but it seems for gfx1031 it reports not supporting shared USM, note that HIP for gfx1031 isn't officially supported by AMD. --------- Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
ianayl
pushed a commit
to ianayl/sycl
that referenced
this pull request
Jun 13, 2024
This was tracked down to a bug in ROCm that seems to be fixed with newer versions, and the CI is now on ROCm 6+ so these should be fine. ROCm ticket: ROCm/clr#13 The reduce over group test works on W6800 and MI210, but it seems for gfx1031 it reports not supporting shared USM, note that HIP for gfx1031 isn't officially supported by AMD. --------- Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
|
Hi @ldrumm, can you check if this is still an issue in the latest ROCm release? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
kernels_[blitType]yields a null function pointer inKernelBlitManager::initHeapdue toKernelBlitManager::createProgramnot initializing all the kernels because of broken layout invariants.KernBlitManager::NumBlitKernelshas two possible return values:BlitTotal, andBlitLinearTotalwhich are sentinels. These sentinels are used inKernelBlitManager::createProgramto initialize thekernels_array. It correctly initializes[0, NumBlitKernels()), butInitHeapis >NumBlitKernels, so theInitHeapkernel is not loaded.Thus, when images are disabled, and a kernel has an
hidden_heap_v1entry, theInitHeapblitkernel is not loaded, andkernelBlitManager::initHeapsubsequently gets a null pointer. The kernel always has suchhidden_heap_v1descriptor entry at -O0, but I believe it's possible (unconfirmed) for this situation to occur in other circumstances.The fix is simply to ensure the
InitHeapenumeration has a numeric value less thanBlitLinearTotal.n.b. This bug does not exist on the 5.7 release, but it looks like that's by chance.