Skip to content

Vulkan crash on Intel iGPU with PocketTTS for longer inputs (ADL GT2, Mesa) #524

Description

@AdityaAWaghmare

Vulkan crash on Intel iGPU with PocketTTS for longer inputs

Description

PocketTTS works correctly on my Intel integrated GPU for short inputs, but crashes with a Vulkan workgroup-limit assertion when processing the following longer input.

The same input works correctly when using my NVIDIA RTX 3050 Laptop GPU.

Environment

  • OS: Ubuntu Linux

  • Backend: Vulkan

  • Model: PocketTTS (GGUF)

  • Reference voice: demo_1_man

  • GPU 0: Intel(R) Graphics (ADL GT2)

    • Mesa Intel open-source Vulkan driver

    • fp16: 1

    • bf16: 0

    • warp size: 32

    • int dot: 0

    • matrix cores: none

  • GPU 1: NVIDIA GeForce RTX 3050 Laptop GPU

Reproduction input

Timothy Donald Cook (born November 1, 1960) is an American business executive who served as the chief executive officer (CEO) of Apple Inc. from 2011 to 2026, and has been the company's executive chairman since September 2026. Cook joined the technology company in 1998 as senior vice president for worldwide operations, and later served as vice president for worldwide sales and operations and then as chief operating officer under co-founder Steve Jobs. He was appointed chief executive in 2011, when Jobs resigned due to failing health. Under Cook, Apple grew into one of the world's most valuable companies; in 2025 it was the second largest technology company by revenue in the world, at US$416 billion.[1] Cook led a succession plan that saw John Ternus succeed him as CEO.

The reference voice used was:

demo_1_man

Observed behavior

A short sentence works successfully on the Intel iGPU, and is actually faster than CPU execution.

With the longer input above:

Backend | Result -- | -- CPU | Works Intel iGPU / Vulkan | Crashes NVIDIA RTX 3050 / Vulkan | Works

The Intel Vulkan backend aborts with:

/home/runner/work/audio.cpp/audio.cpp/external/ggml/src/ggml-vulkan/ggml-vulkan.cpp:6819:
GGML_ASSERT(wg0 <= ctx->device->properties.limits.maxComputeWorkGroupCount[0] &&
            wg1 <= ctx->device->properties.limits.maxComputeWorkGroupCount[1] &&
            wg2 <= ctx->device->properties.limits.maxComputeWorkGroupCount[2]) failed

Aborted (core dumped)

Potentially relevant commit

I noticed commit 43833e8749f24466b680266e9d805b7d58386748, "Apply upstream Vulkan fill dispatch fix (#508)".

That commit changes the Vulkan GGML_OP_FILL dispatch to distribute work over two dimensions specifically to avoid exceeding maxComputeWorkGroupCount.

The error I'm seeing is also a maxComputeWorkGroupCount assertion, and the problem only appears once the workload becomes sufficiently large, so this may be related. I have not yet determined whether the operation triggering my crash is actually GGML_OP_FILL.

Version information

I also built audio.cpp from the latest repository a few days before reporting this, so my local build may predate the above fix.

The crash was also observed using the audio-v0.7.3-bin-ubuntu-x64-vulkan binary release.

Questions

Could this be another instance of the Vulkan dispatch/workgroup-limit issue addressed by #508?

In particular, it would be useful to determine:

  1. Which GGML/Vulkan operation is triggering the assertion.

  2. Whether GGML_OP_FILL is involved.

  3. Whether the Intel Vulkan implementation requires additional handling for large dispatches.

  4. Whether this is already fixed on current audio.cpp main.

I can provide additional logs or test the latest main if useful.

## Vulkan crash on Intel iGPU with PocketTTS for longer inputs

Description

PocketTTS works correctly on my Intel integrated GPU for short inputs, but crashes with a Vulkan workgroup-limit assertion when processing the following longer input.

The same input works correctly when using my NVIDIA RTX 3050 Laptop GPU.

Environment

  • OS: Ubuntu Linux

  • Backend: Vulkan

  • Model: PocketTTS (GGUF)

  • Reference voice: demo_1_man

  • GPU 0: Intel(R) Graphics (ADL GT2)

    • Mesa Intel open-source Vulkan driver
    • fp16: 1
    • bf16: 0
    • warp size: 32
    • int dot: 0
    • matrix cores: none
  • GPU 1: NVIDIA GeForce RTX 3050 Laptop GPU

Reproduction input

Timothy Donald Cook (born November 1, 1960) is an American business executive who served as the chief executive officer (CEO) of Apple Inc. from 2011 to 2026, and has been the company's executive chairman since September 2026. Cook joined the technology company in 1998 as senior vice president for worldwide operations, and later served as vice president for worldwide sales and operations and then as chief operating officer under co-founder Steve Jobs. He was appointed chief executive in 2011, when Jobs resigned due to failing health. Under Cook, Apple grew into one of the world's most valuable companies; in 2025 it was the second largest technology company by revenue in the world, at US$416 billion.[1] Cook led a succession plan that saw John Ternus succeed him as CEO.

The reference voice used was:

demo_1_man

Observed behavior

A short sentence works successfully on the Intel iGPU, and is actually faster than CPU execution.

With the longer input above:

Backend Result
CPU Works
Intel iGPU / Vulkan Crashes
NVIDIA RTX 3050 / Vulkan Works

The Intel Vulkan backend aborts with:

/home/runner/work/audio.cpp/audio.cpp/external/ggml/src/ggml-vulkan/ggml-vulkan.cpp:6819:
GGML_ASSERT(wg0 <= ctx->device->properties.limits.maxComputeWorkGroupCount[0] &&
            wg1 <= ctx->device->properties.limits.maxComputeWorkGroupCount[1] &&
            wg2 <= ctx->device->properties.limits.maxComputeWorkGroupCount[2]) failed

Aborted (core dumped)

Potentially relevant commit

I noticed commit [43833e8749f24466b680266e9d805b7d58386748](https://github.com/0xShug0/audio.cpp/commit/43833e8749f24466b680266e9d805b7d58386748), "Apply upstream Vulkan fill dispatch fix (#508)".

That commit changes the Vulkan GGML_OP_FILL dispatch to distribute work over two dimensions specifically to avoid exceeding maxComputeWorkGroupCount.

The error I'm seeing is also a maxComputeWorkGroupCount assertion, and the problem only appears once the workload becomes sufficiently large, so this may be related. I have not yet determined whether the operation triggering my crash is actually GGML_OP_FILL.

Version information

I also built audio.cpp from the latest repository a few days before reporting this, so my local build may predate the above fix.

The crash was also observed using the audio-v0.7.3-bin-ubuntu-x64-vulkan binary release.

Questions

Could this be another instance of the Vulkan dispatch/workgroup-limit issue addressed by #508?

In particular, it would be useful to determine:

  1. Which GGML/Vulkan operation is triggering the assertion.
  2. Whether GGML_OP_FILL is involved.
  3. Whether the Intel Vulkan implementation requires additional handling for large dispatches.
  4. Whether this is already fixed on current audio.cpp main.

I can provide additional logs or test the latest main if useful.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions