Skip to content

Windows: Use is_versioned = true consistently in both Comgr::LoadLib paths. - #493

Closed
systems-assistant[bot] wants to merge 2 commits into
developfrom
import/develop/ROCm_clr/pr-243
Closed

systems-assistant[bot] wants to merge 2 commits into
developfrom
import/develop/ROCm_clr/pr-243

Conversation

@systems-assistant

Copy link
Copy Markdown
Contributor

Prior to this, RTCProgram was using is_version = true and device initialization was using false. On Windows, this was causing us to attempt to load amd_comgr_3.dll at device load and amd_comgr0605.dll for RTC programs. Obviously, there is only one DLL and it must be used consistently.

See ROCm/clr#162


🔁 Imported from ROCm/clr#243
🧑‍💻 Originally authored by @rocm-devops

@mangupta

mangupta commented Sep 9, 2025

Copy link
Copy Markdown
Contributor

@zichguan-amd : There is a reason why the 2 different versions of the DLL exist. And there are situations in which we need to load amd_comgr_3 and in some cases we need to load amd_comgr_XXYY.dll. Can you provide a reproducer or example where you see the mismatch in loading so that we can solve this the right way?

@zichguan-amd

Copy link
Copy Markdown
Contributor

@stellaraccident can you address the reviewer's comment?

@stellaraccident

Copy link
Copy Markdown
Contributor

@zichguan-amd : There is a reason why the 2 different versions of the DLL exist. And there are situations in which we need to load amd_comgr_3 and in some cases we need to load amd_comgr_XXYY.dll. Can you provide a reproducer or example where you see the mismatch in loading so that we can solve this the right way?

What is the reason? I don't believe it applies to new builds with TheRock: those always have the one DLL version. I know there are various games played with prior setups based on the Adrenaline driver, etc. But none of those are public and are a little hard to comment on. The default build of TheRock on windows has to include this patch. Without it, the naming of comgr that gets compiled does not match the naming of what is attempted to load.

There may be something else mis-aligned there, but it is the same path as on Linux and I think the older integrations have a weird expectation here.

@mangupta

Copy link
Copy Markdown
Contributor

What is the reason? I don't believe it applies to new builds with TheRock: those always have the one DLL version. I know there are various games played with prior setups based on the Adrenaline driver, etc. But none of those are public and are a little hard to comment on. The default build of TheRock on windows has to include this patch. Without it, the naming of comgr that gets compiled does not match the naming of what is attempted to load.

There may be something else mis-aligned there, but it is the same path as on Linux and I think the older integrations have a weird expectation here.

Similar to nvrtc, ROCm provides hipRTC which lets applications to compile and execute on the fly. However this requires applications to bundle or embed their GPU kernel source as part of their applications, which is not acceptable for customers who have sensitive GPU kernel code.
To workaround this, we provide a bitcode linking mode wherein customers use certain ROCm llvm toolchain to generate LLVM IR based binaries which hipRTC will accept and link+execute on the fly. The restriction of this approach is that LLVM IR is not guaranteed to be backward compatible. So both application developers and the end users of the applications using bitcode linking need to use the same comgr+hipRTC versions. Note that such applications cannot benefit from backward compatibility support from AMD.
Hence we version comgr and hipRTC shared libraries so that application link to the specific version (example hiprtc0604.dll and amd_comgr0604.dll) instead of the generic version (example hiprtc.dll and amd_comgr_3.dll). However HIP applications that do not use hipRTC would need to link to the generic version so that they can benefit from the backward compatibility support from AMD.
Consequently we need both hiprtc.dll and hiprtcXXYY.dll and the corresponding comgr dlls for the two different use cases.

@stellaraccident

Copy link
Copy Markdown
Contributor

Thanks. We will need to discuss more on Monday. We're mixing a lot of requirements, and I'm pretty sure that there is an actual problem here.

I'd also like to understand more about the bytecode compatibility. Something there isn't matching my mental model of how I've seen other setups work.

@gandryey
gandryey requested a review from lamb-j January 23, 2026 15:47

@lamb-j lamb-j left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the near future (i.e. for ROCm 8), we're aiming to switch back to using amd_comgr.dll everywhere.

We can differentiate version via DLL metadata and amd_comgr_version() APIs. And we can isolate DLLs via SxS assemblies.

For now though, we can land this for now to stop carrying TheRock patch, assuming this doesn't immediately break our Drivers builds of CLR, which haven't been operating with this change (as they don't use TheRock)

@lamb-j lamb-j left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On second thought, we should make sure we test with a Drivers build first

ammallya pushed a commit that referenced this pull request Jan 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been inactive for 25 days and will be marked as stale.

If you would like to keep this PR open, please:

  • Add new commits
  • Add a comment explaining why it should remain open

This PR will be automatically closed in 5 days if no further activity occurs.

@github-actions github-actions Bot added the Stale PR has no activity for 25+ days label May 14, 2026
@lamb-j

lamb-j commented May 14, 2026

Copy link
Copy Markdown
Contributor

This is effectively fixed with #4211

Still waiting on the next compiler promotions to remove the effective flag-gating in TheRock: ROCm/TheRock#4730

@lamb-j lamb-j closed this May 14, 2026
kcossett-amd added a commit that referenced this pull request Jul 20, 2026
## Motivation

<!-- Explain the purpose of this PR and the goals it aims to achieve.
-->

`ROCprofiler-SDK`'s #6276 has made a CI warning that would previously
crash some `selective-region` tests non-fatal.
Now we can re-enable the remaining tests.

## Technical Details

Remove the following from the common TheRock exclusion list on `gfx950`
workflow AND `test_categories.yaml`:
```
selective-region-region-1-filter.*
selective-region-region-2-and-3.*
selective-region-no-marker-region-1-filter.*
```

<!-- Explain the changes along with any relevant GitHub links. -->

## Issue Tracking

<!-- Include a GitHub Issue and/or JIRA ID. Do not post any full JIRA
links here. -->
<!-- GitHub issue: #1234 -->
<!-- JIRA ID: EXAMPLECOMPONENT-1234 -->

Jira ID: AIPROFSYST-521

## Test Plan

<!-- Explain any relevant testing done to verify this PR. -->

Workflows + TheRock CI

## Test Result

<!-- Briefly summarize test outcomes. -->

`gfx950` tests pass:
https://github.com/ROCm/rocm-systems/actions/runs/29582264277/job/87890685718?pr=8759

TheRock CI tests pass:
https://github.com/ROCm/rocm-systems/actions/runs/29584647543/job/87915973657?pr=8759
```
        Start 488: selective-region-no-filter-start-stop-sys-run
355/473 Test #488: selective-region-no-filter-start-stop-sys-run ...................................................................................................................................   Passed    6.85 sec
        Start 489: selective-region-no-filter-start-stop-sampling
356/473 Test #489: selective-region-no-filter-start-stop-sampling ..................................................................................................................................   Passed    6.80 sec
        Start 490: selective-region-no-filter-push-pop-sys-run
357/473 Test #490: selective-region-no-filter-push-pop-sys-run .....................................................................................................................................   Passed    6.82 sec
        Start 491: selective-region-no-filter-push-pop-sampling
358/473 Test #491: selective-region-no-filter-push-pop-sampling ....................................................................................................................................   Passed    6.82 sec
        Start 492: selective-region-region-1-filter-start-stop-sys-run
359/473 Test #492: selective-region-region-1-filter-start-stop-sys-run .............................................................................................................................   Passed    6.09 sec
        Start 493: selective-region-region-1-filter-start-stop-sampling
360/473 Test #493: selective-region-region-1-filter-start-stop-sampling ............................................................................................................................   Passed    6.11 sec
        Start 494: selective-region-region-1-filter-push-pop-sys-run
361/473 Test #494: selective-region-region-1-filter-push-pop-sys-run ...............................................................................................................................   Passed    6.12 sec
        Start 495: selective-region-region-1-filter-push-pop-sampling
362/473 Test #495: selective-region-region-1-filter-push-pop-sampling ..............................................................................................................................   Passed    6.12 sec
        Start 496: selective-region-region-2-and-3-filter-start-stop-sys-run
363/473 Test #496: selective-region-region-2-and-3-filter-start-stop-sys-run .......................................................................................................................   Passed    5.93 sec
        Start 497: selective-region-region-2-and-3-filter-start-stop-sampling
364/473 Test #497: selective-region-region-2-and-3-filter-start-stop-sampling ......................................................................................................................   Passed    5.94 sec
        Start 498: selective-region-region-2-and-3-filter-push-pop-sys-run
365/473 Test #498: selective-region-region-2-and-3-filter-push-pop-sys-run .........................................................................................................................   Passed    5.93 sec
        Start 499: selective-region-region-2-and-3-filter-push-pop-sampling
366/473 Test #499: selective-region-region-2-and-3-filter-push-pop-sampling ........................................................................................................................   Passed    5.95 sec
        Start 500: selective-region-pause-no-filter-inside-start-stop-sys-run
367/473 Test #500: selective-region-pause-no-filter-inside-start-stop-sys-run ......................................................................................................................   Passed    4.79 sec
        Start 501: selective-region-pause-no-filter-inside-start-stop-sampling
368/473 Test #501: selective-region-pause-no-filter-inside-start-stop-sampling .....................................................................................................................   Passed    4.76 sec
        Start 502: selective-region-pause-no-filter-inside-push-pop-sys-run
369/473 Test #502: selective-region-pause-no-filter-inside-push-pop-sys-run ........................................................................................................................   Passed    4.80 sec
        Start 503: selective-region-pause-no-filter-inside-push-pop-sampling
370/473 Test #503: selective-region-pause-no-filter-inside-push-pop-sampling .......................................................................................................................   Passed    4.80 sec
        Start 504: selective-region-pause-no-filter-before-start-stop-sys-run
371/473 Test #504: selective-region-pause-no-filter-before-start-stop-sys-run ......................................................................................................................   Passed    4.80 sec
        Start 505: selective-region-pause-no-filter-before-start-stop-sampling
372/473 Test #505: selective-region-pause-no-filter-before-start-stop-sampling .....................................................................................................................   Passed    4.81 sec
        Start 506: selective-region-pause-no-filter-before-push-pop-sys-run
373/473 Test #506: selective-region-pause-no-filter-before-push-pop-sys-run ........................................................................................................................   Passed    4.79 sec
        Start 507: selective-region-pause-no-filter-before-push-pop-sampling
374/473 Test #507: selective-region-pause-no-filter-before-push-pop-sampling .......................................................................................................................   Passed    4.79 sec
        Start 508: selective-region-pause-no-filter-outside-start-stop-sys-run
375/473 Test #508: selective-region-pause-no-filter-outside-start-stop-sys-run .....................................................................................................................   Passed    4.81 sec
        Start 509: selective-region-pause-no-filter-outside-start-stop-sampling
376/473 Test #509: selective-region-pause-no-filter-outside-start-stop-sampling ....................................................................................................................   Passed    4.77 sec
        Start 510: selective-region-pause-no-filter-outside-push-pop-sys-run
377/473 Test #510: selective-region-pause-no-filter-outside-push-pop-sys-run .......................................................................................................................   Passed    4.82 sec
        Start 511: selective-region-pause-no-filter-outside-push-pop-sampling
378/473 Test #511: selective-region-pause-no-filter-outside-push-pop-sampling ......................................................................................................................   Passed    4.81 sec
        Start 512: selective-region-pause-filtered-inside-start-stop-sys-run
379/473 Test #512: selective-region-pause-filtered-inside-start-stop-sys-run .......................................................................................................................   Passed    4.55 sec
        Start 513: selective-region-pause-filtered-inside-start-stop-sampling
380/473 Test #513: selective-region-pause-filtered-inside-start-stop-sampling ......................................................................................................................   Passed    4.67 sec
        Start 514: selective-region-pause-filtered-inside-push-pop-sys-run
381/473 Test #514: selective-region-pause-filtered-inside-push-pop-sys-run .........................................................................................................................   Passed    4.55 sec
        Start 515: selective-region-pause-filtered-inside-push-pop-sampling
382/473 Test #515: selective-region-pause-filtered-inside-push-pop-sampling ........................................................................................................................   Passed    4.54 sec
        Start 516: selective-region-pause-filtered-before-start-stop-sys-run
383/473 Test #516: selective-region-pause-filtered-before-start-stop-sys-run .......................................................................................................................   Passed    4.53 sec
        Start 517: selective-region-pause-filtered-before-start-stop-sampling
384/473 Test #517: selective-region-pause-filtered-before-start-stop-sampling ......................................................................................................................   Passed    4.57 sec
        Start 518: selective-region-pause-filtered-before-push-pop-sys-run
385/473 Test #518: selective-region-pause-filtered-before-push-pop-sys-run .........................................................................................................................   Passed    4.53 sec
        Start 519: selective-region-pause-filtered-before-push-pop-sampling
386/473 Test #519: selective-region-pause-filtered-before-push-pop-sampling ........................................................................................................................   Passed    4.68 sec
        Start 520: selective-region-pause-filtered-outside-start-stop-sys-run
387/473 Test #520: selective-region-pause-filtered-outside-start-stop-sys-run ......................................................................................................................   Passed    4.53 sec
        Start 521: selective-region-pause-filtered-outside-start-stop-sampling
388/473 Test #521: selective-region-pause-filtered-outside-start-stop-sampling .....................................................................................................................   Passed    4.56 sec
        Start 522: selective-region-pause-filtered-outside-push-pop-sys-run
389/473 Test #522: selective-region-pause-filtered-outside-push-pop-sys-run ........................................................................................................................   Passed    4.55 sec
        Start 523: selective-region-pause-filtered-outside-push-pop-sampling
390/473 Test #523: selective-region-pause-filtered-outside-push-pop-sampling .......................................................................................................................   Passed    4.52 sec
        Start 524: selective-region-pause-no-marker-inside-start-stop-sys-run
391/473 Test #524: selective-region-pause-no-marker-inside-start-stop-sys-run ......................................................................................................................   Passed    3.37 sec
        Start 525: selective-region-pause-no-marker-inside-start-stop-sampling
392/473 Test #525: selective-region-pause-no-marker-inside-start-stop-sampling .....................................................................................................................   Passed    3.46 sec
        Start 526: selective-region-pause-no-marker-inside-push-pop-sys-run
393/473 Test #526: selective-region-pause-no-marker-inside-push-pop-sys-run ........................................................................................................................   Passed    3.35 sec
        Start 527: selective-region-pause-no-marker-inside-push-pop-sampling
394/473 Test #527: selective-region-pause-no-marker-inside-push-pop-sampling .......................................................................................................................   Passed    3.52 sec
        Start 528: selective-region-pause-no-marker-before-start-stop-sys-run
395/473 Test #528: selective-region-pause-no-marker-before-start-stop-sys-run ......................................................................................................................   Passed    3.40 sec
        Start 529: selective-region-pause-no-marker-before-start-stop-sampling
396/473 Test #529: selective-region-pause-no-marker-before-start-stop-sampling .....................................................................................................................   Passed    3.36 sec
        Start 530: selective-region-pause-no-marker-before-push-pop-sys-run
397/473 Test #530: selective-region-pause-no-marker-before-push-pop-sys-run ........................................................................................................................   Passed    3.37 sec
        Start 531: selective-region-pause-no-marker-before-push-pop-sampling
398/473 Test #531: selective-region-pause-no-marker-before-push-pop-sampling .......................................................................................................................   Passed    3.36 sec
        Start 532: selective-region-pause-no-marker-outside-start-stop-sys-run
399/473 Test #532: selective-region-pause-no-marker-outside-start-stop-sys-run .....................................................................................................................   Passed    3.35 sec
        Start 533: selective-region-pause-no-marker-outside-start-stop-sampling
400/473 Test #533: selective-region-pause-no-marker-outside-start-stop-sampling ....................................................................................................................   Passed    3.39 sec
        Start 534: selective-region-pause-no-marker-outside-push-pop-sys-run
401/473 Test #534: selective-region-pause-no-marker-outside-push-pop-sys-run .......................................................................................................................   Passed    3.49 sec
        Start 535: selective-region-pause-no-marker-outside-push-pop-sampling
402/473 Test #535: selective-region-pause-no-marker-outside-push-pop-sampling ......................................................................................................................   Passed    3.51 sec
        Start 536: selective-region-no-marker-region-1-filter-start-stop-sys-run
403/473 Test #536: selective-region-no-marker-region-1-filter-start-stop-sys-run ...................................................................................................................   Passed    4.81 sec
        Start 537: selective-region-no-marker-region-1-filter-start-stop-sampling
404/473 Test #537: selective-region-no-marker-region-1-filter-start-stop-sampling ..................................................................................................................   Passed    4.82 sec
```

## Submission Checklist

- [x] Look over the contributing guidelines at
https://github.com/ROCm/rocm-systems/blob/develop/CONTRIBUTING.md.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants