Repository navigation
fix: resolve accelerator CI build failures - #1007
Merged
Merged
Conversation
Preserve the provider-only NVCC workaround and FP16 QuickGelu arithmetic. Combine upstream CI setup with declared build dependencies, Moore device visibility, and host-compiler probes.
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.
Current head:
8804b5495ed5979b5f6890039bfd699786a8bbdb. See the head-specific CI results below.Summary
src/operator.his identical to master.gpu_ids: autoon all seven platforms. Retain device counts, idle thresholds, locks and execution budgets; Ascend/Iluvatar retain 600-second queue budgets.901566229509ac54f520210c6856bf163209f907, including the Ascend910 physical-chip/process parser fix.673ca669, retaining its stream/provider changes andTASK_QUEUE_ENABLE=0.Motivation
Accelerator CI exposed dependency, compiler initialization, generated-header, SOC discovery and NVIDIA compilation failures. Moore also required a compatible runtime image and full-FP32 reference. Shadow's older Ascend detector could not parse the host's
Ascend910label, while fixed device IDs unnecessarily constrained allocation.Master's new external-stream test exposed a separate SDK bug on
iluvatar13(tg200): in the exact CI image, pure Torch 2.4.1 SDPA produces incorrect FP32 output on default and side streams. FP16/BF16 also produce incorrect output or NaNs when query/value head widths differ. ATen math matches an independent CPU FP64 reference. The compatibility path is restricted to this backend, version and input domain; equal-width FP16/BF16 retain fused dispatch.Type of Change
feat— new feature / new operator / new platformfix— bug fixperf— performance improvement (no behavioral change)refactor— code restructuring without behavior changetest— adding or fixing tests onlydocs— documentation onlybuild/ci— build system or CI configurationchore— tooling, formatting, or other non-code changesPlatforms Affected
WITH_CPU)WITH_NVIDIA)WITH_ILUVATAR)WITH_METAX)WITH_CAMBRICON)WITH_MOORE)WITH_ASCEND)WITH_TORCH)Hygon also has an explicit automatic-device setting but is outside the active CI matrix.
Smoke Test Result
The final source was built and installed in the actual CI images on
iluvatar13,metax49andmoore97, each with one idle GPU held under the same host device locks as CI. Images wereinfiniops-ci/iluvatar:df-f3dee09e167e,infiniops-ci/metax:df-287c3ccc968a, andinfiniops-ci/moore:df-53201cdeba16. Validation used InfiniRTcd1d48258f0a6b8d9f66111d5d6cb1664205e78dand nlohmann/json v3.12.0, supplied as local archives after GitHub dependency downloads timed out.Both formerly failing stream cases pass on all three platforms. New FP32 cases compare mask types, scale, GQA and equal/unequal head widths against independent CPU FP64 softmax/matmul, without relaxing tolerances. The test reference avoids the Iluvatar SDK's unsupported fused domain and handles the pre-Torch-2.5 GQA signature. The preceding source passed the complete Iluvatar SDPA module (50 passed, 2 skipped); the final source was validated with the SDPA smoke subset and complete smoke suite above.
The first independent FP64 test exposed TF32 rounding on MetaX and a muDNN shape restriction on Moore. In pure Torch inside the MetaX CI image, disabling TF32 reduced maximum error from
5.5e-4to2.8e-7. The regression temporarily disables TF32 and restores the prior precision setting. In the Moore CI image, pure Torch rejects unequal query/value head widths; these six unsupported cases are explicitly skipped and six equal-width accelerator cases are retained. Neither finding expands the production Iluvatar workaround to other platforms.An isolated harness using the pinned CI tools passed idle selection, locked-device exclusion, device visibility and no-idle rejection for all six active platforms. Hygon's explicit
autosetting passed matrix conversion. Hardware queries were mocked with temporary locks for this harness; the Iluvatar tests above used an actual leased GPU.Local Clang Format 21.1.8 and Ruff 0.15.22 checks passed. Final-head GitHub Clang Format, Ruff and documentation checks also passed. The earlier merge source passed 103 build/configuration/code-generation regressions, including real CUDA 12.6 compilation for SM52/SM80; that result predates the final SDPA change.
Test Results on Supported Platforms
Current-head workflow links: ordinary CI and Shadow CI. All five non-NVIDIA platforms have completed successfully in both workflows; only NVIDIA remains running. Historical results are not counted as new-head passes.
Benchmark / Performance Impact
No performance claim or benchmark. The Iluvatar Torch 2.4 math path can use more memory and run slower than fused attention; it is limited to inputs that produced incorrect fused output in the validated SDK. Other backends and equal-width FP16/BF16 retain existing dispatch. Moore GEMM tolerances remain unchanged.
Notes for Reviewers
src/operator.his identical to master. Generated dispatch includes the internal operator definition before the public generated header.cancel-in-progresspolicies may replace old-head jobs on push./tmp/infiniops-pr1007-precision-l6c6yY/resultsoniluvatar13,/tmp/infiniops-pr1007-precision-4noKsw/resultsonmetax49, and/tmp/infiniops-pr1007-precision-Jxg3TJ/resultsonmoore97. Earlier merge regressions:/tmp/infiniops-pr1007-nov2-hciI25on the development host.