From b6d369367ea363eccea90b188d6c0aabeda7f1f6 Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 06:35:57 +0000 Subject: [PATCH 1/9] test: use flydsl==0.1.6.dev20260508 from devreleases for CI validation Co-Authored-By: Claude Opus 4 --- pyproject.toml | 2 +- requirements.txt | 3 ++- setup.py | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index aa3d1e0047..15edc4a054 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ requires = [ "psutil", "ninja", "pandas", - "flydsl==0.1.5" + "flydsl==0.1.6.dev20260508" ] [tool.setuptools_scm] diff --git a/requirements.txt b/requirements.txt index 1450240e84..4bd203119b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ pyyaml einops pybind11>=3.0.1 ninja -flydsl==0.1.5 +--find-links https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/ +flydsl==0.1.6.dev20260508 diff --git a/setup.py b/setup.py index e1e30526b7..439a35c753 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,8 @@ OPT_COMPILER_CONFIG = os.path.join(this_dir, "aiter", "jit", "optCompilerConfig.json") PACKAGE_NAME = "amd-aiter" -FLYDSL_VERSION = "flydsl==0.1.5" +FLYDSL_VERSION = "flydsl==0.1.6.dev20260508" +FLYDSL_FIND_LINKS = "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/" BUILD_TARGET = os.environ.get("BUILD_TARGET", "auto") PREBUILD_KERNELS = int(os.environ.get("PREBUILD_KERNELS", 0)) @@ -68,6 +69,8 @@ def is_develop_mode(): "pip", "install", FLYDSL_VERSION, + "--find-links", + FLYDSL_FIND_LINKS, ] ) From 20851dcb500a73f9ce56a3df2e5ddaaabad626ac Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 06:42:18 +0000 Subject: [PATCH 2/9] [FLYDSL]: black setup.py --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 439a35c753..05e5300a36 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,9 @@ PACKAGE_NAME = "amd-aiter" FLYDSL_VERSION = "flydsl==0.1.6.dev20260508" -FLYDSL_FIND_LINKS = "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/" +FLYDSL_FIND_LINKS = ( + "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/" +) BUILD_TARGET = os.environ.get("BUILD_TARGET", "auto") PREBUILD_KERNELS = int(os.environ.get("PREBUILD_KERNELS", 0)) From 48b9dc5bb77b959559a947474492d86d25c3433f Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 06:56:56 +0000 Subject: [PATCH 3/9] fix: use flydsl>=0.1.5 in pyproject.toml to avoid build isolation failure pyproject.toml build-system.requires cannot specify --find-links, so pip build isolation only searches PyPI where 0.1.6.dev20260508 does not exist. Use a relaxed constraint here; setup.py develop mode will install the exact devrelease version via --find-links. Co-Authored-By: Claude Opus 4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 15edc4a054..5d577d8994 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ requires = [ "psutil", "ninja", "pandas", - "flydsl==0.1.6.dev20260508" + "flydsl>=0.1.5" ] [tool.setuptools_scm] From 3f70ec1af259bf211401a652c980cc4d448e999a Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 07:07:15 +0000 Subject: [PATCH 4/9] fix: use flydsl>=0.1.5 in install_requires for same reason install_requires is also resolved from PyPI only. The exact devrelease version is installed by the develop-mode handler at the top of setup.py via --find-links. Co-Authored-By: Claude Opus 4 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 05e5300a36..0551635145 100644 --- a/setup.py +++ b/setup.py @@ -438,7 +438,7 @@ def has_ext_modules(self): "einops", "psutil", "packaging", - FLYDSL_VERSION, + "flydsl>=0.1.5", ] setup( From dc3370e947f88a66a25d10c33daad81f882e61f2 Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 07:23:41 +0000 Subject: [PATCH 5/9] fix: skip flydsl pip install when pip is unavailable in build isolation Co-Authored-By: Claude Opus 4 --- setup.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/setup.py b/setup.py index 0551635145..926b3de2a6 100644 --- a/setup.py +++ b/setup.py @@ -64,17 +64,20 @@ def is_develop_mode(): if pkg_version("flydsl") != FLYDSL_VERSION.split("==")[1]: raise ImportError("version mismatch") except Exception: - subprocess.check_call( - [ - sys.executable, - "-m", - "pip", - "install", - FLYDSL_VERSION, - "--find-links", - FLYDSL_FIND_LINKS, - ] - ) + import importlib.util + + if importlib.util.find_spec("pip") is not None: + subprocess.check_call( + [ + sys.executable, + "-m", + "pip", + "install", + FLYDSL_VERSION, + "--find-links", + FLYDSL_FIND_LINKS, + ] + ) def _is_triton_installed(): From 439d4d027b812c52e76deadbe2dd59592fbee521 Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 07:32:03 +0000 Subject: [PATCH 6/9] fix: pre-install flydsl via requirements.txt before editable install Revert the find_spec("pip") workaround. Instead, all CI workflows now run `pip install -r requirements.txt` first (which has --find-links pointing to the devreleases index) to ensure flydsl==0.1.6.dev20260508 is installed, then use `pip install --no-build-isolation -e .` to skip build isolation. Co-Authored-By: Claude Opus 4 --- .github/workflows/atom-test.yaml | 3 ++- .../flash_attention_integration.yaml | 4 ++- .github/workflows/sglang_downstream.yaml | 3 ++- setup.py | 25 ++++++++----------- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/atom-test.yaml b/.github/workflows/atom-test.yaml index a88dc3e34e..136fba3a8f 100644 --- a/.github/workflows/atom-test.yaml +++ b/.github/workflows/atom-test.yaml @@ -126,7 +126,8 @@ jobs: cd /app/aiter-test && \\ git checkout ${{ env.GITHUB_COMMIT_SHA }} && \\ git submodule sync && git submodule update --init --recursive && \\ - MAX_JOBS=64 PREBUILD_KERNELS=0 GPU_ARCHS=gfx950 pip install -e . && \\ + pip install -r requirements.txt && \\ + MAX_JOBS=64 PREBUILD_KERNELS=0 GPU_ARCHS=gfx950 pip install --no-build-isolation -e . && \\ ./.github/scripts/install_triton.sh RUN echo "=== amd-triton version ===" && pip show amd-triton || true RUN echo "=== Aiter version AFTER installation ===" && pip show amd-aiter || true diff --git a/.github/workflows/flash_attention_integration.yaml b/.github/workflows/flash_attention_integration.yaml index cac4f1f166..e8bb3a5ae0 100644 --- a/.github/workflows/flash_attention_integration.yaml +++ b/.github/workflows/flash_attention_integration.yaml @@ -154,7 +154,9 @@ jobs: # Override with PR aiter COPY . /aiter - RUN pip uninstall -y amd-aiter && pip install --no-build-isolation -e /aiter + RUN pip uninstall -y amd-aiter && \ + cd /aiter && pip install -r requirements.txt && \ + pip install --no-build-isolation -e /aiter # Verify aiter is installed from PR branch RUN pip show flash-attn && pip show amd-aiter && pip show triton && \ diff --git a/.github/workflows/sglang_downstream.yaml b/.github/workflows/sglang_downstream.yaml index d4f9576135..156ec5d857 100644 --- a/.github/workflows/sglang_downstream.yaml +++ b/.github/workflows/sglang_downstream.yaml @@ -142,7 +142,8 @@ jobs: git checkout '${GITHUB_COMMIT_SHA}' git submodule sync --recursive git submodule update --init --recursive - pip install -e . + pip install -r requirements.txt + pip install --no-build-isolation -e . # ./.github/scripts/install_triton.sh pip show amd-triton || true pip show triton || true diff --git a/setup.py b/setup.py index 926b3de2a6..0551635145 100644 --- a/setup.py +++ b/setup.py @@ -64,20 +64,17 @@ def is_develop_mode(): if pkg_version("flydsl") != FLYDSL_VERSION.split("==")[1]: raise ImportError("version mismatch") except Exception: - import importlib.util - - if importlib.util.find_spec("pip") is not None: - subprocess.check_call( - [ - sys.executable, - "-m", - "pip", - "install", - FLYDSL_VERSION, - "--find-links", - FLYDSL_FIND_LINKS, - ] - ) + subprocess.check_call( + [ + sys.executable, + "-m", + "pip", + "install", + FLYDSL_VERSION, + "--find-links", + FLYDSL_FIND_LINKS, + ] + ) def _is_triton_installed(): From bef0fcd6bdc09a912d1fc62ee79f6ac6004d991f Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 07:55:16 +0000 Subject: [PATCH 7/9] fix: make flydsl version handler non-fatal and use --force-reinstall The devrelease wheel may have broken metadata (version shows as None after install, no RECORD file). Use --force-reinstall --no-deps to bypass uninstall issues, and catch failures since requirements.txt already handles the flydsl installation in CI. Co-Authored-By: Claude Opus 4 --- setup.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/setup.py b/setup.py index 0551635145..cb45aceb35 100644 --- a/setup.py +++ b/setup.py @@ -64,17 +64,25 @@ def is_develop_mode(): if pkg_version("flydsl") != FLYDSL_VERSION.split("==")[1]: raise ImportError("version mismatch") except Exception: - subprocess.check_call( - [ - sys.executable, - "-m", - "pip", - "install", - FLYDSL_VERSION, - "--find-links", - FLYDSL_FIND_LINKS, - ] - ) + try: + subprocess.check_call( + [ + sys.executable, + "-m", + "pip", + "install", + "--force-reinstall", + "--no-deps", + FLYDSL_VERSION, + "--find-links", + FLYDSL_FIND_LINKS, + ] + ) + except Exception: + print( + f"[aiter] Warning: could not install {FLYDSL_VERSION}, " + "assuming it was pre-installed via requirements.txt" + ) def _is_triton_installed(): From 5f605e38855754b62dd2918fe0f71492408c501a Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 07:59:26 +0000 Subject: [PATCH 8/9] fix: pin exact flydsl wheel URL to avoid wrong +aac7a5e build Use direct wheel URL instead of --find-links + version specifier to ensure the exact +05f188b commit is installed, not the +aac7a5e variant. Co-Authored-By: Claude Opus 4 --- requirements.txt | 3 +-- setup.py | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index 4bd203119b..c2c48dc9e7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,5 +6,4 @@ pyyaml einops pybind11>=3.0.1 ninja ---find-links https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/ -flydsl==0.1.6.dev20260508 +flydsl @ https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/flydsl-0.1.6.dev20260508%2B05f188b-cp312-cp312-manylinux_2_27_x86_64.whl diff --git a/setup.py b/setup.py index cb45aceb35..d9b16759e3 100644 --- a/setup.py +++ b/setup.py @@ -14,9 +14,7 @@ PACKAGE_NAME = "amd-aiter" FLYDSL_VERSION = "flydsl==0.1.6.dev20260508" -FLYDSL_FIND_LINKS = ( - "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/" -) +FLYDSL_WHEEL_URL = "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/flydsl-0.1.6.dev20260508%2B05f188b-cp312-cp312-manylinux_2_27_x86_64.whl" BUILD_TARGET = os.environ.get("BUILD_TARGET", "auto") PREBUILD_KERNELS = int(os.environ.get("PREBUILD_KERNELS", 0)) @@ -73,9 +71,7 @@ def is_develop_mode(): "install", "--force-reinstall", "--no-deps", - FLYDSL_VERSION, - "--find-links", - FLYDSL_FIND_LINKS, + FLYDSL_WHEEL_URL, ] ) except Exception: From bf0b28410cfc000854b93be56e793a3f7f5f5f42 Mon Sep 17 00:00:00 2001 From: xudoyuan Date: Fri, 8 May 2026 08:14:45 +0000 Subject: [PATCH 9/9] fix: use --find-links with local version tag for multi-Python support The direct wheel URL was hardcoded to cp312 and returned 403 because wheels live at /whl/gfx942-gfx950/ not /whl/gfx942-gfx950/flydsl/. Switch back to --find-links (which resolves relative hrefs correctly) with ==0.1.6.dev20260508+05f188b to pin the exact commit while letting pip auto-select the correct cpXXX wheel for the runtime Python version. Co-Authored-By: Claude Opus 4 --- requirements.txt | 3 ++- setup.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index c2c48dc9e7..7ba108716a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ pyyaml einops pybind11>=3.0.1 ninja -flydsl @ https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/flydsl-0.1.6.dev20260508%2B05f188b-cp312-cp312-manylinux_2_27_x86_64.whl +--find-links https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/ +flydsl==0.1.6.dev20260508+05f188b diff --git a/setup.py b/setup.py index d9b16759e3..d9af1fd5e0 100644 --- a/setup.py +++ b/setup.py @@ -13,8 +13,10 @@ OPT_COMPILER_CONFIG = os.path.join(this_dir, "aiter", "jit", "optCompilerConfig.json") PACKAGE_NAME = "amd-aiter" -FLYDSL_VERSION = "flydsl==0.1.6.dev20260508" -FLYDSL_WHEEL_URL = "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/flydsl-0.1.6.dev20260508%2B05f188b-cp312-cp312-manylinux_2_27_x86_64.whl" +FLYDSL_VERSION = "flydsl==0.1.6.dev20260508+05f188b" +FLYDSL_FIND_LINKS = ( + "https://rocm.frameworks-devreleases.amd.com/whl/gfx942-gfx950/flydsl/" +) BUILD_TARGET = os.environ.get("BUILD_TARGET", "auto") PREBUILD_KERNELS = int(os.environ.get("PREBUILD_KERNELS", 0)) @@ -59,7 +61,9 @@ def is_develop_mode(): try: from importlib.metadata import version as pkg_version - if pkg_version("flydsl") != FLYDSL_VERSION.split("==")[1]: + _installed = pkg_version("flydsl") + _required_base = FLYDSL_VERSION.split("==")[1].split("+")[0] + if not _installed or not _installed.startswith(_required_base): raise ImportError("version mismatch") except Exception: try: @@ -71,7 +75,9 @@ def is_develop_mode(): "install", "--force-reinstall", "--no-deps", - FLYDSL_WHEEL_URL, + FLYDSL_VERSION, + "--find-links", + FLYDSL_FIND_LINKS, ] ) except Exception: