Skip to content

build: make DirectML/MIGraphX optional for local hipep testing [do not merge]#2

Open
zz002 wants to merge 2 commits into
feat/rocm-llm-backendfrom
build/decouple-dml-migraphx
Open

build: make DirectML/MIGraphX optional for local hipep testing [do not merge]#2
zz002 wants to merge 2 commits into
feat/rocm-llm-backendfrom
build/decouple-dml-migraphx

Conversation

@zz002

@zz002 zz002 commented Jun 16, 2026

Copy link
Copy Markdown
Owner

⚠️ Do not merge - local build/test scaffolding

Stacked on #1. Makes DirectML/MIGraphX optional so the hipep backend can be built and run on a machine without a MIGraphX SDK. Kept as a separate, non-merging PR purely for local reproduction/testing of the profile=llm path. (Review the actual feature in #1.)

Why

amdgpu-ep hard-requires both DirectML and MIGraphX: USE_AMDGPU force-enables USE_DML / USE_MIGRAPHX, migraphx-ep runs find_package(migraphx REQUIRED), and ProviderFactory unconditionally LoadDynamicLibrarys both backend DLLs. So on a box without a MIGraphX SDK the umbrella neither configures, builds, nor loads.

What

  • USE_AMDGPU forces USE_DML / USE_MIGRAPHX OFF.
  • amdgpu-ep guards the migraphx-ep / directml-ep include directories behind USE_MIGRAPHX / USE_DML and passes USE_DML / USE_MIGRAPHX compile definitions.
  • gpu_factory.cc / gpu_ep.cc guard the DirectML and MIGraphX backend loads and profile branches behind #ifdef USE_DML / USE_MIGRAPHX. The hipep backend stays unconditional.

Local repro

build.bat --config Release --use_amdgpu --onnxrt_home <ort> ^
  --cmake_generator Ninja --update --build --parallel --compile_no_warning_as_error

DirectML and MIGraphX are off; hipep is built in. Place hipep-backend.dll (the hipdnn-ep / MorphiZen plugin EP DLL) next to amdgpu-ep, then run a model with provider option profile=llm. Used together with the hipdnn-ep factory fix ROCm/MorphiZen#234 this executes on gfx1151 via hipBLASLt.

@zz002 zz002 force-pushed the feat/rocm-llm-backend branch 2 times, most recently from ff40ecc to 01e7cb3 Compare June 17, 2026 01:39
@zz002 zz002 force-pushed the build/decouple-dml-migraphx branch from 1bd9c00 to 961411a Compare June 17, 2026 01:44
@zz002 zz002 force-pushed the feat/rocm-llm-backend branch 3 times, most recently from 2f32dad to e78f4b1 Compare June 17, 2026 02:25
@zz002 zz002 force-pushed the build/decouple-dml-migraphx branch from 961411a to 25d588d Compare June 17, 2026 02:32
@zz002 zz002 changed the title build: make DirectML/MIGraphX optional for local ROCm testing [do not merge] build: make DirectML/MIGraphX optional for local hipep testing [do not merge] Jun 17, 2026
@zz002 zz002 force-pushed the build/decouple-dml-migraphx branch from 25d588d to 55d9c6d Compare June 17, 2026 06:09
CreateEpFactories can be invoked more than once (e.g. a real session plus the device-init session in OGA). The previous single-handle logic reloaded the DLL on each call (leaking the earlier handle) and unloaded it on the first ReleaseEpFactory while later factories were still live. Load on the first factory and unload only after the last is released; roll back the refcount if the load fails so a retry re-attempts it.

Co-authored-by: Cursor <cursoragent@cursor.com>

Co-authored-by: Cursor <cursoragent@cursor.com>
@zz002 zz002 force-pushed the build/decouple-dml-migraphx branch from 55d9c6d to 19dc45a Compare June 17, 2026 10:21
…aphX SDK [do not merge]

NOT FOR MERGE - local build/test scaffolding, stacked on the hipep backend PR.

USE_AMDGPU normally force-enables USE_DML and USE_MIGRAPHX, migraphx-ep runs
find_package(migraphx REQUIRED), and ProviderFactory unconditionally loads the
DirectML and MIGraphX backend DLLs - so the umbrella can't build/run on a
machine without a MIGraphX SDK. Make DML/MIGraphX opt-in so the hipep
(profile=llm) path can be reproduced and tested locally:

- USE_AMDGPU forces USE_DML / USE_MIGRAPHX OFF.
- amdgpu-ep guards the migraphx-ep / directml-ep include directories behind
  USE_MIGRAPHX / USE_DML and passes USE_DML / USE_MIGRAPHX compile defs.
- gpu_factory.cc / gpu_ep.cc guard the DirectML and MIGraphX backend loads and
  profile branches behind #ifdef USE_DML / USE_MIGRAPHX (the hipep backend stays
  unconditional).

Local repro: build with --use_amdgpu, place hipep-backend.dll next to amdgpu-ep,
then run a model with provider option profile=llm.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant