{"record":{"id":"c088b9303f232d90","repo":"oracle/graal","slug":"no-backend-available-for-specified-gpu-architectur","errorCode":null,"errorMessage":"No backend available for specified GPU architecture \\\"%s\\\"","messagePattern":"No backend available for specified GPU architecture \\\\\"(.+?)\\\\\"","errorType":"exception","errorClass":"GraalError","httpStatus":null,"severity":"critical","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalRuntime.java","lineNumber":189,"sourceCode":"            HotSpotBackendFactory factory = backendMap.getBackendFactory(hostArchitecture);\n            if (factory == null) {\n                throw new GraalError(\"No backend available for host architecture \\\"%s\\\"\", hostArchitecture);\n            }\n            if (replayCompilationSupport != null) {\n                factory = replayCompilationSupport.decorateBackendFactory(factory, jvmciRuntime);\n            }\n            hostBackend = registerBackend(factory.createBackend(this, compilerConfiguration, jvmciRuntime, null));\n        }\n\n        for (JVMCIBackend jvmciBackend : jvmciRuntime.getJVMCIBackends().values()) {\n            if (jvmciBackend == hostJvmciBackend) {\n                continue;\n            }\n\n            Architecture gpuArchitecture = jvmciBackend.getTarget().arch;\n            HotSpotBackendFactory factory = backendMap.getBackendFactory(gpuArchitecture);\n            if (factory == null) {\n                throw new GraalError(\"No backend available for specified GPU architecture \\\"%s\\\"\", gpuArchitecture);\n            }\n            try (InitTimer t = timer(\"create backend:\", gpuArchitecture)) {\n                registerBackend(factory.createBackend(this, compilerConfiguration, null, hostBackend));\n            }\n        }\n\n        // Complete initialization of backends\n        try (InitTimer st = timer(hostBackend.getTarget().arch.getName(), \".completeInitialization\")) {\n            hostBackend.completeInitialization(jvmciRuntime, options);\n        }\n        for (HotSpotBackend backend : backends.getValues()) {\n            if (backend != hostBackend) {\n                try (InitTimer st = timer(backend.getTarget().arch.getName(), \".completeInitialization\")) {\n                    backend.completeInitialization(jvmciRuntime, options);\n                }\n            }\n        }\n","sourceCodeStart":171,"sourceCodeEnd":207,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/HotSpotGraalRuntime.java#L171-L207","documentation":"After the host backend is created, HotSpotGraalRuntime iterates the JVMCI runtimes's non-host JVMCIBackends (e.g. GPU architectures registered by external JVMCI providers) and needs a HotSpotBackendFactory for each; a missing factory throws GraalError 'No backend available for specified GPU architecture \"arch\"' during initialization.","triggerScenarios":"A JVMCI runtime that registers a secondary (non-host) backend — typically a GPU arch via an external JVMCI/Graal-GPU provider — while the selected compiler configuration's BackendMap has no factory for that architecture; thrown inside the backend-registration loop of the HotSpotGraalRuntime constructor.","commonSituations":"Installing a GPU-accelerated JVMCI provider without the matching Graal GPU backend module; version skew between the provider and the Graal build; configurations that deliberately restrict backends while optional GPU providers are present.","solutions":["Add/enable the Graal backend module matching the registered GPU architecture, or upgrade the provider+Graal pair so they align","Remove/disable the JVMCI provider registering the GPU backend you do not intend to use","Select a compiler configuration whose BackendMap includes the GPU architecture"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"for (JVMCIBackend b : jvmciRuntime.getJVMCIBackends().values()) {\n    if (b != host && backendMap.getBackendFactory(b.getTarget().arch) == null) { /* unregister or refuse before init */ }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Match GPU provider versions to the Graal build","Remove unused GPU JVMCI providers from the module path","Test startup with the exact module graph you will deploy"],"tags":["graal-compiler","gpu","backend","jvmci","startup"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}