GPU simulation · Independent project

CUDA Mixture of Experts

A GPU-accelerated tennis Monte Carlo simulator — expert routing for the matchup, CUDA for the speed, and a CPU baseline to prove it.

Project Summary

GPU-accelerated tennis Monte Carlo simulator using CUDA C++, Mixture of Experts routing, softmax expert blending, and a CPU vs GPU benchmark that makes the parallelism speedup measurable.

Status
Independent technical project
Role
CUDA simulation + modeling + benchmark analysis
Stack
CUDA C++, cuRAND, Mixture of Experts, Monte Carlo simulation
Code
Not listed

1. Overview

CUDA Mixture of Experts is a CUDA C++ tennis match simulator that estimates win probability, average total games, and over/under probabilities with Monte Carlo simulation. The project combines matchup modeling with GPU systems work: many independent simulated matches are run in parallel, then aggregated into readable analytics outputs.

The interesting engineering is in two places — how the model decides what a matchup is (the Mixture of Experts router), and how the simulation is made fast enough to run tens of thousands of trials interactively (CUDA parallelism, measured against a CPU baseline). The sections below walk through the model, the GPU simulation, the benchmark, and a real generated test run.

2. How the MoE Model Works

The Mixture of Experts router combines specialized expert signals such as surface performance, fatigue, head-to-head history, and recent form. Rather than forcing one global score to explain every matchup, the router assigns weights to the experts and blends their outputs — with a softmax over the expert scores — into the simulation parameters that drive the tennis match model.

The payoff of the mixture is specialization: a clay-court specialist meeting a big server on a fast hard court is a different problem than two baseliners on clay, and the router can lean on whichever experts actually carry signal for that pairing instead of averaging everything into mush.

3. CUDA Monte Carlo Simulation

CUDA threads simulate independent matches in parallel. Each thread uses cuRAND for per-thread randomness, runs one stochastic tennis match trial, and contributes its result to aggregate estimates for player win probability, average total games, and over/under outcomes. Because every trial is independent, the workload maps almost perfectly onto the GPU — thousands of matches resolve at once, and the host only sees the summarized distribution.

4. CPU vs GPU Performance

The project includes a CPU baseline for comparison with the --compare-cpu option. The benchmark path is intended to make GPU acceleration measurable: it runs the same simulation math and the same workload across serial CPU execution and massively parallel CUDA execution, so the numbers reflect the hardware, not two different models. The speedup comes from CUDA parallelism — not from changing the Monte Carlo model itself.

5. Test Run: Sinner vs Alcaraz

The following values are sample benchmark results from a generated test run — an illustration of the output, not a universal performance claim. Runtime in particular depends on simulation count, hardware, and match format.

5.1 · Benchmark numbers

Best of 3

Over 30 15.94%
Under 30 84.06%
Average total games 24.11
Median total games 24.00
CUDA GPU runtime 12.10 ms
CPU runtime 1200.00 ms
Speedup 99.2x

Best of 5

Sinner win probability 57.87%
Alcaraz win probability 42.13%
Over 30 82.26%
Under 30 17.74%
Average total games 39.75
Median total games 40.00
CUDA GPU runtime 1.77 ms
CPU runtime 371.62 ms
Speedup 209.8x

Runtime depends on simulation count, hardware, match format, and benchmark settings.

5.2 · Result charts

Educational analytics and systems visualization.

6. Tech Stack

Core technologies include CUDA C++, cuRAND for GPU-side random number generation, Monte Carlo simulation, Mixture of Experts routing, softmax expert blending, and CPU/GPU benchmark tooling for performance comparison.