Ramsey : Searching for New Lower Bounds on 8× B200
Abstract
We attack the lower bound of the Ramsey number using massively parallel simulated annealing on 8 NVIDIA B200 GPUs. The current bounds are , with the lower bound established by Exoo in 1989. We search for 2-colorings of with no monochromatic — finding one would improve the lower bound for the first time in over 35 years. Each GPU runs millions of independent simulated annealing walkers, collectively evaluating billions of candidate colorings.
Background
Ramsey Numbers
The Ramsey number is the smallest integer such that every 2-coloring (red/blue) of the edges of the complete graph contains either a red or a blue .
Ramsey’s theorem (1930) guarantees these numbers exist, but computing them is extraordinarily hard. Paul Erdos famously said:
“Imagine an alien force, vastly more powerful than us, landing on Earth and demanding the value of or they will destroy our planet. In that case, we should marshal all our computers and all our mathematicians and attempt to find the value. But suppose, instead, that they ask for . In that case, we should attempt to destroy the aliens.”
Known Bounds on
| Bound | Value | Author | Year |
|---|---|---|---|
| Lower | Exoo | 1989 | |
| Upper | Angeltveit, McKay | 2024 |
The gap has been open for decades. Improving either bound would be a major result in combinatorics.
Why GPU Search?
A 2-coloring of is a binary string of length . For : bits. The search space has elements — exhaustive search is impossible.
However, local search methods (simulated annealing, tabu search) have been effective for finding Ramsey-good colorings. The key insight: the fitness landscape — counting monochromatic subgraphs — is smooth enough that local moves can navigate to global minima.
The computation is embarrassingly parallel: each walker is independent. With 8 B200 GPUs launching millions of walkers, we can explore the landscape at a scale that single-machine searches cannot match.
Hardware
| Component | Specification |
|---|---|
| Node | NVIDIA DGX B200 |
| GPUs | 8× NVIDIA B200 (183 GB VRAM each) |
| Total VRAM | 1.43 TB |
| GPU Interconnect | NVLink 5 (NV18), full mesh |
| CPUs | 2× Intel Xeon Platinum 8570 |
| System RAM | 2 TB DDR5 |
Method
Representation
A 2-coloring of is stored as bitmasks of bits each (adjacency matrix). For , each row fits in a uint64_t. Edge is “red” if bit is set in adj[i].
Fitness Function
The fitness of a coloring is the total number of monochromatic subgraphs (red + blue). A coloring is Ramsey-good if fitness = 0.
Counting in a color class uses nested bitmask intersection:
where is the neighbor set in the given color, implemented as bitwise AND on uint64_t. The __popcll intrinsic counts the final intersection size in one instruction.
Simulated Annealing
Each walker:
- Starts with a random coloring
- At each step, flips one random edge
- Accepts the flip if fitness decreases; accepts with probability if fitness increases
- Temperature follows exponential decay:
Search Strategy
- Phase 1: Validate on (should find Ramsey-good colorings easily)
- Phase 2: Attack with 1M walkers × 10M steps each = total edge flips
- Phase 3: If Phase 2 fails, extend with 10M walkers × 100M steps
Results
PENDING — experiment not yet run.
Phase 1: (validation)
| Metric | Value |
|---|---|
| Ramsey-good colorings found | PENDING |
| Best fitness | PENDING |
| Time | PENDING |
Phase 2: (attack)
| Metric | Value |
|---|---|
| Walkers | PENDING |
| Steps per walker | PENDING |
| Best fitness achieved | PENDING |
| Ramsey-good coloring found? | PENDING |
If fitness = 0 is achieved for , this proves , improving a 35-year-old bound.
Analysis
PENDING — will analyze:
- Fitness landscape: how does the minimum achievable fitness scale with walker count?
- Temperature sensitivity: which annealing schedule works best?
- Structure of near-optimal colorings: do they share graph-theoretic properties?
- If fitness > 0: how close did we get? Which subgraphs are hardest to eliminate?
Reproducibility
git clone https://github.com/cahlen/idontknow
cd idontknow
nvcc -O3 -arch=sm_100a -o ramsey_search scripts/experiments/ramsey-r55/ramsey_search.cu -lcurand
# Validate: search for R(5,5)-good coloring of K_43
./ramsey_search 43 10000 100000
# Attack: search on K_44
./ramsey_search 44 1000000 10000000
# Full run
./scripts/experiments/ramsey-r55/run.sh
Computed on NVIDIA DGX B200. Code: github.com/cahlen/idontknow.