Repository navigation
Description
Could the official Windows ROCm wheels include gfx1103, or clarify whether this architecture is intentionally outside the supported GPU list?
The official wheels import successfully, detect my Radeon 780M, and load a Whisper model, but fail when executing the encoder. The shipped GPU code objects omit gfx1103. An unmodified upstream source build targeting gfx1103 works on this machine.
Environment
- Windows 11, Ryzen 7 7840H / Radeon 780M (
gfx1103). - CPython 3.14.8, regular ABI, not free-threaded.
- Official Windows ROCm wheels from the v4.8.2 and v4.8.4 release ZIPs, with ZIP sizes and SHA256 checked against the GitHub release asset metadata.
- System ROCm 7.2;
hipRuntimeGetVersion()returns70260201. - Verified loaded
amdhip64_7.dll,hipblas.dll,rocblas.dll, andhipblaslt.dllpaths under the system ROCm 7.2bindirectory; CT2 itself was loaded from an isolated extraction of the official wheel.
Minimal reproduction
Extract the matching official wheel into a directory containing ctranslate2/, then run this script with a local CTranslate2 large-v3-turbo model and that directory:
python repro.py /path/to/large-v3-turbo /path/to/extracted-wheel
import ctypes
import os
from pathlib import Path
import sys
model_dir = sys.argv[1]
wheel_dir = Path(sys.argv[2]).resolve()
sdk = Path(r"C:\Program Files\AMD\ROCm\7.2")
os.environ["ROCM_PATH"] = str(sdk)
os.environ["HIP_PATH"] = str(sdk)
os.environ["ROCBLAS_USE_HIPBLASLT"] = "1"
os.environ.pop("HSA_OVERRIDE_GFX_VERSION", None)
dll_directory = os.add_dll_directory(str(sdk / "bin"))
hip = ctypes.WinDLL(str(sdk / "bin/amdhip64_7.dll"))
hipblas = ctypes.WinDLL(str(sdk / "bin/hipblas.dll"))
sys.path.insert(0, str(wheel_dir))
import ctranslate2
import numpy as np
assert Path(ctranslate2.__file__).resolve().parent == wheel_dir / "ctranslate2"
print("CTranslate2:", ctranslate2.__version__, flush=True)
print("GPU count:", ctranslate2.get_cuda_device_count(), flush=True)
model = ctranslate2.models.Whisper(
model_dir, device="cuda", compute_type="float16", intra_threads=4
)
print("Model loaded", flush=True)
features = ctranslate2.StorageView.from_array(
np.zeros((1, 128, 3000), dtype=np.float32)
)
model.encode(features)Tested with the official v4.8.4 wheel; no faster-whisper dependency or audio file is needed for this reproduction:
CTranslate2: 4.8.4
GPU count: 1
Model loaded
RuntimeError: parallel_for failed: hipErrorInvalidImage: device kernel image is invalid
Separately, actual transcription through faster-whisper 1.2.1 fails inside WhisperModel.encode() with hipErrorInvalidDeviceFunction using system ROCm 7.2. This occurs with v4.8.2 / float16 and v4.8.4 / float16 or int8_float16. Retaining or removing HSA_OVERRIDE_GFX_VERSION=11.0.0 did not resolve the tested float16 cases.
Architecture and runtime controls
The v4.8.4 Windows ROCm build script sets:
gfx1030;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201
Inspection of the embedded hipv4-amdgcn-amd-amdhsa--gfx* identifiers in both official DLLs shows the same architectures, without gfx1103.
As a separate control, I compiled the same tiny HIP kernel with SDK 7.2 for each target. It writes the integer 42 on the GPU and copies it back to the CPU:
| Kernel target | Result on this 780M |
|---|---|
| gfx1103 | Returns 42, exit code 0 |
| gfx1100 | hipErrorInvalidImage, exit code 1 |
gfx1100 with HSA_OVERRIDE_GFX_VERSION=11.0.0 |
Same failure; device properties still report gfx1103 |
A local CT2 v4.8.2 build from unmodified upstream source, using WITH_HIP=ON and CMAKE_HIP_ARCHITECTURES=gfx1103, completes actual large-v3-turbo transcription in both float16 and int8_float16. That build uses SDK 7.1, MSVC 14.44, dynamic oneDNN and OPENMP_RUNTIME=COMP; it is not an otherwise identical build with only the architecture changed.
These observations suggest missing target coverage, rather than proving that adding one target will resolve every possible runtime/library issue. The v4.8.4 build script pins ROCm 10.0.0; I have tested system 7.2 and an existing TheRock 10.2.0a20260926 runtime, but not the exact 10.0.0 runtime.
Request and related reports
Would you consider adding gfx1103 to the Windows wheel architecture list and validating on a 780M? If intentionally unsupported, documenting the wheel's GPU architecture list would help users distinguish runtime installation problems from missing device code.
Activity
jordimas commentedon Oct 30, 2026
Hello. I have include this architecture, would be possible to test these rocm wheels are report if they work in your machine:
https://github.com/jordimas/CTranslate2/actions/runs/41108554536/job/124244621482
Thanks
dutch2005 commentedon Nov 2, 2026
Additional hardware result: the expanded-target wheel linked above works on an RX 6700 XT (
gfx1031), where both official Windows ROCm release wheels fail. Adding this here because it is the same missing-target problem as the 780M report, rather than opening a duplicate.Environment
32.0.21045.20006.3.12.13;rocm,rocm-sdk-core,rocm-sdk-libraries, androcm-sdk-device-gfx1031all10.0.0, from AMD'shttps://stable.repo.amd.com/rocm/whl-next/index.v4.8.2andv4.8.4, compared with the Windows ROCm artifact from your run 41108554536, source9a7a074fe09521795f4172ecc42e4516700b3819.amdhip64_7.dllcame from that environment's_rocm_sdk_core/bin;hipblas.dll,rocblas.dll, andlibhipblaslt.dllcame from its_rocm_sdk_libraries/bin. The machine also has an older global SDK, so these paths were explicitly verified after preloading the intended DLLs.Actual results
parallel_for failed: hipErrorInvalidImage: device kernel image is invalidThe minimal
Whisper.encode()reproduction below fails with official 4.8.4 and completes with the maintainer artifact. This does not depend on audio decoding, faster-whisper, or Torch.Actual faster-whisper
1.2.1transcription was also checked with the cachedSystran/faster-whisper-small.ensnapshotd1d751a5f8271d482d14ca55d9e2deeebbae577fand a 3.53075-second synthetic English clip:15.1.0passed all three GPU precisions and CPU int8, with the same output. The repeated-call cohort used decoded PCM to isolate CT2 from decoding.cbaeba8fabff8503d8e709fa58169d19807a89d043e4dc7cd6bafe58507e5c2a.cub_caching; switching precision did not repair the official wheels.This is a short-model/short-clip test, not long-form, batched, large-v3, diarization, packaged-app, or general hardware certification.
Architecture control
Parsing the actual
__CLANG_OFFLOAD_BUNDLE__headers, rather than scanning incidental strings, gives:gfx1030;gfx1100;gfx1101;gfx1102;gfx1150;gfx1151;gfx1200;gfx1201.gfx1031;gfx1032;gfx1035;gfx1103.A separate minimal HIP kernel compiled with the same ROCm 10 compiler and run on this RX 6700 XT gives
hipErrorInvalidImagewhen targeted atgfx1030, but returns the expected integer 42 when targeted atgfx1031. That supports missing device code as the explanation on this card. It does not establish that every ROCm 10/card/library combination works.Minimal reproduction
In an isolated CPython 3.12 environment, install
rocm[libraries,device-gfx1031]==10.0.0from AMD's index and NumPy. Install either the official or test cp312 wheel with--force-reinstall --no-deps, then runpython repro.py /path/to/local/faster-whisper-small.en:device="cuda"is CT2's API spelling for GPU execution in these HIP wheels.Artifact identity
43da4baa5feaee49f77e176277a9647f99c493173c81a0bc60f491cac97532c2.313a442358ac3d2b917d4302449ca17125a72b6eddf6fff6cd0d7ae4c2056b6f.13007973399, ZIP SHA-256 checked against GitHub's artifact metadata:430fbf0aa7c4cddcaf17e432c18f937b1f80f3c73353b89f90e528f5b8125827.15f057c53c2e4a9911504995ff783bd8db494c177701aba64dc467379bb8e452.ctranslate2.dllSHA-256:dd4092e29b5dcf4337c2f6e8d4f9aece377b19c46ff11a8d7ec1a76608b150fa.Please retain
gfx1031in the expanded architecture list for the next official Windows ROCm release. The test artifact supplies a working path for this card; the current official wheels do not.dutch2005 commentedon Nov 2, 2026
Follow-up with real application integration of the expanded-target build at
9a7a074fe09521795f4172ecc42e4516700b3819(HIP CT2 4.8.4): VoiceStudio's actual/transcribeand/v1/audio/transcriptionsendpoints now both pass on an RX 6700 XT / gfx1031 using GPU float16. Explicit CPU selection also passes after process isolation. All four responses have matching transcript hashes, and both application test processes shut down with exit 0. The short input was synthetic speech with already-cached faster-whisper small.en weights; tests were offline.One additional compatibility issue surfaced with ROCm 10.0.0 / Torch 2.13.0+rocm10.0.0 on Windows 11 x64: CT2 CPU encoding in the Torch process aborts with exit 3 and
OMP: Error #15: Initializing libiomp5md.dll, but found libomp140.x86_64.dll already initialized.DLL import tables showctranslate2.dllimports Intellibiomp5md.dllandtorch_cpu.dllimports LLVMlibomp140.x86_64.dll. The crash occurs after VAD, inside CPU encode; ONNX VAD was not established as the duplicate-runtime owner.We retained the successful GPU build and moved the affected application's faster-whisper inference into a Torch-free worker, preserving options, VAD/timestamps and GPU-memory-to-CPU fallback. Actual worker DLL inspection in both GPU and CPU modes shows only
libiomp5md.dlland no Torch libraries. NoKMP_DUPLICATE_LIB_OK, DLL renaming, architecture spoofing or global SDK/driver change is used.Implementation and qualification limits: debpalash/VoiceStudio#3712 (head
0cd11650b15e69ce183c06bb862f98463f09bd1e); focused application issue: debpalash/VoiceStudio#3770. The underlying candidate wheel/DLL hashes are unchanged from the earlier report. A future Windows HIP build with an OpenMP runtime compatible with current AMD Torch, or without the conflicting runtime, may avoid this application isolation requirement; that rebuild has not been tested here.