Compute on the card
Debris advection, the piece that decides where the wind carries every plank and every torn-out block, runs on the graphics card through OpenCL. It runs exactly the same way on a dedicated server as on a client, because the server is what simulates the world: with no compatible card on the other end, the work drops onto the processor and produces the same result, within the tolerance the parity test holds the two paths to.
| Attribute | Min | Max |
|---|---|---|
| gpuDeviceIndex | -1 | 63 |
| gpuWorkgroupSize | 0 | 1024 |
| advectionThreads | 0 | 64 |
| advectionBatch | 64 | 1048576 |
The kernel steps the exact same equation described on the wind field page, just on different silicon: The wind field
Choosing a device
Every OpenCL platform gets enumerated at boot, and of the cards it finds, only the ones that can do double precision stay in the running: the card follows the same equation as the processor to the same tolerance, which a single-precision card cannot hold over a Minecraft world's own coordinates. The name that reaches the log comes from AMD's own board-name extension where it exists, value 0x4038, rather than the generic architecture codename the card would otherwise give up.
Without double precision, a card does not exist for this. A card the driver lists but that lacks the cl_khr_fp64 extension is dropped before the program is even built, whichever card it is on the machine: the work falls to the processor and nothing marks the switch anywhere but that one line in the log.
When the round trip is worth it
Under count >= 64, a dispatch is not even attempted:
two uploads and a read back carry a fixed cost that a small batch of debris never earns back.
Three failures in a row write the card off for the rest of the launch rather than retrying it
every tick, and whatever it had in flight falls to the processor path, which produces the same
sequence of states as if the card had never been there at all.
The five settings
| Setting | Description | Default |
|---|---|---|
| useGpu | Master switch. False puts the whole of advection on the processor for the rest of the session. | true |
| gpuDeviceIndex | Index into the OpenCL devices found at boot. Negative leaves the choice to the mod, which reaches for the widest AMD card it can see. | -1 |
| gpuWorkgroupSize / advectionThreads | Two secondary dials most people leave alone, both living in ComputeConfig: at zero, one leaves the driver to pick the group width the card prefers, the other leaves the processor pool to size itself off the core count minus two. | 0 / 0 |
| advectionBatch | Debris handed to one dispatch. This is the number that decides whether a tick clears the sixty-four threshold set by ComputeConfig. | 4096 |